:_mod-docs-content-type: PROCEDURE [id="updating-the-object-storage-endpoints_{context}"] = Create or update the {object_storage} endpoints [role="_abstract"] You must create or update the {object_storage_first_ref} endpoints to configure the new virtual IP address (VIP) that you reserved on the same network that you used to deploy RGW ingress. .Procedure . List the current swift endpoints and service: + ---- $ oc rsh openstackclient openstack endpoint list | grep 'swift.*object' $ oc rsh openstackclient openstack service list | grep 'swift.*object' ---- . If the service and endpoints do not exist, create the missing swift resources: + ---- $ oc rsh openstackclient openstack service create --name swift --description 'OpenStack Object Storage' object-store $ oc rsh openstackclient openstack role add --user swift --project service member $ oc rsh openstackclient openstack role add --user swift --project service admin $ for i in public internal; do oc rsh openstackclient endpoint create --region regionOne object-store $i http://:8080/swift/v1/AUTH_%\(tenant_id\)s done $ oc rsh openstackclient openstack role add --project admin --user admin swiftoperator ---- + * Replace `` with the Ceph RGW ingress VIP. . If the endpoints exist, update the endpoints to point to the right RGW ingress VIP: + ---- $ oc rsh openstackclient openstack endpoint set --url http://:8080/swift/v1/AUTH_%\(tenant_id\)s $ oc rsh openstackclient openstack endpoint set --url http://:8080/swift/v1/AUTH_%\(tenant_id\)s $ oc rsh openstackclient openstack endpoint list | grep object | 0d682ad71b564cf386f974f90f80de0d | regionOne | swift | object-store | True | public | http://172.18.0.100:8080/swift/v1/AUTH_%(tenant_id)s | | b311349c305346f39d005feefe464fb1 | regionOne | swift | object-store | True | internal | http://172.18.0.100:8080/swift/v1/AUTH_%(tenant_id)s | ---- + * Replace `` with the UUID of the swift public endpoint. * Replace `` with the UUID of the swift internal endpoint. . Test the migrated service: + ---- $ oc rsh openstackclient openstack container list --debug ... ... ... REQ: curl -g -i -X GET http://keystone-public-openstack.apps.ocp.openstack.lab -H "Accept: application/json" -H "User-Agent: openstacksdk/1.0.2 keystoneauth1/5.1.3 python-requests/2.25.1 CPython/3.9.23" Starting new HTTP connection (1): keystone-public-openstack.apps.ocp.openstack.lab:80 http://keystone-public-openstack.apps.ocp.openstack.lab:80 "GET / HTTP/1.1" 300 298 RESP: [300] content-length: 298 content-type: application/json date: Mon, 14 Jul 2025 17:41:29 GMT location: http://keystone-public-openstack.apps.ocp.openstack.lab/v3/ server: Apache set-cookie: b5697f82cf3c19ece8be533395142512=d5c6a9ee2 267c4b63e9f656ad7565270; path=/; HttpOnly vary: X-Auth-Token x-openstack-request-id: req-452e42c5-e60f-440f-a6e8-fe1b9ea89055 RESP BODY: {"versions": {"values": [{"id": "v3.14", "status": "stable", "updated": "2020-04-07T00:00:00Z", "links": [{"rel": "self", "href": "http://keystone-public-openstack.apps.ocp.openstack.lab/v3/"}], "media-types": [{"base": "applic ation/json", "type": "application/vnd.openstack.identity-v3+json"}]}]}} GET call to http://keystone-public-openstack.apps.ocp.openstack.lab/ used request id req-452e42c5-e60f-440f-a6e8-fe1b9ea89055 ... REQ: curl -g -i -X GET "http://172.18.0.100:8080/swift/v1/AUTH_44477474b0dc4b5b8911ceec23a22246?format=json" -H "User-Agent: openstacksdk/1.0.2 keystoneauth1/5.1.3 python-requests/2.25.1 CPython/3.9.23" -H "X-Auth-Token: {SHA256}ec5deca0be37bd8bfe659f132b9cdf396b8f409db5dc16972d50cbf3f28474d4" Starting new HTTP connection (1): 172.18.0.100:8080 http://172.18.0.100:8080 "GET /swift/v1/AUTH_44477474b0dc4b5b8911ceec23a22246?format=json HTTP/1.1" 200 2 RESP: [200] accept-ranges: bytes content-length: 2 content-type: application/json; charset=utf-8 date: Mon, 14 Jul 2025 17:41:31 GMT x-account-bytes-used: 0 x-account-bytes-used-actual: 0 x-account-container-count: 0 x-account-object-count: 0 x-account-storage-policy-default-placement-bytes-used: 0 x-account-storage-policy-default-placement-bytes-used-actual: 0 x-account-storage-policy-default-placement-container-count: 0 x-account-storage-policy-default-placement-object-count: 0 x-openstack-request-id: tx000001e95361131ccf694-006875414a-7753-default x-timestamp: 1752514891.25991 x-trans-id: tx000001e95361131ccf694-006875414a-7753-default RESP BODY: [] GET call to http://172.18.0.100:8080/swift/v1/AUTH_44477474b0dc4b5b8911ceec23a22246?format=json used request id tx000001e95361131ccf694-006875414a-7753-default clean_up ListContainer: END return value: 0 ---- ifeval::["{build}" != "downstream"] . Run tempest tests against {object_storage}: + ---- $ tempest run --regex tempest.api.object_storage ... ... ... ====== Totals ====== Ran: 141 tests in 606.5579 sec. - Passed: 128 - Skipped: 13 - Expected Fail: 0 - Unexpected Success: 0 - Failed: 0 Sum of execute time for each test: 657.5183 sec. ============== Worker Balance ============== - Worker 0 (1 tests) => 0:10:03.400561 - Worker 1 (2 tests) => 0:00:24.531916 - Worker 2 (4 tests) => 0:00:10.249889 - Worker 3 (30 tests) => 0:00:32.730095 - Worker 4 (51 tests) => 0:00:26.246044 - Worker 5 (6 tests) => 0:00:20.114803 - Worker 6 (20 tests) => 0:00:16.290323 - Worker 7 (27 tests) => 0:00:17.103827 ---- endif::[]