From e33075dd85c442f5eef9d343984982adc9242ab9 Mon Sep 17 00:00:00 2001 From: Rabi Mishra Date: Thu, 21 May 2015 21:12:40 +0530 Subject: [PATCH] Fetch endpoint from service catalog Fetch endpoint from service catalog for building signal url if not specified in config. Change-Id: If8a2d3f37d87c26228e709c20f61969b397f2da0 --- heat/common/config.py | 1 - heat/engine/resources/signal_responder.py | 10 ++++++++-- .../autoscaling/test_heat_scaling_group.py | 17 ----------------- .../autoscaling/test_heat_scaling_policy.py | 14 ++++++-------- heat/tests/autoscaling/test_launch_config.py | 3 --- heat/tests/autoscaling/test_scaling_group.py | 14 -------------- heat/tests/autoscaling/test_scaling_policy.py | 5 ----- heat/tests/aws/test_loadbalancer.py | 2 -- heat/tests/aws/test_waitcondition.py | 14 +++++--------- heat/tests/test_ceilometer_alarm.py | 5 ----- heat/tests/test_metadata_refresh.py | 3 --- heat/tests/test_signal.py | 13 +++++++++---- install.sh | 1 - 13 files changed, 28 insertions(+), 74 deletions(-) diff --git a/heat/common/config.py b/heat/common/config.py index 179c55794c..a5dc3539a3 100644 --- a/heat/common/config.py +++ b/heat/common/config.py @@ -45,7 +45,6 @@ service_opts = [ default="", help=_('URL of the Heat metadata server.')), cfg.StrOpt('heat_waitcondition_server_url', - default="", help=_('URL of the Heat waitcondition server.')), cfg.StrOpt('heat_watch_server_url', default="", diff --git a/heat/engine/resources/signal_responder.py b/heat/engine/resources/signal_responder.py index ac1100cf3e..f90dc651d9 100644 --- a/heat/engine/resources/signal_responder.py +++ b/heat/engine/resources/signal_responder.py @@ -68,8 +68,14 @@ class SignalResponder(stack_user.StackUser): 'no stored access/secret key')) return - waitcond_url = cfg.CONF.heat_waitcondition_server_url - signal_url = waitcond_url.replace('/waitcondition', signal_type) + config_url = cfg.CONF.heat_waitcondition_server_url + if config_url: + signal_url = config_url.replace('/waitcondition', signal_type) + else: + heat_client_plugin = self.stack.clients.client_plugin('heat') + endpoint = heat_client_plugin.get_heat_url() + signal_url = ''.join([endpoint, signal_type]) + host_url = urlparse.urlparse(signal_url) path = self.identifier().arn_url_path() diff --git a/heat/tests/autoscaling/test_heat_scaling_group.py b/heat/tests/autoscaling/test_heat_scaling_group.py index 488c7dbf20..2f770829c0 100644 --- a/heat/tests/autoscaling/test_heat_scaling_group.py +++ b/heat/tests/autoscaling/test_heat_scaling_group.py @@ -13,7 +13,6 @@ import json import mock -from oslo_config import cfg import six from heat.common import exception @@ -33,8 +32,6 @@ class TestAutoScalingGroupValidation(common.HeatTestCase): super(TestAutoScalingGroupValidation, self).setUp() resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') self.parsed = template_format.parse(inline_templates.as_heat_template) def test_invalid_min_size(self): @@ -93,8 +90,6 @@ class TestInitialGroupSize(common.HeatTestCase): def setUp(self): super(TestInitialGroupSize, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def test_initial_size(self): t = template_format.parse(inline_templates.as_heat_template) @@ -112,8 +107,6 @@ class TestInitialGroupSize(common.HeatTestCase): class TestGroupAdjust(common.HeatTestCase): def setUp(self): super(TestGroupAdjust, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) @@ -285,8 +278,6 @@ class TestGroupCrud(common.HeatTestCase): super(TestGroupCrud, self).setUp() resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') self.stub_ImageConstraint_validate() self.stub_FlavorConstraint_validate() self.stub_SnapshotConstraint_validate() @@ -364,8 +355,6 @@ class TestGroupCrud(common.HeatTestCase): class HeatScalingGroupAttrTest(common.HeatTestCase): def setUp(self): super(HeatScalingGroupAttrTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) @@ -467,8 +456,6 @@ class RollingUpdatePolicyTest(common.HeatTestCase): self.stub_keystoneclient(username='test_stack.CfnLBUser') resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://127.0.0.1:8000/v1/waitcondition') def test_parse_without_update_policy(self): tmpl = template_format.parse(inline_templates.as_heat_template) @@ -531,8 +518,6 @@ class RollingUpdatePolicyDiffTest(common.HeatTestCase): self.stub_keystoneclient(username='test_stack.CfnLBUser') resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://127.0.0.1:8000/v1/waitcondition') def validate_update_policy_diff(self, current, updated): # load current stack @@ -602,8 +587,6 @@ class IncorrectUpdatePolicyTest(common.HeatTestCase): self.stub_keystoneclient(username='test_stack.CfnLBUser') resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://127.0.0.1:8000/v1/waitcondition') def test_with_update_policy_aws(self): t = template_format.parse(inline_templates.as_heat_template) diff --git a/heat/tests/autoscaling/test_heat_scaling_policy.py b/heat/tests/autoscaling/test_heat_scaling_policy.py index e81329cef2..3d28837916 100644 --- a/heat/tests/autoscaling/test_heat_scaling_policy.py +++ b/heat/tests/autoscaling/test_heat_scaling_policy.py @@ -14,7 +14,6 @@ import datetime import mock -from oslo_config import cfg from oslo_utils import timeutils import six @@ -37,8 +36,6 @@ class TestAutoScalingPolicy(common.HeatTestCase): super(TestAutoScalingPolicy, self).setUp() resource._register_class('ResourceWithPropsAndAttrs', generic_resource.ResourceWithPropsAndAttrs) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_scaling_policy(self, t, stack, resource_name): rsrc = stack[resource_name] @@ -130,8 +127,6 @@ class TestAutoScalingPolicy(common.HeatTestCase): class TestCooldownMixin(common.HeatTestCase): def setUp(self): super(TestCooldownMixin, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_scaling_policy(self, t, stack, resource_name): rsrc = stack[resource_name] @@ -207,8 +202,6 @@ class TestCooldownMixin(common.HeatTestCase): class ScalingPolicyAttrTest(common.HeatTestCase): def setUp(self): super(ScalingPolicyAttrTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') t = template_format.parse(as_template) self.stack = utils.parse_stack(t, params=as_params) self.stack_name = self.stack.name @@ -219,8 +212,12 @@ class ScalingPolicyAttrTest(common.HeatTestCase): self.policy.state) def test_alarm_attribute(self): + self.m.StubOutWithMock(self.stack.clients.client_plugin('heat'), + 'get_heat_url') + self.stack.clients.client_plugin('heat').get_heat_url().AndReturn( + 'http://server.test:8000/v1') + self.m.ReplayAll() alarm_url = self.policy.FnGetAtt('alarm_url') - base = alarm_url.split('?')[0].split('%3A') self.assertEqual('http://server.test:8000/v1/signal/arn', base[0]) self.assertEqual('openstack', base[1]) @@ -239,3 +236,4 @@ class ScalingPolicyAttrTest(common.HeatTestCase): self.assertEqual('AWSAccessKeyId', args[2].split('=')[0]) self.assertEqual('SignatureVersion', args[3].split('=')[0]) self.assertEqual('Signature', args[4].split('=')[0]) + self.m.VerifyAll() diff --git a/heat/tests/autoscaling/test_launch_config.py b/heat/tests/autoscaling/test_launch_config.py index be298eb09f..05425918ac 100644 --- a/heat/tests/autoscaling/test_launch_config.py +++ b/heat/tests/autoscaling/test_launch_config.py @@ -12,7 +12,6 @@ # under the License. import mock -from oslo_config import cfg import six from heat.common import exception @@ -28,8 +27,6 @@ from heat.tests import utils class LaunchConfigurationTest(common.HeatTestCase): def setUp(self): super(LaunchConfigurationTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def validate_launch_config(self, t, stack, resource_name): # create the launch configuration resource diff --git a/heat/tests/autoscaling/test_scaling_group.py b/heat/tests/autoscaling/test_scaling_group.py index 37d8784a1d..ea9d33ee8e 100644 --- a/heat/tests/autoscaling/test_scaling_group.py +++ b/heat/tests/autoscaling/test_scaling_group.py @@ -14,7 +14,6 @@ import json import mock -from oslo_config import cfg import six from heat.common import exception @@ -36,8 +35,6 @@ as_template = inline_templates.as_template class TestAutoScalingGroupValidation(common.HeatTestCase): def setUp(self): super(TestAutoScalingGroupValidation, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def validate_scaling_group(self, t, stack, resource_name): # create the launch configuration resource @@ -276,8 +273,6 @@ class TestInitialGroupSize(common.HeatTestCase): def setUp(self): super(TestInitialGroupSize, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def test_initial_size(self): t = template_format.parse(as_template) @@ -295,8 +290,6 @@ class TestInitialGroupSize(common.HeatTestCase): class TestGroupAdjust(common.HeatTestCase): def setUp(self): super(TestGroupAdjust, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') t = template_format.parse(as_template) self.stack = utils.parse_stack(t, params=inline_templates.as_params) @@ -464,9 +457,6 @@ class TestGroupAdjust(common.HeatTestCase): class TestGroupCrud(common.HeatTestCase): def setUp(self): super(TestGroupCrud, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') - t = template_format.parse(as_template) self.stack = utils.parse_stack(t, params=inline_templates.as_params) self.group = self.stack['WebServerGroup'] @@ -587,8 +577,6 @@ class RollingUpdatePolicyTest(common.HeatTestCase): self.stub_ImageConstraint_validate() self.stub_FlavorConstraint_validate() self.stub_SnapshotConstraint_validate() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://127.0.0.1:8000/v1/waitcondition') def test_parse_without_update_policy(self): tmpl = template_format.parse(inline_templates.as_template) @@ -654,8 +642,6 @@ class RollingUpdatePolicyDiffTest(common.HeatTestCase): super(RollingUpdatePolicyDiffTest, self).setUp() self.fc = fakes_nova.FakeClient() self.stub_keystoneclient(username='test_stack.CfnLBUser') - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://127.0.0.1:8000/v1/waitcondition') def validate_update_policy_diff(self, current, updated): # load current stack diff --git a/heat/tests/autoscaling/test_scaling_policy.py b/heat/tests/autoscaling/test_scaling_policy.py index 6074053910..f1aa2a38da 100644 --- a/heat/tests/autoscaling/test_scaling_policy.py +++ b/heat/tests/autoscaling/test_scaling_policy.py @@ -14,7 +14,6 @@ import datetime import mock -from oslo_config import cfg from oslo_utils import timeutils import six @@ -34,8 +33,6 @@ as_params = inline_templates.as_params class TestAutoScalingPolicy(common.HeatTestCase): def setUp(self): super(TestAutoScalingPolicy, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_scaling_policy(self, t, stack, resource_name): rsrc = stack[resource_name] @@ -130,8 +127,6 @@ class TestAutoScalingPolicy(common.HeatTestCase): class TestCooldownMixin(common.HeatTestCase): def setUp(self): super(TestCooldownMixin, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_scaling_policy(self, t, stack, resource_name): rsrc = stack[resource_name] diff --git a/heat/tests/aws/test_loadbalancer.py b/heat/tests/aws/test_loadbalancer.py index a36fcd5f78..43165f1fd8 100644 --- a/heat/tests/aws/test_loadbalancer.py +++ b/heat/tests/aws/test_loadbalancer.py @@ -74,8 +74,6 @@ class LoadBalancerTest(common.HeatTestCase): def setUp(self): super(LoadBalancerTest, self).setUp() self.fc = fakes_nova.FakeClient() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def test_loadbalancer(self): t = template_format.parse(lb_template) diff --git a/heat/tests/aws/test_waitcondition.py b/heat/tests/aws/test_waitcondition.py index 66c4142bef..56a75b8494 100644 --- a/heat/tests/aws/test_waitcondition.py +++ b/heat/tests/aws/test_waitcondition.py @@ -16,7 +16,6 @@ import datetime import json import uuid -from oslo_config import cfg from oslo_utils import timeutils import six @@ -79,8 +78,6 @@ class WaitConditionTest(common.HeatTestCase): def setUp(self): super(WaitConditionTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_stack(self, stack_id=None, template=test_template_waitcondition, params=None, @@ -351,8 +348,6 @@ class WaitConditionTest(common.HeatTestCase): class WaitConditionHandleTest(common.HeatTestCase): def setUp(self): super(WaitConditionHandleTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_stack(self, stack_name=None, stack_id=None): temp = template_format.parse(test_template_waitcondition) @@ -378,10 +373,8 @@ class WaitConditionHandleTest(common.HeatTestCase): stack.id, '', 'WaitHandle') self.m.StubOutWithMock(aws_wch.WaitConditionHandle, 'identifier') aws_wch.WaitConditionHandle.identifier().MultipleTimes().AndReturn(id) - self.m.ReplayAll() stack.create() - return stack def test_handle(self): @@ -391,6 +384,11 @@ class WaitConditionHandleTest(common.HeatTestCase): self.stack = self.create_stack(stack_id=stack_id, stack_name=stack_name) + self.m.StubOutWithMock(self.stack.clients.client_plugin('heat'), + 'get_heat_url') + self.stack.clients.client_plugin('heat').get_heat_url().AndReturn( + 'http://server.test:8000/v1') + self.m.ReplayAll() rsrc = self.stack['WaitHandle'] # clear the url rsrc.data_set('ec2_signed_url', None, False) @@ -521,8 +519,6 @@ class WaitConditionHandleTest(common.HeatTestCase): class WaitConditionUpdateTest(common.HeatTestCase): def setUp(self): super(WaitConditionUpdateTest, self).setUp() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_stack(self, temp=None): if temp is None: diff --git a/heat/tests/test_ceilometer_alarm.py b/heat/tests/test_ceilometer_alarm.py index cf0f91154f..abe241af0a 100644 --- a/heat/tests/test_ceilometer_alarm.py +++ b/heat/tests/test_ceilometer_alarm.py @@ -17,7 +17,6 @@ import json from ceilometerclient import exc as ceilometerclient_exc import mock import mox -from oslo_config import cfg import six from heat.common import exception @@ -118,10 +117,6 @@ class CeilometerAlarmTest(common.HeatTestCase): resource._register_class('SignalResourceType', generic_resource.SignalResource) - - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') - self.fa = mock.Mock() def create_stack(self, template=None): diff --git a/heat/tests/test_metadata_refresh.py b/heat/tests/test_metadata_refresh.py index 00f154edef..ee898f8686 100644 --- a/heat/tests/test_metadata_refresh.py +++ b/heat/tests/test_metadata_refresh.py @@ -13,7 +13,6 @@ import mox -from oslo_config import cfg from heat.common import identifier from heat.common import template_format @@ -213,8 +212,6 @@ class WaitCondMetadataUpdateTest(common.HeatTestCase): super(WaitCondMetadataUpdateTest, self).setUp() self.man = service.EngineService('a-host', 'a-topic') self.man.create_periodic_tasks() - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') def create_stack(self, stack_name='test_stack'): temp = template_format.parse(test_template_waitcondition) diff --git a/heat/tests/test_signal.py b/heat/tests/test_signal.py index 468daefc83..d811eafa93 100644 --- a/heat/tests/test_signal.py +++ b/heat/tests/test_signal.py @@ -15,7 +15,6 @@ import datetime import six from keystoneclient import exceptions as kc_exceptions -from oslo_config import cfg from heat.common import exception from heat.common import template_format @@ -54,9 +53,6 @@ class SignalTest(common.HeatTestCase): resource._register_class('GenericResourceType', generic_resource.GenericResource) - cfg.CONF.set_default('heat_waitcondition_server_url', - 'http://server.test:8000/v1/waitcondition') - self.stack_id = 'STACKABCD1234' def tearDown(self): @@ -146,6 +142,11 @@ class SignalTest(common.HeatTestCase): def test_FnGetAtt_Alarm_Url(self): self.stack = self.create_stack() + self.m.StubOutWithMock(self.stack.clients.client_plugin('heat'), + 'get_heat_url') + + self.stack.clients.client_plugin('heat').get_heat_url().AndReturn( + 'http://server.test:8000/v1') self.m.ReplayAll() self.stack.create() @@ -186,7 +187,11 @@ class SignalTest(common.HeatTestCase): def test_FnGetAtt_delete(self): self.stack = self.create_stack() + self.m.StubOutWithMock(self.stack.clients.client_plugin('heat'), + 'get_heat_url') + self.stack.clients.client_plugin('heat').get_heat_url().AndReturn( + 'http://server.test:8000/v1') self.m.ReplayAll() self.stack.create() diff --git a/install.sh b/install.sh index 657ecdf767..10e90f1de9 100755 --- a/install.sh +++ b/install.sh @@ -77,7 +77,6 @@ basic_configuration() { BRIDGE_IP=127.0.0.1 iniset $target DEFAULT heat_metadata_server_url "http://${BRIDGE_IP}:8000/" - iniset $target DEFAULT heat_waitcondition_server_url "http://${BRIDGE_IP}:8000/v1/waitcondition/" iniset $target DEFAULT heat_watch_server_url "http://${BRIDGE_IP}:8003/" if detect_rabbit