Bug 2058518

Summary: [RHOSP 17.0] swiftclient forbids ceilometer from polling swift objects
Product: Red Hat OpenStack Reporter: Matthias Runge <mrunge>
Component: openstack-tripleo-heat-templatesAssignee: Yadnesh Kulkarni <ykulkarn>
Status: CLOSED WONTFIX QA Contact: Leonid Natapov <lnatapov>
Severity: high Docs Contact: mgeary <mgeary>
Priority: high    
Version: 17.0 (Wallaby)CC: augol, erpeters, jelynch, lmadsen, mburns, mmagr, mrunge, ykulkarn
Target Milestone: z1Keywords: Triaged, ZStream
Target Release: 17.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-tripleo-heat-templates-14.3.1-0.20221102130639.feca772.el9ost Doc Type: Known Issue
Doc Text:
There is currently a known issue when the Object Storage service (swift) client blocks a Telemetry service (ceilometer) user from fetching object details under the condition of the Telemetry service user having inadequate privileges to poll objects from the Object Storage service. Workaround: Associate the `ResellerAdmin` role with the Telemetry service user by using the command `openstack role add --user ceilometer --project service ResellerAdmin`.
Story Points: ---
Clone Of:
: 2162456 (view as bug list) Environment:
Last Closed: 2023-01-23 13:27:44 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 2126786    

Description Matthias Runge 2022-02-25 08:21:12 UTC
Description of problem:

The following polling.yaml file
---
sources:
    - name: some_pollsters
      interval: 30
      meters:
        - cpu
        - disk.*
        - ip.*
        - image.*
        - memory
        - memory.*
        - network.*
        - perf.*
        - port
        - port.*
        - switch
        - switch.*
        - storage.*
        - volume.*

generated by following the documentation 
https://access.redhat.com/documentation/en-us/red_hat_openstack_platform/16.2/html/service_telemetry_framework_1.3/assembly-completing-the-stf-configuration_assembly#creating-the-base-configuration-for-stf_assembly-completing-the-stf-configuration



causes the following errors in ceilometer/central.log

2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager [-] Continue after error from storage.objects: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403 Forbidden:
 swiftclient.exceptions.ClientException: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403 Forbidden
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager Traceback (most recent call last):
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/polling/manager.py", line 187, in poll_and_notify
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     for sample in samples:
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 113, in get_samples
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     cache, tenants):
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 80, in _iter_accounts
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     ksclient, tenants))
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 99, in _get_account_info
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     raise e
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 94, in _get_account_info
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     keystone_client.get_auth_token(ksclient)))
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/swiftclient/client.py", line 871, in head_account
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager     raise ClientException.from_response(resp, 'Account HEAD failed', body)
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager swiftclient.exceptions.ClientException: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403 Forbidden
2022-02-17 17:49:10.917 15 ERROR ceilometer.polling.manager 
2022-02-17 17:49:10.929 15 WARNING ceilometer.neutron_client [-] The resource could not be found.: neutronclient.common.exceptions.NotFound: The resource could not be found.
2022-02-17 17:49:38.403 15 WARNING ceilometer.neutron_client [-] The resource could not be found.: neutronclient.common.exceptions.NotFound: The resource could not be found.
2022-02-17 17:49:38.415 15 WARNING ceilometer.neutron_client [-] The resource could not be found.: neutronclient.common.exceptions.NotFound: The resource could not be found.
2022-02-17 17:49:38.451 15 INFO ceilometer.polling.manager [-] Polling pollster image.size in the context of some_pollsters
2022-02-17 17:49:40.092 15 INFO ceilometer.polling.manager [-] Polling pollster storage.objects.containers in the context of some_pollsters
2022-02-17 17:49:40.416 15 INFO swiftclient [-] REQ: curl -i http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 -I -H "X-Auth-Token: gAAAAABiDoqy4aVP..."
2022-02-17 17:49:40.416 15 INFO swiftclient [-] RESP STATUS: 403 Forbidden
2022-02-17 17:49:40.416 15 INFO swiftclient [-] RESP HEADERS: {'Content-Length': '12', 'X-Trans-Id': 'tx0000000000000000018dc-00620e8ab4-806ad4-default', 'X-Openstack-Request-Id': 'tx0000000000000000018dc-00620e8ab
4-806ad4-default', 'Accept-Ranges': 'bytes', 'Content-Type': 'text/plain; charset=utf-8', 'Date': 'Thu, 17 Feb 2022 17:49:40 GMT'}
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager [-] Continue after error from storage.objects.containers: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403
 Forbidden: swiftclient.exceptions.ClientException: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403 Forbidden
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager Traceback (most recent call last):
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/polling/manager.py", line 187, in poll_and_notify
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     for sample in samples:
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 149, in get_samples
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     cache, tenants):
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 80, in _iter_accounts
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     ksclient, tenants))
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 99, in _get_account_info
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     raise e
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/ceilometer/objectstore/swift.py", line 94, in _get_account_info
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     keystone_client.get_auth_token(ksclient)))
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager   File "/usr/lib/python3.6/site-packages/swiftclient/client.py", line 871, in head_account
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager     raise ClientException.from_response(resp, 'Account HEAD failed', body)
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager swiftclient.exceptions.ClientException: Account HEAD failed: http://10.239.8.138:8080/swift/v1/AUTH_bbeb4893f55840848ad7a598a0e6dcf8 403 Forbidden
2022-02-17 17:49:40.417 15 ERROR ceilometer.polling.manager 
2022-02-17 17:49:40.442 15 INFO ceilometer.polling.manager [-] Polling pollster storage.objects.size in the context of some_pollsters

Comment 1 Leif Madsen 2022-03-07 15:01:36 UTC
@mrunge any suggestions on how to adjust this? Looks like it's trying to authenticate against an API that maybe doesn't exist? Seems like the configuration is correct, but that the backend systems aren't available for polling.

Comment 3 Yadnesh Kulkarni 2022-07-27 14:00:05 UTC
Assigning 'ResellerAdmin' role to ceilometer user seems to fix this issue
~~~
$ openstack role add --user ceilometer --project service ResellerAdmin
~~~

After this ceilometer could poll swift containers of all projects
~~~
2022-07-27 13:58:41.605 15 DEBUG swiftclient [-] RESP BODY: b'[{"name": "testcont", "count": 0, "bytes": 0, "last_modified": "2022-07-26T10:04:29.069490"}]' http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:163
2022-07-27 13:58:41.618 15 DEBUG swiftclient [-] REQ: curl -i None?format=json -X GET -H "X-Auth-Token: gAAAAABi4USRGuiW..." -H "Accept-Encoding: gzip" http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:157
2022-07-27 13:58:41.618 15 DEBUG swiftclient [-] RESP STATUS: 200 OK http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:158
2022-07-27 13:58:41.618 15 DEBUG swiftclient [-] RESP HEADERS: {'content-type': 'application/json; charset=utf-8', 'x-account-container-count': '1', 'x-account-object-count': '2', 'x-account-bytes-used': '32677888', 'x-timestamp': '1658818296.07454', 'x-account-storage-policy-policy-0-container-count': '1', 'x-account-storage-policy-policy-0-object-count': '2', 'x-account-storage-policy-policy-0-bytes-used': '32677888', 'accept-ranges': 'bytes', 'content-length': '98', 'x-account-project-domain-id': 'default', 'x-trans-id': 'txec7ccf4dff924a588e2e1-0062e14491', 'x-openstack-request-id': 'txec7ccf4dff924a588e2e1-0062e14491', 'date': 'Wed, 27 Jul 2022 13:58:41 GMT'} http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:159

2022-07-27 13:58:41.618 15 DEBUG swiftclient [-] RESP BODY: b'[{"name": "glance", "count": 2, "bytes": 32677888, "last_modified": "2022-07-26T06:51:36.138870"}]' http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:163
2022-07-27 13:58:41.629 15 DEBUG swiftclient [-] REQ: curl -i None?format=json -X GET -H "X-Auth-Token: gAAAAABi4USRGuiW..." -H "Accept-Encoding: gzip" http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:157
2022-07-27 13:58:41.629 15 DEBUG swiftclient [-] RESP STATUS: 200 OK http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:158
2022-07-27 13:58:41.629 15 DEBUG swiftclient [-] RESP HEADERS: {'content-type': 'application/json; charset=utf-8', 'content-length': '2', 'x-account-container-count': '0', 'x-account-object-count': '0', 'x-account-bytes-used': '0', 'x-timestamp': '1658930321.62755', 'x-put-timestamp': '1658930321.62755', 'x-trans-id': 'txa96ed7a03940417d9ae94-0062e14491', 'x-openstack-request-id': 'txa96ed7a03940417d9ae94-0062e14491', 'date': 'Wed, 27 Jul 2022 13:58:41 GMT'} http_log /usr/lib/python3.9/site-packages/swiftclient/client.py:159
~~~

Comment 4 Yadnesh Kulkarni 2022-09-08 05:23:55 UTC
Fix merged upstream master https://review.opendev.org/c/openstack/tripleo-heat-templates/+/854033

Comment 12 Leonid Natapov 2023-01-18 12:41:13 UTC
Forbidden messages appear in OSP17.0.1
openstack-tripleo-heat-templates-14.3.1-0.20221208160327.feca772.el9ost.noarch

polling.yaml
------------

[root@controller-0 ~]# cat /var/lib/config-data/puppet-generated/ceilometer/etc/ceilometer/polling.yaml
---
sources:
    - name: some_pollsters
      interval: 30
      meters:
        - cpu
        - disk.*
        - ip.*
        - image.*
        - memory
        - memory.*
        - network.*
        - perf.*
        - port
        - port.*
        - switch
        - switch.*
        - storage.*
        - volume.*
-------------------------

2023-01-17 09:01:03.863 14 ERROR ceilometer.polling.manager 
2023-01-17 09:01:03.864 14 DEBUG ceilometer.polling.manager [-] Skip pollster network.services.lb.outgoing.bytes, no  resources found this cycle poll_and_notify /usr/lib/python3.9/site-packages/ceilometer/polling/manager.py:177
2023-01-17 09:01:03.930 14 WARNING ceilometer.neutron_client [-] The resource could not be found.: neutronclient.common.exceptions.NotFound: The resource could not be found.
2023-01-17 09:01:03.931 14 DEBUG ceilometer.polling.manager [-] Skip pollster network.services.vpn.connections, no  resources found this cycle poll_and_notify /usr/lib/python3.9/site-packages/ceilometer/polling/manager.py:177
2023-01-17 09:01:03.931 14 DEBUG ceilometer.polling.manager [-] Skip pollster switch.port.transmit.packets, no  resources found this cycle poll_and_notify /usr/lib/python3.9/site-packages/ceilometer/polling/manager.py:177
2023-01-17 09:01:03.931 14 INFO ceilometer.polling.manager [-] Polling pollster storage.objects in the context of some_pollsters
2023-01-17 09:01:03.984 14 INFO swiftclient [-] REQ: curl -i None -I -H "X-Auth-Token: gAAAAABjxmPOS9uQ..."
2023-01-17 09:01:03.984 14 INFO swiftclient [-] RESP STATUS: 403 Forbidden
2023-01-17 09:01:03.985 14 INFO swiftclient [-] RESP HEADERS: {'content-length': '12', 'x-trans-id': 'tx000009c427ba0b07d8b5d-0063c663cf-5ef6-default', 'x-openstack-request-id': 'tx000009c427ba0b07d8b5d-0063c663cf-5ef6-default', 'accept-ranges':
 'bytes', 'content-type': 'text/plain; charset=utf-8', 'date': 'Tue, 17 Jan 2023 09:01:03 GMT'}
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager [-] Continue after error from storage.objects: Account HEAD failed: http://172.17.3.95:8080/swift/v1/AUTH_435189f702f5412994c086c6567eee86 403 Forbidden (txn: tx000009c427ba0b07d8b5d-00
63c663cf-5ef6-default): swiftclient.exceptions.ClientException: Account HEAD failed: http://172.17.3.95:8080/swift/v1/AUTH_435189f702f5412994c086c6567eee86 403 Forbidden (txn: tx000009c427ba0b07d8b5d-0063c663cf-5ef6-default)
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager Traceback (most recent call last):
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/ceilometer/polling/manager.py", line 194, in poll_and_notify
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     for sample in samples:
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/ceilometer/objectstore/swift.py", line 114, in get_samples
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     for tenant, account in self._iter_accounts(manager.keystone,
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/ceilometer/objectstore/swift.py", line 77, in _iter_accounts
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     cache[self.CACHE_KEY_METHOD] = list(self._get_account_info(
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/ceilometer/objectstore/swift.py", line 101, in _get_account_info
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     raise e
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/ceilometer/objectstore/swift.py", line 93, in _get_account_info
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     yield (t.id, swift_api_method(
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager   File "/usr/lib/python3.9/site-packages/swiftclient/client.py", line 924, in head_account
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager     raise ClientException.from_response(resp, 'Account HEAD failed', body)
2023-01-17 09:01:03.985 14 ERROR ceilometer.polling.manager swiftclient.exceptions.ClientException: Account HEAD failed: http://172.17.3.95:8080/swift/v1/AUTH_435189f702f5412994c086c6567eee86 403 Forbidden (txn: tx000009c427ba0b07d8b5d-0063c663c
f-5ef6-default)