From 99e10a851374bad18c72ba6a7ed2519e5f325234 Mon Sep 17 00:00:00 2001 From: Steve McLellan Date: Tue, 10 Jun 2014 11:08:22 -0500 Subject: [PATCH] Add 'userdata_format' to Server heat template In order to pass raw userdata or heat software config resources to an instance it's necessary to tell Heat what to expect. This patch adds user_data_format defaulting to HEAT_CFNTOOLS (Heat's default) and a function allowing it to be overriden (to RAW or SOFTWARE_CONFIG). Derived classes should override user_data_format as part of prepareUserData which is now expected to return a dictionary whose keys are [data, format]. A class HeatSWConfigInstance extends Instance to add this; a HeatSWConfigLinuxInstance is provided as a convenience (heat SW + SSH access). Change-Id: I59f66d42742bf179e7fa1de3cd5de07dbf9fb42b --- .../Classes/resources/HeatSWConfigInstance.yaml | 16 ++++++++++++++++ .../resources/HeatSWConfigLinuxInstance.yaml | 11 +++++++++++ meta/io.murano/Classes/resources/Instance.yaml | 10 +++++++++- .../Classes/resources/LinuxMuranoInstance.yaml | 4 +++- .../Classes/resources/LinuxUDInstance.yaml | 4 +++- .../Classes/resources/WindowsInstance.yaml | 4 +++- meta/io.murano/manifest.yaml | 2 ++ 7 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 meta/io.murano/Classes/resources/HeatSWConfigInstance.yaml create mode 100644 meta/io.murano/Classes/resources/HeatSWConfigLinuxInstance.yaml diff --git a/meta/io.murano/Classes/resources/HeatSWConfigInstance.yaml b/meta/io.murano/Classes/resources/HeatSWConfigInstance.yaml new file mode 100644 index 00000000..e11f1973 --- /dev/null +++ b/meta/io.murano/Classes/resources/HeatSWConfigInstance.yaml @@ -0,0 +1,16 @@ +Namespaces: + =: io.murano.resources + sys: io.murano.system + std: io.murano + +Name: HeatSWConfigInstance + +Extends: + - Instance + +Methods: + prepareUserData: + Body: + - Return: + data: + format: SOFTWARE_CONFIG diff --git a/meta/io.murano/Classes/resources/HeatSWConfigLinuxInstance.yaml b/meta/io.murano/Classes/resources/HeatSWConfigLinuxInstance.yaml new file mode 100644 index 00000000..8fd0bdd6 --- /dev/null +++ b/meta/io.murano/Classes/resources/HeatSWConfigLinuxInstance.yaml @@ -0,0 +1,11 @@ +Namespaces: + =: io.murano.resources + sys: io.murano.system + std: io.murano + +Name: HeatSWConfigLinuxInstance + +Extends: + - LinuxInstance + - HeatSWConfigInstance + diff --git a/meta/io.murano/Classes/resources/Instance.yaml b/meta/io.murano/Classes/resources/Instance.yaml index 9902ecac..0be1a48f 100644 --- a/meta/io.murano/Classes/resources/Instance.yaml +++ b/meta/io.murano/Classes/resources/Instance.yaml @@ -82,7 +82,9 @@ Methods: $.joinNet($.environment.defaultNetworks.flat, $securityGroupName) - $.networks.customNetworks.select($this.joinNet($, $securityGroupName)) - - $userData: $.prepareUserData() + - $preparedUserData: $.prepareUserData() + - $userData: $preparedUserData.data + - $userDataFormat: $preparedUserData.format - $template: resources: @@ -92,6 +94,7 @@ Methods: flavor: $.flavor image: $.image user_data: $userData + user_data_format: $userDataFormat key_name: $.keyname outputs: format('{0}-assigned-ip', $.name): @@ -231,3 +234,8 @@ Methods: Contract: $.string().notNull() prepareUserData: + Body: + Return: + data: null + # Valid values are HEAT_CFNTOOLS, RAW and SOFTWARE_CONFIG + format: HEAT_CFNTOOLS diff --git a/meta/io.murano/Classes/resources/LinuxMuranoInstance.yaml b/meta/io.murano/Classes/resources/LinuxMuranoInstance.yaml index 32d387d9..cbd80e41 100644 --- a/meta/io.murano/Classes/resources/LinuxMuranoInstance.yaml +++ b/meta/io.murano/Classes/resources/LinuxMuranoInstance.yaml @@ -29,5 +29,7 @@ Methods: "%INTERNAL_HOSTNAME%": $.name "%MURANO_SERVER_ADDRESS%": coalesce(config(file_server), config(rabbitmq, host)) "%CA_ROOT_CERT_BASE64%": "" - - Return: $initScript.replace($scriptReplacements) + - Return: + data: $initScript.replace($scriptReplacements) + format: HEAT_CFNTOOLS diff --git a/meta/io.murano/Classes/resources/LinuxUDInstance.yaml b/meta/io.murano/Classes/resources/LinuxUDInstance.yaml index 53a68667..43ced7bc 100644 --- a/meta/io.murano/Classes/resources/LinuxUDInstance.yaml +++ b/meta/io.murano/Classes/resources/LinuxUDInstance.yaml @@ -16,7 +16,9 @@ Properties: Methods: prepareUserData: Body: - - Return: $.customUserData + - Return: + data: $.customUserData + format: HEAT_CFNTOOLS setCustomUserData: Arguments: diff --git a/meta/io.murano/Classes/resources/WindowsInstance.yaml b/meta/io.murano/Classes/resources/WindowsInstance.yaml index 212d79c0..1b84a34d 100644 --- a/meta/io.murano/Classes/resources/WindowsInstance.yaml +++ b/meta/io.murano/Classes/resources/WindowsInstance.yaml @@ -42,4 +42,6 @@ Methods: "%INTERNAL_HOSTNAME%": $.name "%MURANO_SERVER_ADDRESS%": coalesce(config(file_server), config(rabbitmq, host)) "%CA_ROOT_CERT_BASE64%": "" - - Return: $initScript.replace($scriptReplacements) + - Return: + data: $initScript.replace($scriptReplacements) + format: HEAT_CFNTOOLS diff --git a/meta/io.murano/manifest.yaml b/meta/io.murano/manifest.yaml index 9afa1468..65b37046 100644 --- a/meta/io.murano/manifest.yaml +++ b/meta/io.murano/manifest.yaml @@ -27,6 +27,8 @@ Classes: io.murano.resources.Instance: resources/Instance.yaml io.murano.resources.LinuxInstance: resources/LinuxInstance.yaml io.murano.resources.LinuxMuranoInstance: resources/LinuxMuranoInstance.yaml + io.murano.resources.HeatSWConfigInstance: resources/HeatSWConfigInstance.yaml + io.murano.resources.HeatSWConfigLinuxInstance: resources/HeatSWConfigLinuxInstance.yaml io.murano.resources.LinuxUDInstance: resources/LinuxUDInstance.yaml io.murano.resources.WindowsInstance: resources/WindowsInstance.yaml io.murano.resources.NeutronNetwork: resources/NeutronNetwork.yaml