Configure ObjectStorage services via resource chains
authorSteven Hardy <shardy@redhat.com>
Tue, 24 May 2016 10:51:56 +0000 (11:51 +0100)
committerGiulio Fidente <gfidente@redhat.com>
Tue, 31 May 2016 09:00:31 +0000 (11:00 +0200)
Similar to the https://review.openstack.org/#/c/259568 which added support
for the composable services StepConfig and ServiceConfigSettings parameters
so that the Controller role supports composable services, this adds those
interfaces for the ObjectStorage role.

Note that at this time the ObjectStorage post config only supports steps
2, 3 and 4, not all those in services/README.rst

Partially-Implements: blueprint composable-services-within-roles
Change-Id: I22ffaa68a6ccd4be29d51674871268179bcddcbc

overcloud.yaml
puppet/services/README.rst
puppet/swift-storage-post.yaml
puppet/swift-storage.yaml

index c6772ab..3adfa3e 100644 (file)
@@ -713,6 +713,14 @@ parameters:
     type: json
     description: Optional scheduler hints to pass to nova
     default: {}
+  ObjectStorageServices:
+    default: []
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the ObjectStorage nodes.
+                 Note this role currently only supports steps 2, 3 and 4 configuration.
+    type: comma_delimited_list
+
 
 # Ceph storage specific parameters
   CephStorageCount:
@@ -1124,6 +1132,12 @@ resources:
           SchedulerHints: {get_param: BlockStorageSchedulerHints}
           NodeIndex: '%index%'
 
+  ObjectStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ObjectStorageServices}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+
   ObjectStorage:
     type: OS::Heat::ResourceGroup
     depends_on: Networks
@@ -1156,6 +1170,7 @@ resources:
           ServerMetadata: {get_param: ServerMetadata}
           SchedulerHints: {get_param: ObjectStorageSchedulerHints}
           NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, config_settings]}
 
   CephStorageServiceChain:
     type: OS::TripleO::Services
@@ -1576,6 +1591,7 @@ resources:
         allnodes_extra: {get_attr: [AllNodesExtraConfig, config_identifier]}
         objectstorage_config: {get_attr: [ObjectStorage, attributes, config_identifier]}
         deployment_identifier: {get_param: DeployIdentifier}
+      StepConfig: {get_attr: [ObjectStorageServiceChain, step_config]}
 
   BlockStorageNodesPostDeployment:
     type: OS::TripleO::BlockStoragePostDeployment
index 38d2ac6..15c8c1f 100644 (file)
@@ -48,3 +48,7 @@ are re-asserted when applying latter ones.
    5) Service activation (Pacemaker)
 
    6) Fencing (Pacemaker)
+
+Note: Not all roles currently support all steps:
+
+  * ObjectStorage role only supports steps 2, 3 and 4
index 2b65244..1aba2bb 100644 (file)
@@ -11,6 +11,10 @@ parameters:
   NodeConfigIdentifiers:
      type: json
      description: Value which changes if the node configuration may need to be re-applied
+  StepConfig:
+     type: string
+     description: Config manifests that will be used to step through the deployment.
+     default: ''
 
 resources:
 
@@ -42,6 +46,7 @@ resources:
         - ''
         - - get_file: manifests/overcloud_object.pp
           - get_file: manifests/ringbuilder.pp
+          - {get_param: StepConfig}
 
   StorageRingbuilderDeployment_Step2:
     type: OS::Heat::StructuredDeployments
index 3f6f473..016947c 100644 (file)
@@ -121,6 +121,9 @@ parameters:
   NodeIndex:
     type: number
     default: 0
+  ServiceConfigSettings:
+    type: json
+    default: {}
 
 resources:
 
@@ -257,6 +260,7 @@ resources:
             - heat_config_%{::deploy_config_name}
             - object_extraconfig
             - extraconfig
+            - service_configs
             - object
             - swift_devices_and_proxy # provided by SwiftDevicesAndProxyConfig
             - all_nodes # provided by allNodesConfig
@@ -265,6 +269,8 @@ resources:
             - network
           merge_behavior: deeper
           datafiles:
+            service_configs:
+              mapped_data: {get_param: ServiceConfigSettings}
             common:
               raw_data: {get_file: hieradata/common.yaml}
             network: