Refactor get_compute_config()

Essentially, remove a set_relation() call as the data bag that
get_compute_config() returns is used in an identical style
set_relation() call.  This removes the output side-effect from
get_compute_config(), making it a little easier to reason about.

Change-Id: Ia6cd2976f7b8577d86e68c27707e8efe13843ef8
This commit is contained in:
Alex Kavanagh 2019-06-25 12:41:35 +01:00
parent 7d10e5d942
commit ee97d576f8
1 changed files with 15 additions and 5 deletions

View File

@ -577,9 +577,18 @@ def console_settings():
return rel_settings
def get_compute_config(rid=None, remote_restart=False):
cons_settings = console_settings()
hookenv.relation_set(relation_id=rid, **cons_settings)
def get_compute_config(remote_restart=False):
"""Get the compute config as a dictionary to set on the relation.
This gets the console settings (from console_settings()) the serial console
settings and some additional items that are in the form suitable for a
relation_set.
:param remote_restart: whether a restart should be notified
:type remote_restart: bool
:returns: dictionary settings for the relation
:rtype: Dict[str, ANY]
"""
rel_settings = {
'network_manager': ch_neutron.network_manager(),
'volume_service': 'cinder',
@ -588,6 +597,7 @@ def get_compute_config(rid=None, remote_restart=False):
'ec2_host': hookenv.unit_get('private-address'),
'region': hookenv.config('region'),
}
rel_settings.update(console_settings())
rel_settings.update(ncc_utils.serial_console_settings())
# update relation setting if we're attempting to restart remote
# services
@ -608,7 +618,7 @@ def update_nova_relation(remote_restart=False):
@hooks.hook('cloud-compute-relation-joined')
def compute_joined(rid=None, remote_restart=False):
rel_settings = get_compute_config(rid=rid, remote_restart=remote_restart)
rel_settings = get_compute_config(remote_restart=remote_restart)
rel_settings.update(keystone_compute_settings())
hookenv.relation_set(relation_id=rid, **rel_settings)
@ -1019,7 +1029,7 @@ def shared_db_cell_joined(relation_id=None):
@hooks.hook('nova-cell-api-relation-joined')
def nova_cell_api_relation_joined(rid=None, remote_restart=False):
rel_settings = get_compute_config(rid=rid, remote_restart=remote_restart)
rel_settings = get_compute_config(remote_restart=remote_restart)
if ch_neutron.network_manager() == 'neutron':
rel_settings.update(neutron_settings())
hookenv.relation_set(relation_id=rid, **rel_settings)