I initially reported this in https://storyboard.openstack.org/#!/story/2010108 but it seems the issue is specific to Ubuntu packages so I'm reporting this bug for the packaging side as well.
This issue was found in puppet integration job in ubuntu focal + yoga.
placement 1:7.0.0-0ubuntu1~cloud0
python3 3.8.2-0ubuntu2
python3-oslo.policy 3.11.0-0ubuntu1~cloud0
List resource providers API consistently returns 500 error, and nova-compute can't start because of that API error.
Looking at placement api log, the following traceback is found.
```
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap [req-b2bf439f-9e22-4d16-8cd2-a191b0070e19 acf1133c873a4427b4ca8b3d026af72f 77a64ffe39e340b480fdb3c45adb5273 - default default] Placement API unexpected error: unsupported callable: TypeError: unsupported callable
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap Traceback (most recent call last):
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 1135, in getfullargspec
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap sig = _signature_from_callable(func,
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 2233, in _signature_from_callable
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap sig = _signature_from_callable(
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 2304, in _signature_from_callable
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return _signature_from_function(sigcls, obj,
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 2168, in _signature_from_function
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap parameters.append(Parameter(name, annotation=annotation,
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 2491, in __init__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap self._kind = _ParameterKind(kind)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/enum.py", line 339, in __call__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return cls.__new__(cls, value)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3.8/enum.py", line 635, in __new__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap if type(value) is cls:
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap RecursionError: maximum recursion depth exceeded while calling a Python object
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap The above exception was the direct cause of the following exception:
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap Traceback (most recent call last):
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/placement/fault_wrap.py", line 39, in __call__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return self.application(environ, start_response)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/webob/dec.py", line 129, in __call__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap resp = self.call_func(req, *args, **kw)
...
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/placement/handlers/allocation.py", line 299, in list_for_resource_provider
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap context.can(policies.RP_ALLOC_LIST)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/placement/context.py", line 56, in can
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return policy.authorize(self, action, target)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/placement/policy.py", line 115, in authorize
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap LOG.debug('Policy check for %(action)s failed with credentials '
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_utils/excutils.py", line 227, in __exit__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap self.force_reraise()
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_utils/excutils.py", line 200, in force_reraise
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap raise self.value
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/placement/policy.py", line 104, in authorize
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return _ENFORCER.authorize(
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/policy.py", line 1173, in authorize
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return self.enforce(
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/policy.py", line 1071, in enforce
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap result = _checks._check(
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 80, in _check
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return rule(*rule_args)
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 257, in __call__
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return _check(
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 80, in _check
2022-06-23 23:32:46.277 26465 ERROR placement.fault_wrap return rule(*rule_args)
...
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 80, in _check
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap return rule(*rule_args)
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 213, in __call__
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap if _check(rule, target, cred, enforcer, current_rule):
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 80, in _check
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap return rule(*rule_args)
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 257, in __call__
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap return _check(
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 80, in _check
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap return rule(*rule_args)
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 257, in __call__
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap return _check(
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3/dist-packages/oslo_policy/_checks.py", line 75, in _check
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap argspec = inspect.getfullargspec(rule.__call__)
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap File "/usr/lib/python3.8/inspect.py", line 1144, in getfullargspec
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap raise TypeError('unsupported callable') from ex
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap TypeError: unsupported callable
2022-06-23 23:32:46.311 26466 ERROR placement.fault_wrap
```
The same issue is observed in stable/xena job as well.
I don't know how files in ubuntu packages are generated by the strange thing is that the /etc/policy/ policy. yaml file contains the following three lines WITHOUT heading #, which looks completely invalid.
https:/ /zuul.opendev. org/t/openstack /build/ 9e1d5c6e77c848c e88a753030ffa6d 02
https:/ /145b0d5be77f0c be05ff- d67a6226f6eb6d3 4ab4efd951744a1 6f.ssl. cf5.rackcdn. com/854538/ 1/check/ puppet- openstack- integration- 6-scenario002- tempest- ubuntu- focal/9e1d5c6/ logs/etc/ placement/ policy. yaml.txt reader_ api" reader_ api" or_project_ reader"
~~~
"rule:admin_api": "rule:system_
"rule:admin_api": "rule:project_
"rule:admin_api": "rule:system_
~~~