Add user data and config drive properties

Added these missing properties and upgraded the client
library requirements to support them. This upgrade breaks
Swift compatability, but we don't need to override that
client any more anyway, so client registration for
Swift-via-pyrax is also removed.

Change-Id: I8e07092adf58da2a39330789fb170986176f47e3
Closes-Bug: 1336498
This commit is contained in:
Randall Burt
2014-09-05 13:53:22 -05:00
parent 99fccaf375
commit e685af1d0e
4 changed files with 24 additions and 3 deletions

View File

@@ -89,6 +89,8 @@ class Group(resource.Resource):
LAUNCH_CONFIG_ARGS_SERVER_NETWORKS,
LAUNCH_CONFIG_ARGS_SERVER_DISK_CONFIG,
LAUNCH_CONFIG_ARGS_SERVER_KEY_NAME,
LAUNCH_CONFIG_ARGS_SERVER_USER_DATA,
LAUNCH_CONFIG_ARGS_SERVER_CDRIVE
) = (
'name', 'flavorRef',
'imageRef',
@@ -97,6 +99,8 @@ class Group(resource.Resource):
'networks',
'diskConfig', # technically maps to OS-DCF:diskConfig
'key_name',
'user_data',
'config_drive'
)
_LAUNCH_CONFIG_ARGS_SERVER_NETWORK_KEYS = (
@@ -155,6 +159,14 @@ class Group(resource.Resource):
properties.Schema.MAP,
_('File path and contents.')
),
LAUNCH_CONFIG_ARGS_SERVER_CDRIVE: properties.Schema(
properties.Schema.BOOLEAN,
_('Enable config drive on the instance.')
),
LAUNCH_CONFIG_ARGS_SERVER_USER_DATA: properties.Schema(
properties.Schema.STRING,
_('User data for bootstrapping the instance.')
),
LAUNCH_CONFIG_ARGS_SERVER_NETWORKS: properties.Schema(
properties.Schema.LIST,
_('Networks to attach to. If unspecified, the instance '
@@ -278,6 +290,10 @@ class Group(resource.Resource):
if personality:
personality = [{'path': k, 'contents': v} for k, v in
personality.items()]
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())))
return dict(
launch_config_type=launchconf[self.LAUNCH_CONFIG_TYPE],
server_name=server_args[self.GROUP_CONFIGURATION_NAME],
@@ -286,6 +302,8 @@ class Group(resource.Resource):
disk_config=server_args.get(
self.LAUNCH_CONFIG_ARGS_SERVER_DISK_CONFIG),
metadata=server_args.get(self.GROUP_CONFIGURATION_METADATA),
config_drive=cdrive,
user_data=user_data,
personality=personality,
networks=server_args.get(self.LAUNCH_CONFIG_ARGS_SERVER_NETWORKS),
load_balancers=lbs,

View File

@@ -99,7 +99,7 @@ class FakeAutoScale(object):
"""Update the launch configuration on a scaling group."""
allowed = ['launch_config_type', 'server_name', 'image', 'flavor',
'disk_config', 'metadata', 'personality', 'networks',
'load_balancers', 'key_name']
'load_balancers', 'key_name', 'user_data', 'config_drive']
self._check_args(kwargs, allowed)
self._get_group(group_id).kwargs = kwargs
@@ -223,6 +223,8 @@ class ScalingGroupTest(common.HeatTestCase):
self.assertEqual(
{
'cooldown': 60,
'config_drive': False,
'user_data': None,
'disk_config': None,
'flavor': 'flavor-ref',
'image': 'image-ref',
@@ -287,6 +289,8 @@ Resources:
self.assertEqual(
{
'cooldown': 60,
'config_drive': False,
'user_data': None,
'disk_config': None,
'flavor': 'flavor-ref',
'image': 'image-ref',

View File

@@ -1 +1 @@
pyrax>=1.8.2
pyrax>=1.9.2

View File

@@ -36,7 +36,6 @@ heat.clients =
glance = rackspace.clients:RackspaceGlanceClient
nova = rackspace.clients:RackspaceNovaClient
trove = rackspace.clients:RackspaceTroveClient
swift = rackspace.clients:RackspaceSwiftClient
[global]
setup-hooks =