Add ability to pass hardware metadata
Related-Prod: PRODX-00000
Change-Id: I4c377558ffe13e28f8ac5ced45262ff67556f46c
diff --git a/de/heat-templates/fragments/SrvInstancesBM.yaml b/de/heat-templates/fragments/SrvInstancesBM.yaml
index 46f8e68..cf247db 100644
--- a/de/heat-templates/fragments/SrvInstancesBM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBM.yaml
@@ -46,6 +46,10 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ default: ''
+ type: string
resources:
@@ -70,6 +74,27 @@
$private_floating_interface_ip: { get_attr: [private_floating_server_port, fixed_ips, 0, ip_address] }
$functions_override: { get_param: functions_override }
+ inject_files:
+ type: "OS::Heat::CloudConfig"
+ properties:
+ cloud_config:
+ write_files:
+ - path: /usr/sbin/prepare-metadata.py
+ owner: "root:root"
+ permissions: "0755"
+ content: {get_file: ../scripts/prepare-metadata.py}
+ - path: /usr/share/metadata/lab-metadata.yaml
+ owner: "root:root"
+ permissions: "0644"
+ content: { get_param: hardware_metadata}
+
+ install_config_agent:
+ type: "OS::Heat::MultipartMime"
+ properties:
+ parts:
+ - config: {get_resource: software_config}
+ - config: {get_resource: inject_files}
+
server:
type: OS::Nova::Server
properties:
@@ -81,8 +106,8 @@
- network: { get_param: accessible_network }
# NOTE(ohryhorov): connect to accessible network only as ironic doesn't
# support multitenancy use-case. Use private_floating_network for IPAM only.
- user_data_format: RAW
- user_data: { get_resource: software_config }
+ user_data_format: SOFTWARE_CONFIG
+ user_data: { get_resource: install_config_agent}
metadata: { get_param: metadata }
private_floating_server_port:
@@ -112,3 +137,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [server, networks, { get_param: accessible_network}, 0]}
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}
diff --git a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
index 95a8b97..3bd4369 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCeph.yaml
@@ -54,6 +54,9 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ type: string
resources:
@@ -81,6 +84,27 @@
$storage_frontend_network_interface_ip: { get_attr: [storage_frontend_server_port, fixed_ips, 0, ip_address] }
$storage_frontend_network_cidr: { get_param: storage_frontend_network_cidr }
+ inject_files:
+ type: "OS::Heat::CloudConfig"
+ properties:
+ cloud_config:
+ write_files:
+ - path: /usr/sbin/prepare-metadata.py
+ owner: "root:root"
+ permissions: "0755"
+ content: {get_file: ../scripts/prepare-metadata.py}
+ - path: /usr/share/metadata/lab-metadata.yaml
+ owner: "root:root"
+ permissions: "0644"
+ content: { get_param: hardware_metadata}
+
+ install_config_agent:
+ type: "OS::Heat::MultipartMime"
+ properties:
+ parts:
+ - config: {get_resource: software_config}
+ - config: {get_resource: inject_files}
+
server:
type: OS::Nova::Server
properties:
@@ -92,8 +116,8 @@
- network: { get_param: accessible_network }
# NOTE(ohryhorov): connect to accessible network only as ironic doesn't
# support multitenancy use-case. Use private_floating_network for IPAM only.
- user_data_format: RAW
- user_data: { get_resource: software_config }
+ user_data_format: SOFTWARE_CONFIG
+ user_data: { get_resource: install_config_agent}
metadata: { get_param: metadata }
private_floating_server_port:
@@ -131,3 +155,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [server, networks, { get_param: accessible_network}, 0]}
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}
diff --git a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
index 0991319..92fa9c5 100644
--- a/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesBMCephOSD.yaml
@@ -62,6 +62,9 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ type: string
resources:
@@ -92,6 +95,27 @@
$storage_backend_network_interface_ip: { get_attr: [storage_backend_server_port, fixed_ips, 0, ip_address] }
$storage_backend_network_cidr: { get_param: storage_backend_network_cidr }
+ inject_files:
+ type: "OS::Heat::CloudConfig"
+ properties:
+ cloud_config:
+ write_files:
+ - path: /usr/sbin/prepare-metadata.py
+ owner: "root:root"
+ permissions: "0755"
+ content: {get_file: ../scripts/prepare-metadata.py}
+ - path: /usr/share/metadata/lab-metadata.yaml
+ owner: "root:root"
+ permissions: "0644"
+ content: { get_param: hardware_metadata}
+
+ install_config_agent:
+ type: "OS::Heat::MultipartMime"
+ properties:
+ parts:
+ - config: {get_resource: software_config}
+ - config: {get_resource: inject_files}
+
server:
type: OS::Nova::Server
properties:
@@ -103,8 +127,8 @@
- network: { get_param: accessible_network }
# NOTE(ohryhorov): connect to accessible network only as ironic doesn't
# support multitenancy use-case. Use private_floating_network for IPAM only.
- user_data_format: RAW
- user_data: { get_resource: software_config }
+ user_data_format: SOFTWARE_CONFIG
+ user_data: { get_resource: install_config_agent}
metadata: { get_param: metadata }
private_floating_server_port:
@@ -150,3 +174,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [server, networks, { get_param: accessible_network}, 0]}
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}
diff --git a/de/heat-templates/fragments/SrvInstancesVM.yaml b/de/heat-templates/fragments/SrvInstancesVM.yaml
index 5b1a681..fbedc71 100644
--- a/de/heat-templates/fragments/SrvInstancesVM.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVM.yaml
@@ -45,6 +45,10 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ default: ''
+ type: string
resources:
@@ -69,6 +73,27 @@
$private_floating_network_cidr: { get_param: private_floating_network_cidr }
$functions_override: { get_param: functions_override }
+ inject_files:
+ type: "OS::Heat::CloudConfig"
+ properties:
+ cloud_config:
+ write_files:
+ - path: /usr/sbin/prepare-metadata.py
+ owner: "root:root"
+ permissions: "0755"
+ content: {get_file: ../scripts/prepare-metadata.py}
+ - path: /usr/share/metadata/lab-metadata.yaml
+ owner: "root:root"
+ permissions: "0644"
+ content: { get_param: hardware_metadata}
+
+ install_config_agent:
+ type: "OS::Heat::MultipartMime"
+ properties:
+ parts:
+ - config: {get_resource: software_config}
+ - config: {get_resource: inject_files}
+
server:
type: OS::Nova::Server
properties:
@@ -79,8 +104,8 @@
networks:
- port: { get_resource: accessible_server_port }
- port: { get_resource: private_floating_server_port }
- user_data_format: RAW
- user_data: { get_resource: software_config }
+ user_data_format: SOFTWARE_CONFIG
+ user_data: { get_resource: install_config_agent}
metadata: { get_param: metadata }
accessible_server_port:
@@ -123,3 +148,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [ server_floating_ip, floating_ip_address ] }
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}
diff --git a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
index 68f937b..7d4b249 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCeph.yaml
@@ -53,6 +53,9 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ type: string
resources:
@@ -143,3 +146,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [ server_floating_ip, floating_ip_address ] }
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}
diff --git a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
index 0522672..cc6b89c 100644
--- a/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
+++ b/de/heat-templates/fragments/SrvInstancesVMCephOSD.yaml
@@ -61,6 +61,9 @@
type: string
docker_ee_url:
type: string
+ hardware_metadata:
+ description: The content of lab metadata.
+ type: string
resources:
@@ -163,3 +166,6 @@
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [ server_floating_ip, floating_ip_address ] }
+ wc_data:
+ description: Metadata from instance
+ value: { get_attr: [wait_condition, data]}