diff --git a/hooks/nova_compute_context.py b/hooks/nova_compute_context.py index 1ba53427..7e535e35 100644 --- a/hooks/nova_compute_context.py +++ b/hooks/nova_compute_context.py @@ -273,6 +273,14 @@ class CloudComputeContext(context.OSContextGenerator): self.network_manager) return ctxt + def restart_trigger(self): + rt = None + for rid in relation_ids('cloud-compute'): + for unit in related_units(rid): + rt = relation_get('restart_trigger', rid=rid, unit=unit) + if rt: + return rt + def __call__(self): rids = relation_ids('cloud-compute') if not rids: @@ -289,6 +297,9 @@ class CloudComputeContext(context.OSContextGenerator): if vol_service: ctxt['volume_service'] = vol_service + if self.restart_trigger(): + ctxt['restart_trigger'] = self.restart_trigger() + return ctxt diff --git a/revision b/revision index b0d73241..fd03ab2a 100644 --- a/revision +++ b/revision @@ -1 +1 @@ -129 +130 diff --git a/templates/essex/nova.conf b/templates/essex/nova.conf index 89be9c7e..61fef0c8 100644 --- a/templates/essex/nova.conf +++ b/templates/essex/nova.conf @@ -1,6 +1,9 @@ ############################################################################### # [ WARNING ] # Configuration file maintained by Juju. Local changes may be overwritten. +{% if restart_trigger -%} +# restart trigger: {{ restart_trigger }} +{% endif -%} ############################################################################### --dhcpbridge_flagfile=/etc/nova/nova.conf --dhcpbridge=/usr/bin/nova-dhcpbridge diff --git a/templates/folsom/nova.conf b/templates/folsom/nova.conf index 6bc35db2..466491e9 100644 --- a/templates/folsom/nova.conf +++ b/templates/folsom/nova.conf @@ -2,6 +2,9 @@ ############################################################################### # [ WARNING ] # Configuration file maintained by Juju. Local changes may be overwritten. +{% if restart_trigger -%} +# restart trigger: {{ restart_trigger }} +{% endif -%} ############################################################################### [DEFAULT] dhcpbridge_flagfile=/etc/nova/nova.conf diff --git a/templates/grizzly/nova.conf b/templates/grizzly/nova.conf index bcbe080d..54e0b5a3 100644 --- a/templates/grizzly/nova.conf +++ b/templates/grizzly/nova.conf @@ -2,6 +2,9 @@ ############################################################################### # [ WARNING ] # Configuration file maintained by Juju. Local changes may be overwritten. +{% if restart_trigger -%} +# restart trigger: {{ restart_trigger }} +{% endif -%} ############################################################################### [DEFAULT] dhcpbridge_flagfile=/etc/nova/nova.conf diff --git a/templates/havana/nova.conf b/templates/havana/nova.conf index 371ce745..a92d16ba 100644 --- a/templates/havana/nova.conf +++ b/templates/havana/nova.conf @@ -2,6 +2,9 @@ ############################################################################### # [ WARNING ] # Configuration file maintained by Juju. Local changes may be overwritten. +{% if restart_trigger -%} +# restart trigger: {{ restart_trigger }} +{% endif -%} ############################################################################### [DEFAULT] dhcpbridge_flagfile=/etc/nova/nova.conf diff --git a/unit_tests/test_nova_compute_contexts.py b/unit_tests/test_nova_compute_contexts.py index 37fa3021..8827d011 100644 --- a/unit_tests/test_nova_compute_contexts.py +++ b/unit_tests/test_nova_compute_contexts.py @@ -66,6 +66,20 @@ class NovaComputeContextTests(CharmTestCase): cloud_compute = context.CloudComputeContext() self.assertEquals({}, cloud_compute()) + @patch.object(context, '_network_manager') + def test_cloud_compute_context_restart_trigger(self, nm): + nm.return_value = None + cloud_compute = context.CloudComputeContext() + with patch.object(cloud_compute, 'restart_trigger') as rt: + rt.return_value = 'footrigger' + ctxt = cloud_compute() + self.assertEquals(ctxt.get('restart_trigger'), 'footrigger') + + with patch.object(cloud_compute, 'restart_trigger') as rt: + rt.return_value = None + ctxt = cloud_compute() + self.assertEquals(ctxt.get('restart_trigger'), None) + @patch.object(context, '_network_manager') def test_cloud_compute_volume_context_cinder(self, netman): netman.return_value = None