Support endpoint updates in bootstrap
The current bootstrap command does not update the endpoints, but does update many other settings. It's very convenient to have a way to update endpoints from the bootstrap command. One such use case is when bootstrap is run from a configuration management tool such as ansible, and the endpoint URLs need to be updated. Change-Id: I2b1cb53701c3e5fb2d91c14d9c792beadd1dbbc2
This commit is contained in:
parent
b357a96ac0
commit
a3a66b9b8f
@ -317,9 +317,10 @@ class Bootstrapper(object):
|
|||||||
LOG.info('Created %(interface)s endpoint %(url)s',
|
LOG.info('Created %(interface)s endpoint %(url)s',
|
||||||
{'interface': interface, 'url': url})
|
{'interface': interface, 'url': url})
|
||||||
else:
|
else:
|
||||||
# NOTE(jamielennox): electing not to update existing
|
endpoint_ref['url'] = url
|
||||||
# endpoints here. There may be call to do so in future.
|
PROVIDERS.catalog_api.update_endpoint(
|
||||||
LOG.info('Skipping %s endpoint as already created',
|
endpoint_id=endpoint_ref['id'],
|
||||||
interface)
|
endpoint_ref=endpoint_ref)
|
||||||
|
LOG.info('%s endpoint updated', interface)
|
||||||
|
|
||||||
self.endpoints[interface] = endpoint_ref['id']
|
self.endpoints[interface] = endpoint_ref['id']
|
||||||
|
@ -404,6 +404,21 @@ class CliBootStrapTestCaseWithEnvironment(CliBootStrapTestCase):
|
|||||||
|
|
||||||
self._do_test_bootstrap(self.bootstrap)
|
self._do_test_bootstrap(self.bootstrap)
|
||||||
|
|
||||||
|
def test_endpoints_created_with_new_endpoints(self):
|
||||||
|
service = unit.new_service_ref(name=self.service_name, type='identity')
|
||||||
|
PROVIDERS.catalog_api.create_service(service['id'], service)
|
||||||
|
region = unit.new_region_ref(id=self.region_id)
|
||||||
|
PROVIDERS.catalog_api.create_region(region)
|
||||||
|
endpoint = unit.new_endpoint_ref(interface='public',
|
||||||
|
service_id=service['id'],
|
||||||
|
url=uuid.uuid4().hex,
|
||||||
|
region_id=self.region_id)
|
||||||
|
PROVIDERS.catalog_api.create_endpoint(endpoint['id'], endpoint)
|
||||||
|
|
||||||
|
self._do_test_bootstrap(self.bootstrap)
|
||||||
|
updated_endpoint = PROVIDERS.catalog_api.get_endpoint(endpoint['id'])
|
||||||
|
self.assertEqual(updated_endpoint['url'], self.bootstrap.public_url)
|
||||||
|
|
||||||
|
|
||||||
class CliDomainConfigAllTestCase(unit.SQLDriverOverrides, unit.TestCase):
|
class CliDomainConfigAllTestCase(unit.SQLDriverOverrides, unit.TestCase):
|
||||||
|
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The ``keystone-manage bootstrap`` command can now be used to update
|
||||||
|
existing endpoints idempotently, which is useful in conjunction with
|
||||||
|
configuration management tools that use this command for both
|
||||||
|
initialization and lifecycle management of keystone.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
The ``keystone-manage bootstrap`` command will now update existing
|
||||||
|
endpoints rather than skipping them if they already exist but are different
|
||||||
|
from the values provided to the command. This is useful in conjunction with
|
||||||
|
configuration management tools that use this command for both
|
||||||
|
initialization and lifecycle management of keystone.
|
Loading…
Reference in New Issue
Block a user