summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/rackspace/rackspace/resources/auto_scale.py20
-rw-r--r--contrib/rackspace/rackspace/tests/test_auto_scale.py33
-rw-r--r--contrib/rackspace/rackspace/tests/test_rackspace_cloud_server.py8
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)