diff --git a/charms/nova-k8s/metadata.yaml b/charms/nova-k8s/metadata.yaml index cb46ee81..05bf8f7c 100644 --- a/charms/nova-k8s/metadata.yaml +++ b/charms/nova-k8s/metadata.yaml @@ -50,10 +50,10 @@ resources: requires: ingress-internal: interface: ingress + optional: true limit: 1 ingress-public: interface: ingress - optional: true limit: 1 database: interface: mysql_client diff --git a/charms/nova-k8s/src/charm.py b/charms/nova-k8s/src/charm.py index 91915ffc..189a2d1e 100755 --- a/charms/nova-k8s/src/charm.py +++ b/charms/nova-k8s/src/charm.py @@ -111,6 +111,7 @@ class CloudComputeRequiresHandler(sunbeam_rhandlers.RelationHandler): relation_name: str, region: str, callback_f: Callable, + mandatory: bool = False, ): """Creates a new CloudComputeRequiresHandler that handles initial events from the relation and invokes the provided callbacks based on @@ -124,9 +125,11 @@ class CloudComputeRequiresHandler(sunbeam_rhandlers.RelationHandler): :type region: str :param callback_f: the function to call when the nodes are connected :type callback_f: Callable + :param mandatory: flag to determine if relation handler is mandatory + :type mandatory: bool """ self.region = region - super().__init__(charm, relation_name, callback_f) + super().__init__(charm, relation_name, callback_f, mandatory) def setup_event_handler(self): """Configure event handlers for the cloud-compute service relation.""" @@ -164,6 +167,14 @@ class NovaOperatorCharm(sunbeam_charm.OSBaseOperatorAPICharm): wsgi_admin_script = '/usr/bin/nova-api-wsgi' wsgi_public_script = '/usr/bin/nova-api-wsgi' shared_metadata_secret_key = 'shared-metadata-secret' + mandatory_relations = { + 'database', + 'api-database', + 'cell-database', + 'amqp', + 'identity-service', + 'ingress-public', + } @property def db_sync_cmds(self) -> List[List[str]]: