Make build_userdata user_data_format aware
Over time different user_data_format values could assemble different combinations of cloud-init parts. As the default will remain user_data_format='HEAT_CFNTOOLS', identical content will be generated for the Instance resource. The Server resource now passes user_data_format, and no longer has a get_mime_string method since build_userdata is only ever called once so cached get_mime_string results is not needed. Change-Id: I7cfbcffeea24c9b1f013463f9a5fa53b8c699cfe
This commit is contained in:
parent
3110364647
commit
0c5b970ea4
|
@ -126,7 +126,8 @@ def get_keypair(nova_client, key_name):
|
|||
raise exception.UserKeyPairMissing(key_name=key_name)
|
||||
|
||||
|
||||
def build_userdata(resource, userdata=None, instance_user=None):
|
||||
def build_userdata(resource, userdata=None, instance_user=None,
|
||||
user_data_format='HEAT_CFNTOOLS'):
|
||||
'''
|
||||
Build multipart data blob for CloudInit which includes user-supplied
|
||||
Metadata, user data, and the required Heat in-instance configuration.
|
||||
|
@ -137,9 +138,14 @@ def build_userdata(resource, userdata=None, instance_user=None):
|
|||
:type userdata: str or None
|
||||
:param instance_user: the user to create on the server
|
||||
:type instance_user: string
|
||||
:param user_data_format: Format of user data to return
|
||||
:type user_data_format: string
|
||||
:returns: multipart mime as a string
|
||||
'''
|
||||
|
||||
if user_data_format == 'RAW':
|
||||
return userdata
|
||||
|
||||
def make_subpart(content, filename, subtype=None):
|
||||
if subtype is None:
|
||||
subtype = os.path.splitext(filename)[0]
|
||||
|
|
|
@ -201,13 +201,6 @@ class Server(resource.Resource):
|
|||
|
||||
def __init__(self, name, json_snippet, stack):
|
||||
super(Server, self).__init__(name, json_snippet, stack)
|
||||
self.mime_string = None
|
||||
|
||||
def get_mime_string(self, userdata):
|
||||
if not self.mime_string:
|
||||
self.mime_string = nova_utils.build_userdata(
|
||||
self, userdata, instance_user=self.properties['admin_user'])
|
||||
return self.mime_string
|
||||
|
||||
def physical_resource_name(self):
|
||||
name = self.properties.get('name')
|
||||
|
@ -220,11 +213,11 @@ class Server(resource.Resource):
|
|||
security_groups = self.properties.get('security_groups', [])
|
||||
|
||||
user_data_format = self.properties.get('user_data_format')
|
||||
if user_data_format == 'HEAT_CFNTOOLS':
|
||||
userdata = self.get_mime_string(
|
||||
self.properties.get('user_data', ''))
|
||||
else:
|
||||
userdata = self.properties.get('user_data', '')
|
||||
userdata = nova_utils.build_userdata(
|
||||
self,
|
||||
self.properties.get('user_data', ''),
|
||||
instance_user=self.properties['admin_user'],
|
||||
user_data_format=user_data_format)
|
||||
|
||||
flavor = self.properties['flavor']
|
||||
availability_zone = self.properties['availability_zone']
|
||||
|
|
Loading…
Reference in New Issue