Add passthrough configuration glue.
authorRobert Collins <rbtcollins@hp.com>
Wed, 16 Apr 2014 04:08:45 +0000 (16:08 +1200)
committerRobert Collins <rbtcollins@hp.com>
Thu, 17 Apr 2014 20:07:52 +0000 (08:07 +1200)
This provides a means for users to pass configuration through to the
machines they are deploying without us modelling that.

Change-Id: I7134eb0c6be2d5cb1795b2f03cfba4afb69dc837
blueprint: passthrough-config

nova-compute-config.yaml
nova-compute-instance.yaml
overcloud-source.yaml

index 1500a2e..02d8e00 100644 (file)
@@ -45,3 +45,7 @@ Resources:
           base_image_id: {get_input: nova_image}
           live_update_image_id: {get_input: live_update_compute_image}
         completion-signal: {get_input: deploy_signal_id}
+  NovaComputePassthrough:
+    Type: OS::Heat::StructuredConfig
+    Properties:
+      config: {get_input: passthrough_config}
index 99c2e11..71e47cc 100644 (file)
@@ -6,6 +6,43 @@ Parameters:
     Description: The password for the keystone admin account, used for monitoring, querying neutron etc.
     Type: String
     NoEcho: true
+  ExtraConfig:
+    Description: |
+      Additional configuration to inject into the cluster. The JSON should have
+      the following structure:
+        {"FILEKEY":
+          {"config":
+            [{"section": "SECTIONNAME",
+              "values":
+                [{"option": "OPTIONNAME",
+                  "value": "VALUENAME"
+                 }
+                ]
+             }
+            ]
+          }
+        }
+      For instance:
+        {"nova":
+          {"config":
+            [{"section": "default",
+              "values":
+                [{"option": "compute_manager",
+                  "value": "ironic.nova.compute.manager.ClusterComputeManager"
+                 }
+                ]
+             },
+             {"section": "cells",
+              "values":
+                [{"option": "driver",
+                  "value": "nova.cells.rpc_driver.CellsRPCDriver"
+                 }
+                ]
+             }
+            ]
+          }
+        }
+    Type: Json
   KeyName: 
     Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     Type: String
@@ -163,3 +200,11 @@ Resources:
         live_update_tenant_name: {Ref: LiveUpdateTenantName}
         nova_image: {Ref: NovaImage}
         live_update_image_id: {Ref: LiveUpdateComputeImage}
+  NovaCompute0Passthrough:
+    Type: OS::Heat::StructuredDeployment
+    Properties:
+      config: {Ref: NovaComputePassthrough}
+      server: {Ref: NovaCompute0}
+      signal_transport: NO_SIGNAL
+      input_values:
+        passthrough_config: {Ref: ExtraConfig}
index f215e3b..ecdf05c 100644 (file)
@@ -21,6 +21,44 @@ Parameters:
     Default: tgtadm
     Description: The iSCSI helper to use with cinder.
     Type: String
+  ExtraConfig:
+    Default: {}
+    Description: |
+      Additional configuration to inject into the cluster. The JSON should have
+      the following structure:
+        {"FILEKEY":
+          {"config":
+            [{"section": "SECTIONNAME",
+              "values":
+                [{"option": "OPTIONNAME",
+                  "value": "VALUENAME"
+                 }
+                ]
+             }
+            ]
+          }
+        }
+      For instance:
+        {"nova":
+          {"config":
+            [{"section": "default",
+              "values":
+                [{"option": "compute_manager",
+                  "value": "ironic.nova.compute.manager.ClusterComputeManager"
+                 }
+                ]
+             },
+             {"section": "cells",
+              "values":
+                [{"option": "driver",
+                  "value": "nova.cells.rpc_driver.CellsRPCDriver"
+                 }
+                ]
+             }
+            ]
+          }
+        }
+    Type: Json
   OvercloudControlFlavor:
     Default: baremetal
     Description: Flavor for control nodes to request when deploying.
@@ -246,6 +284,14 @@ Resources:
                 - {Ref: CloudName}
                 # If CloudName is unset, make the hosts line still valid
                 - unused
+  NovaCompute0Passthrough:
+    Type: OS::Heat::StructuredDeployment
+    Properties:
+      config: {Ref: NovaComputePassthrough}
+      server: {Ref: NovaCompute0}
+      signal_transport: NO_SIGNAL
+      input_values:
+        passthrough_config: {Ref: ExtraConfig}
   NovaCompute0:
     Type: FileInclude
     Path: nova-compute-instance.yaml
@@ -354,6 +400,10 @@ Resources:
         ntp:
           servers:
               - {server: {Ref: NtpServer}, fudge: "stratum 0"}
+  controllerPassthrough:
+    Type: OS::Heat::StructuredConfig
+    Properties:
+      config: {get_input: passthrough_config}
   controller0:
     Type: OS::Nova::Server
     Properties:
@@ -412,6 +462,14 @@ Resources:
       input_values:
         ssl_certificate: {Ref: SSLCertificate}
         ssl_key: {Ref: SSLKey}
+  controller0Passthrough:
+    Type: OS::Heat::StructuredDeployment
+    Properties:
+      config: {Ref: controllerPassthrough}
+      server: {Ref: controller0}
+      signal_transport: NO_SIGNAL
+      input_values:
+        passthrough_config: {Ref: ExtraConfig}
 Outputs:
   KeystoneURL:
     Description: URL for the Overcloud Keystone service