Split out Nova software config
authorDan Prince <dprince@redhat.com>
Wed, 15 Oct 2014 15:18:42 +0000 (11:18 -0400)
committerDan Prince <dprince@redhat.com>
Fri, 14 Nov 2014 16:56:22 +0000 (11:56 -0500)
This is a step towards supporting pluggable software configurations
in the heat templates. By moving compute-config out of compute.yaml
we make it possible to define alternate implementations by
changing the OS::TripleO::Compute::SoftwareConfig value in the
overcloud-resource-registry.yaml heat environment file.

Co-Authored-By: Steve Hardy <shardy@redhat.com>
Change-Id: I250dc1a8c02626cf7d1a5d2ce92706504ec0c7de

compute-config.yaml [new file with mode: 0644]
compute.yaml
overcloud-resource-registry.yaml

diff --git a/compute-config.yaml b/compute-config.yaml
new file mode 100644 (file)
index 0000000..4d1e3ce
--- /dev/null
@@ -0,0 +1,73 @@
+heat_template_version: 2014-10-16
+
+description: >
+  Software Config for Nova Compute.
+
+resources:
+  NovaComputeConfigImpl:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        nova:
+          compute_driver: { get_input: nova_compute_driver }
+          compute_libvirt_type: { get_input: nova_compute_libvirt_type }
+          db: {get_input: nova_dsn}
+          debug: {get_input: debug}
+          host: {get_input: nova_api_host}
+          public_ip: {get_input: nova_public_ip}
+          service-password: {get_input: nova_password}
+        ceilometer:
+          db: {get_input: ceilometer_dsn}
+          debug: {get_input: debug}
+          metering_secret: {get_input: ceilometer_metering_secret}
+          service-password: {get_input: ceilometer_password}
+          compute_agent: {get_input: ceilometer_compute_agent}
+        snmpd:
+          export_MIB: UCD-SNMP-MIB
+          readonly_user_name: {get_input: snmpd_readonly_user_name}
+          readonly_user_password: {get_input: snmpd_readonly_user_password}
+        glance:
+          debug: {get_input: debug}
+          host: {get_input: glance_host}
+          port: {get_input: glance_port}
+          protocol: {get_input: glance_protocol}
+        keystone:
+          debug: {get_input: debug}
+          host: {get_input: keystone_host}
+        neutron:
+          debug: {get_input: debug}
+          flat-networks: {get_input: neutron_flat_networks}
+          host: {get_input: neutron_host}
+          ovs_db: {get_input: neutron_dsn}
+          ovs:
+            local_ip: {get_input: neutron_local_ip}
+            tenant_network_type: {get_input: neutron_tenant_network_type}
+            tunnel_types: {get_input: neutron_tunnel_types}
+            network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+            bridge_mappings: {get_input: neutron_bridge_mappings}
+            enable_tunneling: {get_input: neutron_enable_tunneling}
+            physical_bridge: {get_input: neutron_physical_bridge}
+            public_interface: {get_input: neutron_public_interface}
+          service-password: {get_input: neutron_password}
+        admin-password: {get_input: admin_password}
+        rabbit:
+          host: {get_input: rabbit_host}
+          username: {get_input: rabbit_username}
+          password: {get_input: rabbit_password}
+        live-update:
+          host: {get_input: live_update_host}
+          username: {get_input: live_update_username}
+          password: {get_input: live_update_password}
+          tenant-name: {get_input: live_update_tenant_name}
+          base_image_id: {get_input: nova_image}
+          live_update_image_id: {get_input: live_update_compute_image}
+        ntp:
+          servers:
+              - {server: {get_input: ntp_server}, fudge: "stratum 0"}
+
+outputs:
+  config_id:
+    description: The ID of the NovaComputeConfigImpl resource.
+    value:
+      {get_resource: NovaComputeConfigImpl}
index bc13509..57b3086 100644 (file)
@@ -245,74 +245,16 @@ resources:
       user_data_format: SOFTWARE_CONFIG
 
   NovaComputeConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: os-apply-config
-      config:
-        nova:
-          compute_driver: { get_input: nova_compute_driver }
-          compute_libvirt_type: { get_input: nova_compute_libvirt_type }
-          db: {get_input: nova_dsn}
-          debug: {get_param: Debug}
-          host: {get_input: nova_api_host}
-          public_ip: {get_input: nova_public_ip}
-          service-password: {get_input: nova_password}
-        ceilometer:
-          db: {get_input: ceilometer_dsn}
-          debug: {get_param: Debug}
-          metering_secret: {get_input: ceilometer_metering_secret}
-          service-password: {get_input: ceilometer_password}
-          compute_agent: {get_input: ceilometer_compute_agent}
-        snmpd:
-          export_MIB: UCD-SNMP-MIB
-          readonly_user_name: {get_input: snmpd_readonly_user_name}
-          readonly_user_password: {get_input: snmpd_readonly_user_password}
-        glance:
-          debug: {get_param: Debug}
-          host: {get_input: glance_host}
-          port: {get_input: glance_port}
-          protocol: {get_input: glance_protocol}
-        keystone:
-          debug: {get_param: Debug}
-          host: {get_input: keystone_host}
-        neutron:
-          debug: {get_param: Debug}
-          flat-networks: {get_input: neutron_flat_networks}
-          host: {get_input: neutron_host}
-          ovs_db: {get_input: neutron_dsn}
-          ovs:
-            local_ip: {get_input: neutron_local_ip}
-            tenant_network_type: {get_input: neutron_tenant_network_type}
-            tunnel_types: {get_input: neutron_tunnel_types}
-            network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
-            bridge_mappings: {get_input: neutron_bridge_mappings}
-            enable_tunneling: {get_input: neutron_enable_tunneling}
-            physical_bridge: {get_input: neutron_physical_bridge}
-            public_interface: {get_input: neutron_public_interface}
-          service-password: {get_input: neutron_password}
-        admin-password: {get_input: admin_password}
-        rabbit:
-          host: {get_input: rabbit_host}
-          username: {get_input: rabbit_username}
-          password: {get_input: rabbit_password}
-        live-update:
-          host: {get_input: live_update_host}
-          username: {get_input: live_update_username}
-          password: {get_input: live_update_password}
-          tenant-name: {get_input: live_update_tenant_name}
-          base_image_id: {get_input: nova_image}
-          live_update_image_id: {get_input: live_update_compute_image}
-        ntp:
-          servers:
-              - {server: {get_input: ntp_server}, fudge: "stratum 0"}
+    type: OS::TripleO::Compute::SoftwareConfig
 
   NovaComputeDeployment:
-    type: OS::Heat::StructuredDeployment
+    type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
-      config: {get_resource: NovaComputeConfig}
+      config: {get_attr: [NovaComputeConfig, config_id]}
       server: {get_resource: NovaCompute}
       input_values:
+        debug: {get_param: Debug}
         nova_compute_driver: {get_param: NovaComputeDriver}
         nova_compute_libvirt_type: {get_param: NovaComputeLibvirtType}
         nova_dsn: {get_param: NovaDSN}
index 822d987..4ac404e 100644 (file)
@@ -1,5 +1,7 @@
 resource_registry:
   OS::TripleO::BlockStorage: cinder-storage.yaml
   OS::TripleO::Compute: compute.yaml
+  OS::TripleO::Compute::SoftwareConfig: compute-config.yaml
+  OS::TripleO::SoftwareDeployment: OS::Heat::StructuredDeployment
   OS::TripleO::Controller: controller.yaml
   OS::TripleO::ObjectStorage: swift-storage.yaml