diff options
Diffstat (limited to 'contrib')
3 files changed, 45 insertions, 16 deletions
diff --git a/contrib/rackspace/rackspace/resources/auto_scale.py b/contrib/rackspace/rackspace/resources/auto_scale.py index 498eeec38..3230f01be 100644 --- a/contrib/rackspace/rackspace/resources/auto_scale.py +++ b/contrib/rackspace/rackspace/resources/auto_scale.py @@ -121,6 +121,7 @@ class Group(resource.Resource): _('List of load balancers to hook the ' 'server up to. If not specified, no ' 'load balancing will be configured.'), + default=[], schema=properties.Schema( properties.Schema.MAP, schema={ @@ -292,15 +293,14 @@ class Group(resource.Resource): server_args = lcargs[self.LAUNCH_CONFIG_ARGS_SERVER] lb_args = lcargs.get(self.LAUNCH_CONFIG_ARGS_LOAD_BALANCERS) lbs = copy.deepcopy(lb_args) - if lbs: - for lb in lbs: - # if the port is not specified, the lbid must be that of a - # RackConnectV3 lb pool. - if not lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_PORT]: - del lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_PORT] - continue - lbid = int(lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_ID]) - lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_ID] = lbid + for lb in lbs: + # if the port is not specified, the lbid must be that of a + # RackConnectV3 lb pool. + if not lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_PORT]: + del lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_PORT] + continue + lbid = int(lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_ID]) + lb[self.LAUNCH_CONFIG_ARGS_LOAD_BALANCER_ID] = lbid personality = server_args.get( self.LAUNCH_CONFIG_ARGS_SERVER_PERSONALITY) if personality: @@ -309,7 +309,7 @@ class Group(resource.Resource): user_data = server_args.get(self.LAUNCH_CONFIG_ARGS_SERVER_USER_DATA) cdrive = (server_args.get(self.LAUNCH_CONFIG_ARGS_SERVER_CDRIVE) or bool(user_data is not None and len(user_data.strip()))) - image_id = self.client_plugin('glance').get_image_id( + image_id = self.client_plugin('glance').find_image_by_name_or_id( server_args[self.LAUNCH_CONFIG_ARGS_SERVER_IMAGE_REF]) flavor_id = self.client_plugin('nova').find_flavor_by_name_or_id( server_args[self.LAUNCH_CONFIG_ARGS_SERVER_FLAVOR_REF]) diff --git a/contrib/rackspace/rackspace/tests/test_auto_scale.py b/contrib/rackspace/rackspace/tests/test_auto_scale.py index 06a9dde24..bd8343c7b 100644 --- a/contrib/rackspace/rackspace/tests/test_auto_scale.py +++ b/contrib/rackspace/rackspace/tests/test_auto_scale.py @@ -215,7 +215,8 @@ class ScalingGroupTest(common.HeatTestCase): self.patchobject(auto_scale.Group, 'auto_scale', return_value=self.fake_auto_scale) # mock nova and glance client methods to satisfy contraints - mock_im = self.patchobject(glance.GlanceClientPlugin, 'get_image_id') + mock_im = self.patchobject(glance.GlanceClientPlugin, + 'find_image_by_name_or_id') mock_im.return_value = 'image-ref' mock_fl = self.patchobject(nova.NovaClientPlugin, 'find_flavor_by_name_or_id') @@ -313,7 +314,7 @@ Resources: 'flavor': 'flavor-ref', 'image': 'image-ref', 'launch_config_type': 'launch_server', - 'load_balancers': None, + 'load_balancers': [], 'key_name': "my-key", 'max_entities': 25, 'group_metadata': {'group': 'metadata'}, @@ -757,3 +758,31 @@ class AutoScaleGroupValidationTests(common.HeatTestCase): mock.Mock(id='pool_exists'), ] self.assertIsNone(asg.validate()) + + def test_validate_no_lb_specified(self, mock_client, mock_plugin): + asg_properties = { + "groupConfiguration": { + "name": "My Group", + "cooldown": 60, + "minEntities": 1, + "maxEntities": 25, + "metadata": { + "group": "metadata", + }, + }, + "launchConfiguration": { + "type": "launch_server", + "args": { + "server": { + "name": "sdfsdf", + "flavorRef": "ffdgdf", + "imageRef": "image-ref", + }, + }, + }, + } + rsrcdef = rsrc_defn.ResourceDefinition( + "test", auto_scale.Group, properties=asg_properties) + asg = auto_scale.Group("test", rsrcdef, self.mockstack) + + self.assertIsNone(asg.validate()) diff --git a/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py b/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py index 6bdfe4fdd..54a013683 100644 --- a/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py +++ b/contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py @@ -76,15 +76,15 @@ class CloudServersTest(common.HeatTestCase): resource._register_class("OS::Nova::Server", cloud_server.CloudServer) - def _mock_get_image_id_success(self, imageId): + def _mock_find_image_by_name_or_id_success(self, imageId): self.mock_get_image = mock.Mock() self.ctx.clients.client_plugin( - 'glance').get_image_id = self.mock_get_image + 'glance').find_image_by_name_or_id = self.mock_get_image self.mock_get_image.return_value = imageId def _stub_server_validate(self, server, imageId_input, image_id): # stub glance image validate - self._mock_get_image_id_success(image_id) + self._mock_find_image_by_name_or_id_success(image_id) def _setup_test_stack(self, stack_name): t = template_format.parse(wp_template) @@ -472,7 +472,7 @@ class CloudServersTest(common.HeatTestCase): mock_servers_create = mock.Mock(return_value=return_server) self.fc.servers.create = mock_servers_create image_id = mock.ANY - self._mock_get_image_id_success(image_id) + self._mock_find_image_by_name_or_id_success(image_id) self.m.StubOutWithMock(self.fc.servers, 'get') self.fc.servers.get(return_server.id).MultipleTimes( ).AndReturn(return_server) |