Drop @when_data_ready()

Move the functionlity provided by the decorator into the even handlers
that neeeded it, this favors simplicity, the long term solution will be
to define and use custom events (on.connected, on.ready and
on.goneaway).

Change-Id: I0264dc9cef3c90f5dc99b0dfc9b1d3a97007d64e
This commit is contained in:
Felipe Reyes 2022-09-21 18:42:45 -03:00
parent afeb2eb826
commit 0dd5f3807f

View File

@ -55,22 +55,6 @@ class CharmConfigError(KeystoneOpenIDCError):
self.msg = msg self.msg = msg
def when_data_ready(func):
"""Defer the event if the data is not ready."""
def _wrapper(self, event):
try:
if not self.is_data_ready():
logger.debug('relation data is not ready yet (%s)', event)
return
except CharmConfigError as ex:
self.unit.status = BlockedStatus(ex.msg)
return
return func(self, event)
return _wrapper
class KeystoneOpenIDCOptions(ConfigurationAdapter): class KeystoneOpenIDCOptions(ConfigurationAdapter):
def __init__(self, charm_instance): def __init__(self, charm_instance):
@ -81,6 +65,8 @@ class KeystoneOpenIDCOptions(ConfigurationAdapter):
relation = self.charm_instance.model.get_relation( relation = self.charm_instance.model.get_relation(
'keystone-fid-service-provider') 'keystone-fid-service-provider')
if relation and len(relation.units) > 0: if relation and len(relation.units) > 0:
logger.debug('related units via keystone-fid-service-provider: %s',
relation.units)
return relation.data[list(relation.units)[0]] return relation.data[list(relation.units)[0]]
else: else:
logger.debug('There are no related units via ' logger.debug('There are no related units via '
@ -94,6 +80,7 @@ class KeystoneOpenIDCOptions(ConfigurationAdapter):
try: try:
return json.loads(data['hostname']) return json.loads(data['hostname'])
except (TypeError, KeyError): except (TypeError, KeyError):
logger.debug('keystone hostname no available yet')
return None return None
@property @property
@ -259,7 +246,11 @@ class KeystoneOpenIDCCharm(ops_openstack.core.OSBaseCharm):
def _on_keystone_fid_service_provider_relation_changed(self, event): def _on_keystone_fid_service_provider_relation_changed(self, event):
if not self.is_data_ready(): if not self.is_data_ready():
logger.debug('relation data is not ready yet (%s)', event) logger.debug('relation data is not ready yet (%s)', event)
# force the update of the workload message to bubble up the
# internal state of the charm
self.update_status()
return return
self.update_principal_data() self.update_principal_data()
self.update_config_if_needed() self.update_config_if_needed()
@ -290,6 +281,9 @@ class KeystoneOpenIDCCharm(ops_openstack.core.OSBaseCharm):
def _on_config_changed(self, event): def _on_config_changed(self, event):
if not self.is_data_ready(): if not self.is_data_ready():
logger.debug('relation data is not ready yet (%s)', event) logger.debug('relation data is not ready yet (%s)', event)
# force the update of the workload message to bubble up the
# internal state of the charm
self.update_status()
return return
self._stored.is_started = True self._stored.is_started = True