Wire in hieradata overrides via ExtraConfig for NovaCompute
authorSteven Hardy <shardy@redhat.com>
Wed, 15 Jul 2015 17:36:48 +0000 (13:36 -0400)
committerSteven Hardy <shardy@redhat.com>
Thu, 16 Jul 2015 15:02:20 +0000 (16:02 +0100)
Adds support for global (ExtraConfig) and role-specific
(NovaComputeExtraConfig) hiera overrides, similar to those added
for the controller.

For example, you can pass an environment file like:
parameters:
  NovaComputeExtraConfig:
    nova::scheduler::filter::ram_allocation_ratio: 1.8
    compute_classes:
    - ::nova::scheduler::filter

This passes a hiera value for ram_allocation_ratio and enables
a class via the include added in https://review.openstack.org/#/c/197908/

Note this also requires https://review.openstack.org/#/c/188772/
or 40-hiera-datafiles incorrectly quotes the list and the
compute_classes part won't work.

Change-Id: Ic33eed1b5e9c33c0d2f6075c65c8d9649b82c8b4

puppet/compute-puppet.yaml

index 0275692..aa0d26a 100644 (file)
@@ -32,40 +32,8 @@ parameters:
   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": "force_config_drive",
-                  "value": "always"
-                 }
-                ]
-             },
-             {"section": "cells",
-              "values":
-                [{"option": "driver",
-                  "value": "nova.cells.rpc_driver.CellsRPCDriver"
-                 }
-                ]
-             }
-            ]
-          }
-        }
+      Additional hiera configuration to inject into the cluster. Note
+      that NovaComputeExtraConfig takes precedence over ExtraConfig.
     type: json
   Flavor:
     description: Flavor for the nova compute node
@@ -340,6 +308,8 @@ resources:
         hiera:
           hierarchy:
             - heat_config_%{::deploy_config_name}
+            - compute_extraconfig
+            - extraconfig
             - compute
             - ceph_cluster # provided by CephClusterConfig
             - ceph
@@ -347,6 +317,10 @@ resources:
             - '"%{::osfamily}"'
             - common
           datafiles:
+            compute_extraconfig:
+              mapped_data: {get_param: NovaComputeExtraConfig}
+            extraconfig:
+              mapped_data: {get_param: ExtraConfig}
             common:
               raw_data: {get_file: hieradata/common.yaml}
             ceph: