Merge "Add services to ServiceNetMap to select hostnames resolution network"
authorJenkins <jenkins@review.openstack.org>
Fri, 10 Jul 2015 14:44:35 +0000 (14:44 +0000)
committerGerrit Code Review <review@openstack.org>
Fri, 10 Jul 2015 14:44:36 +0000 (14:44 +0000)
15 files changed:
controller.yaml
environments/cinder-netapp-config.yaml
environments/net-bond-with-vlans.yaml
environments/net-single-nic-with-vlans.yaml
extraconfig/controller/cinder-netapp.yaml [deleted file]
extraconfig/controller/noop.yaml [deleted file]
extraconfig/post_deploy/README [new file with mode: 0644]
overcloud-resource-registry-puppet.yaml
overcloud-without-mergepy.yaml
puppet/controller-puppet.yaml
puppet/extraconfig/pre_deploy/README [new file with mode: 0644]
puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml [new file with mode: 0644]
puppet/extraconfig/pre_deploy/controller/multiple.yaml [new file with mode: 0644]
puppet/extraconfig/pre_deploy/default.yaml [new file with mode: 0644]
puppet/hieradata/controller.yaml

index 5596591..a22bb83 100644 (file)
@@ -257,6 +257,10 @@ parameters:
     type: string
     hidden: true
     default: ''  # Has to be here because of the ignored empty value bug
+  NeutronExternalNetworkBridge:
+    description: Name of bridge used for external network traffic.
+    type: string
+    default: 'br-ex'
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -297,6 +301,10 @@ parameters:
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
+  NeutronDhcpAgentsPerNetwork:
+    type: number
+    default: 3
+    description: The number of neutron dhcp agents to schedule per network
   NeutronEnableTunnelling:
     type: string
     default: "True"
@@ -632,6 +640,7 @@ resources:
           mechanism_drivers: {get_input: neutron_mechanism_drivers}
           allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
           l3_ha: {get_input: neutron_l3_ha}
+          dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
           ovs:
             enable_tunneling: {get_input: neutron_enable_tunneling}
             local_ip: {get_input: controller_host}
@@ -873,6 +882,7 @@ resources:
         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
         neutron_l3_ha: {get_param: NeutronL3HA}
+        neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
         neutron_public_interface: {get_param: NeutronPublicInterface}
index 4dd9eed..4eaec71 100644 (file)
@@ -1,30 +1,29 @@
 # A Heat environment file which can be used to enable a
-# a Cinder NetApp backend.
+# a Cinder NetApp backend, configured via puppet
 resource_registry:
-  OS::TripleO::Controller::CinderBackend: extraconfig/controller/cinder-netapp.yaml
+  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
 
 parameter_defaults:
-  CinderBackendConfig:
-    CinderEnableNetappBackend: false
-    CinderNetappBackendName: 'tripleo_netapp'
-    CinderNetappLogin: ''
-    CinderNetappPassword: ''
-    CinderNetappServerHostname: ''
-    CinderNetappServerPort: '80'
-    CinderNetappSizeMultiplier: '1.2'
-    CinderNetappStorageFamily: 'ontap_cluster'
-    CinderNetappStorageProtocol: 'nfs'
-    CinderNetappTransportType: 'http'
-    CinderNetappVfiler: ''
-    CinderNetappVolumeList: ''
-    CinderNetappVserver: ''
-    CinderNetappPartnerBackendName: ''
-    CinderNetappNfsShares: ''
-    CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
-    CinderNetappNfsMountOptions: ''
-    CinderNetappCopyOffloadToolPath: ''
-    CinderNetappControllerIps: ''
-    CinderNetappSaPassword: ''
-    CinderNetappStoragePools: ''
-    CinderNetappEseriesHostType: 'linux_dm_mp'
-    CinderNetappWebservicePath: '/devmgr/v2'
+  CinderEnableNetappBackend: false
+  CinderNetappBackendName: 'tripleo_netapp'
+  CinderNetappLogin: ''
+  CinderNetappPassword: ''
+  CinderNetappServerHostname: ''
+  CinderNetappServerPort: '80'
+  CinderNetappSizeMultiplier: '1.2'
+  CinderNetappStorageFamily: 'ontap_cluster'
+  CinderNetappStorageProtocol: 'nfs'
+  CinderNetappTransportType: 'http'
+  CinderNetappVfiler: ''
+  CinderNetappVolumeList: ''
+  CinderNetappVserver: ''
+  CinderNetappPartnerBackendName: ''
+  CinderNetappNfsShares: ''
+  CinderNetappNfsSharesConfig: '/etc/cinder/shares.conf'
+  CinderNetappNfsMountOptions: ''
+  CinderNetappCopyOffloadToolPath: ''
+  CinderNetappControllerIps: ''
+  CinderNetappSaPassword: ''
+  CinderNetappStoragePools: ''
+  CinderNetappEseriesHostType: 'linux_dm_mp'
+  CinderNetappWebservicePath: '/devmgr/v2'
index 38c31ca..73f7132 100644 (file)
@@ -11,3 +11,9 @@ resource_registry:
   OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/bond-with-vlans/controller.yaml
   OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/swift-storage.yaml
   OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/bond-with-vlans/ceph-storage.yaml
+
+parameters:
+  # This sets 'external_network_bridge' in l3_agent.ini to an empty string
+  # so that external networks act like provider bridge networks (they
+  # will plug into br-int instead of br-ex)
+  NeutronExternalNetworkBridge: "''"
index b087b3e..8561acd 100644 (file)
@@ -11,3 +11,9 @@ resource_registry:
   OS::TripleO::Controller::Net::SoftwareConfig: ../network/config/single-nic-vlans/controller.yaml
   OS::TripleO::ObjectStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/swift-storage.yaml
   OS::TripleO::CephStorage::Net::SoftwareConfig: ../network/config/single-nic-vlans/ceph-storage.yaml
+
+parameters:
+  # This sets 'external_network_bridge' in l3_agent.ini to an empty string
+  # so that external networks act like provider bridge networks (they
+  # will plug into br-int instead of br-ex)
+  NeutronExternalNetworkBridge: "''"
diff --git a/extraconfig/controller/cinder-netapp.yaml b/extraconfig/controller/cinder-netapp.yaml
deleted file mode 100644 (file)
index 223ceac..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: >
-  Configure hieradata for Cinder Netapp configuration
-
-resources:
-  CinderNetappConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: os-apply-config
-      config:
-        hiera:
-          datafiles:
-            cinder_netapp_data:
-              mapped_data:
-                cinder_enable_netapp_backend: {get_param: CinderEnableNetappBackend}
-                cinder::backend::netapp::title: {get_param: CinderNetappBackendName}
-                cinder::backend::netapp::netapp_login: {get_param: CinderNetappLogin}
-                cinder::backend::netapp::netapp_password: {get_param: CinderNetappPassword}
-                cinder::backend::netapp::netapp_hostname: {get_param: CinderNetappServerHostname}
-                cinder::backend::netapp::netapp_server_port: {get_param: CinderNetappServerPort}
-                cinder::backend::netapp::netapp_size_multiplier: {get_param: CinderNetappSizeMultiplier}
-                cinder::backend::netapp::netapp_storage_family: {get_param: CinderNetappStorageFamily}
-                cinder::backend::netapp::netapp_storage_protocol: {get_param: CinderNetappStorageProtocol}
-                cinder::backend::netapp::netapp_transport_type: {get_param: CinderNetappTransportType}
-                cinder::backend::netapp::netapp_vfiler: {get_param: CinderNetappVfiler}
-                cinder::backend::netapp::netapp_volume_list: {get_param: CinderNetappVolumeList}
-                cinder::backend::netapp::netapp_vserver: {get_param: CinderNetappVserver}
-                cinder::backend::netapp::netapp_partner_backend_name: {get_param: CinderNetappPartnerBackendName}
-                cinder::backend::netapp::nfs_shares: {get_param: CinderNetappNfsShares}
-                cinder::backend::netapp::nfs_shares_config: {get_param: CinderNetappNfsSharesConfig}
-                cinder::backend::netapp::nfs_mount_options: {get_param: CinderNetappNfsMountOptions}
-                cinder::backend::netapp::netapp_copyoffload_tool_path: {get_param: CinderNetappCopyOffloadToolPath}
-                cinder::backend::netapp::netapp_controller_ips: {get_param: CinderNetappControllerIps}
-                cinder::backend::netapp::netapp_sa_password: {get_param: CinderNetappSaPassword}
-                cinder::backend::netapp::netapp_storage_pools: {get_param: CinderNetappStoragePools}
-                cinder::backend::netapp::netapp_eseries_host_type: {get_param: CinderNetappEseriesHostType}
-                cinder::backend::netapp::netapp_webservice_path: {get_param: CinderNetappWebservicePath}
diff --git a/extraconfig/controller/noop.yaml b/extraconfig/controller/noop.yaml
deleted file mode 100644 (file)
index 2eb3576..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-heat_template_version: 2015-04-30
-
-description: A stack which doesn't configure anything.
diff --git a/extraconfig/post_deploy/README b/extraconfig/post_deploy/README
new file mode 100644 (file)
index 0000000..3c53fa2
--- /dev/null
@@ -0,0 +1,2 @@
+This tree contains additional configuration which happens "post deployment",
+e.g after the OpenStack service configuration has been completed.
index c9041c6..17c1470 100644 (file)
@@ -21,9 +21,15 @@ resource_registry:
   OS::TripleO::CephClusterConfig::SoftwareConfig: puppet/ceph-cluster-config.yaml
   OS::TripleO::AllNodes::SoftwareConfig: puppet/all-nodes-config.yaml
   OS::TripleO::BootstrapNode::SoftwareConfig: puppet/bootstrap-config.yaml
+  OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
+
+  # Hooks for operator extra config
+  # NodeUserData == Cloud-init additional user-data, e.g cloud-config
+  # ControllerExtraConfigPre == Controller configuration pre service deployment
+  # NodeExtraConfigPost == All nodes configuration post service deployment
   OS::TripleO::NodeUserData: firstboot/userdata_default.yaml
+  OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/default.yaml
   OS::TripleO::NodeExtraConfigPost: extraconfig/post_deploy/default.yaml
-  OS::TripleO::Tasks::PackageUpdate: extraconfig/tasks/yum_update.yaml
 
   # TripleO overcloud networks
   OS::TripleO::Network: network/networks.yaml
@@ -65,9 +71,6 @@ resource_registry:
   OS::TripleO::BlockStorage::Ports::StoragePort: network/ports/noop.yaml
   OS::TripleO::BlockStorage::Ports::StorageMgmtPort: network/ports/noop.yaml
 
-  # Cinder backend config for the controller role
-  OS::TripleO::Controller::CinderBackend: extraconfig/controller/noop.yaml
-
   # Port assignments for service virtual IPs for the controller role
   OS::TripleO::Controller::Ports::RedisVipPort: network/ports/ctlplane_vip.yaml
 
index 4ad5714..4258fe0 100644 (file)
@@ -76,6 +76,10 @@ parameters:
     type: string
     constraints:
       - custom_constraint: nova.keypair
+  NeutronExternalNetworkBridge:
+    description: Name of bridge used for external network traffic.
+    type: string
+    default: 'br-ex'
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -158,6 +162,10 @@ parameters:
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
+  NeutronDhcpAgentsPerNetwork:
+    type: number
+    default: 3
+    description: The number of neutron dhcp agents to schedule per network
   NovaPassword:
     default: unset
     description: The password for the nova service account, used by nova-api.
@@ -626,6 +634,39 @@ parameters:
       Setting to a previously unused value during stack-update will trigger
       package update on all nodes
 
+  # If you want to remove a specific node from a resource group, you can pass
+  # the node name or id as a <Group>RemovalPolicies parameter, for example:
+  # ComputeRemovalPolicies: [{'resource_list': ['0']}]
+  ControllerRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ControllerResourceGroup when
+      doing an update which requires removal of specific resources.
+  ComputeRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ComputeResourceGroup when
+      doing an update which requires removal of specific resources.
+  BlockStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from BlockStorageResourceGroup when
+      doing an update which requires removal of specific resources.
+  ObjectStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ObjectStorageResourceGroup when
+      doing an update which requires removal of specific resources.
+  CephStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from CephStorageResourceGroup when
+      doing an update which requires removal of specific resources.
 
 
 resources:
@@ -648,6 +689,7 @@ resources:
     depends_on: Networks
     properties:
       count: {get_param: ControllerCount}
+      removal_policies: {get_param: ControllerRemovalPolicies}
       resource_def:
         type: OS::TripleO::Controller
         properties:
@@ -696,6 +738,7 @@ resources:
           NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
           NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
           NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
+          NeutronExternalNetworkBridge: {get_param: NeutronExternalNetworkBridge}
           NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
           NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
@@ -709,6 +752,7 @@ resources:
           NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
           NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
           NeutronL3HA: {get_param: NeutronL3HA}
+          NeutronDhcpAgentsPerNetwork: {get_param: NeutronDhcpAgentsPerNetwork}
           NeutronNetworkType: {get_param: NeutronNetworkType}
           NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
           NovaPassword: {get_param: NovaPassword}
@@ -752,6 +796,7 @@ resources:
     depends_on: Networks
     properties:
       count: {get_param: ComputeCount}
+      removal_policies: {get_param: ComputeRemovalPolicies}
       resource_def:
         type: OS::TripleO::Compute
         properties:
@@ -815,6 +860,7 @@ resources:
     depends_on: Networks
     properties:
       count: {get_param: BlockStorageCount}
+      removal_policies: {get_param: BlockStorageRemovalPolicies}
       resource_def:
         type: OS::TripleO::BlockStorage
         properties:
@@ -850,6 +896,7 @@ resources:
     depends_on: Networks
     properties:
       count: {get_param: ObjectStorageCount}
+      removal_policies: {get_param: ObjectStorageRemovalPolicies}
       resource_def:
         type: OS::TripleO::ObjectStorage
         properties:
@@ -875,6 +922,7 @@ resources:
     depends_on: Networks
     properties:
       count: {get_param: CephStorageCount}
+      removal_policies: {get_param: CephStorageRemovalPolicies}
       resource_def:
         type: OS::TripleO::CephStorage
         properties:
index 591d0c2..9f531ef 100644 (file)
@@ -262,6 +262,10 @@ parameters:
     type: string
     hidden: true
     default: ''  # Has to be here because of the ignored empty value bug
+  NeutronExternalNetworkBridge:
+    description: Name of bridge used for external network traffic.
+    type: string
+    default: 'br-ex'
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -284,6 +288,10 @@ parameters:
     default: 'False'
     description: Whether to enable l3-agent HA
     type: string
+  NeutronDhcpAgentsPerNetwork:
+    type: number
+    default: 3
+    description: The number of neutron dhcp agents to schedule per network
   NeutronDVR:
     default: 'False'
     description: Whether to configure Neutron Distributed Virtual Routers
@@ -688,6 +696,7 @@ resources:
         neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
         neutron_l3_ha: {get_param: NeutronL3HA}
+        neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
         neutron_network_vlan_ranges:
           str_replace:
             template: "['RANGES']"
@@ -697,6 +706,7 @@ resources:
                 - "','"
                 - {get_param: NeutronNetworkVLANRanges}
         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+        neutron_external_network_bridge: {get_param: NeutronExternalNetworkBridge}
         neutron_public_interface: {get_param: NeutronPublicInterface}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
@@ -824,6 +834,7 @@ resources:
             - vip_data # provided by vip-config
             - '"%{::osfamily}"'
             - common
+            - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
           datafiles:
             common:
               raw_data: {get_file: hieradata/common.yaml}
@@ -956,6 +967,7 @@ resources:
                 neutron::server::auth_uri: {get_input: keystone_auth_uri}
                 neutron::server::identity_uri: {get_input: keystone_identity_uri}
                 neutron::server::database_connection: {get_input: neutron_dsn}
+                neutron::agents::l3::external_network_bridge: {get_input: neutron_external_network_bridge}
                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
                 neutron_flat_networks: {get_input: neutron_flat_networks}
@@ -966,6 +978,7 @@ resources:
                 neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
+                neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
                 neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
                 neutron_public_interface: {get_input: neutron_public_interface}
@@ -1041,6 +1054,13 @@ resources:
                 tripleo::loadbalancer::public_virtual_interface: {get_input: public_virtual_interface}
                 enable_package_install: {get_input: enable_package_install}
 
+  # Hook for site-specific additional pre-deployment config, e.g extra hieradata
+  ControllerExtraConfigPre:
+    depends_on: ControllerDeployment
+    type: OS::TripleO::ControllerExtraConfigPre
+    properties:
+        server: {get_resource: Controller}
+
   UpdateConfig:
     type: OS::TripleO::Tasks::PackageUpdate
 
@@ -1112,4 +1132,8 @@ outputs:
           IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
   config_identifier:
     description: identifier which changes if the controller configuration may need re-applying
-    value: {get_attr: [ControllerDeployment, deploy_stdout]}
+    value:
+      list_join:
+      - ','
+      - - {get_attr: [ControllerDeployment, deploy_stdout]}
+        - {get_attr: [ControllerExtraConfigPre, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/README b/puppet/extraconfig/pre_deploy/README
new file mode 100644 (file)
index 0000000..51fc340
--- /dev/null
@@ -0,0 +1,12 @@
+This tree contains additional configuration which happens "pre deployment",
+e.g before the OpenStack services themselves are configured but after the
+nodes themselves have been provisioned and initially configured.
+
+Typically for puppet deployments these additional configs will put in place
+hieradata which is then consumed by the subsequent puppet configuration
+which occurs during the post-deployment phase.
+
+If you need to specify multiple configs, you can chain them together in a
+template, see the multiple.yaml example:
+
+  OS::TripleO::ControllerExtraConfigPre: puppet/extraconfig/pre_deploy/controller/multiple.yaml
diff --git a/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml b/puppet/extraconfig/pre_deploy/controller/cinder-netapp.yaml
new file mode 100644 (file)
index 0000000..1d982df
--- /dev/null
@@ -0,0 +1,145 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Cinder Netapp configuration
+
+parameters:
+  server:
+    description: ID of the controller node to apply this config to
+    type: string
+
+  # Config specific parameters, to be provided via parameter_defaults
+  CinderEnableNetappBackend:
+    type: string
+    default: false
+  CinderNetappBackendName:
+    type: string
+    default: 'tripleo_netapp'
+  CinderNetappLogin:
+    type: string
+  CinderNetappPassword:
+    type: string
+  CinderNetappServerHostname:
+    type: string
+  CinderNetappServerPort:
+    type: string
+    default: '80'
+  CinderNetappSizeMultiplier:
+    type: string
+    default: '1.2'
+  CinderNetappStorageFamily:
+    type: string
+    default: 'ontap_cluster'
+  CinderNetappStorageProtocol:
+    type: string
+    default: 'nfs'
+  CinderNetappTransportType:
+    type: string
+    default: 'http'
+  CinderNetappVfiler:
+    type: string
+    default: ''
+  CinderNetappVolumeList:
+    type: string
+    default: ''
+  CinderNetappVserver:
+    type: string
+    default: ''
+  CinderNetappPartnerBackendName:
+    type: string
+    default: ''
+  CinderNetappNfsShares:
+    type: string
+    default: ''
+  CinderNetappNfsSharesConfig:
+    type: string
+    default: '/etc/cinder/shares.conf'
+  CinderNetappNfsMountOptions:
+    type: string
+    default: ''
+  CinderNetappCopyOffloadToolPath:
+    type: string
+    default: ''
+  CinderNetappControllerIps:
+    type: string
+    default: ''
+  CinderNetappSaPassword:
+    type: string
+    default: ''
+  CinderNetappStoragePools:
+    type: string
+    default: ''
+  CinderNetappEseriesHostType:
+    type: string
+    default: 'linux_dm_mp'
+  CinderNetappWebservicePath:
+    type: string
+    default: '/devmgr/v2'
+
+resources:
+  CinderNetappConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        hiera:
+          datafiles:
+            cinder_netapp_data:
+              mapped_data:
+                cinder_enable_netapp_backend: {get_input: EnableNetappBackend}
+                cinder::backend::netapp::title: {get_input: NetappBackendName}
+                cinder::backend::netapp::netapp_login: {get_input: NetappLogin}
+                cinder::backend::netapp::netapp_password: {get_input: NetappPassword}
+                cinder::backend::netapp::netapp_hostname: {get_input: NetappServerHostname}
+                cinder::backend::netapp::netapp_server_port: {get_input: NetappServerPort}
+                cinder::backend::netapp::netapp_size_multiplier: {get_input: NetappSizeMultiplier}
+                cinder::backend::netapp::netapp_storage_family: {get_input: NetappStorageFamily}
+                cinder::backend::netapp::netapp_storage_protocol: {get_input: NetappStorageProtocol}
+                cinder::backend::netapp::netapp_transport_type: {get_input: NetappTransportType}
+                cinder::backend::netapp::netapp_vfiler: {get_input: NetappVfiler}
+                cinder::backend::netapp::netapp_volume_list: {get_input: NetappVolumeList}
+                cinder::backend::netapp::netapp_vserver: {get_input: NetappVserver}
+                cinder::backend::netapp::netapp_partner_backend_name: {get_input: NetappPartnerBackendName}
+                cinder::backend::netapp::nfs_shares: {get_input: NetappNfsShares}
+                cinder::backend::netapp::nfs_shares_config: {get_input: NetappNfsSharesConfig}
+                cinder::backend::netapp::nfs_mount_options: {get_input: NetappNfsMountOptions}
+                cinder::backend::netapp::netapp_copyoffload_tool_path: {get_input: NetappCopyOffloadToolPath}
+                cinder::backend::netapp::netapp_controller_ips: {get_input: NetappControllerIps}
+                cinder::backend::netapp::netapp_sa_password: {get_input: NetappSaPassword}
+                cinder::backend::netapp::netapp_storage_pools: {get_input: NetappStoragePools}
+                cinder::backend::netapp::netapp_eseries_host_type: {get_input: NetappEseriesHostType}
+                cinder::backend::netapp::netapp_webservice_path: {get_input: NetappWebservicePath}
+
+  CinderNetappDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: CinderNetappConfig}
+      server: {get_param: server}
+      input_values:
+        EnableNetappBackend: {get_param: CinderEnableNetappBackend}
+        NetappBackendName: {get_param: CinderNetappBackendName}
+        NetappLogin: {get_param: CinderNetappLogin}
+        NetappPassword: {get_param: CinderNetappPassword}
+        NetappServerHostname: {get_param: CinderNetappServerHostname}
+        NetappServerPort: {get_param: CinderNetappServerPort}
+        NetappSizeMultiplier: {get_param: CinderNetappSizeMultiplier}
+        NetappStorageFamily: {get_param: CinderNetappStorageFamily}
+        NetappStorageProtocol: {get_param: CinderNetappStorageProtocol}
+        NetappTransportType: {get_param: CinderNetappTransportType}
+        NetappVfiler: {get_param: CinderNetappVfiler}
+        NetappVolumeList: {get_param: CinderNetappVolumeList}
+        NetappVserver: {get_param: CinderNetappVserver}
+        NetappPartnerBackendName: {get_param: CinderNetappPartnerBackendName}
+        NetappNfsShares: {get_param: CinderNetappNfsShares}
+        NetappNfsSharesConfig: {get_param: CinderNetappNfsSharesConfig}
+        NetappNfsMountOptions: {get_param: CinderNetappNfsMountOptions}
+        NetappCopyOffloadToolPath: {get_param: CinderNetappCopyOffloadToolPath}
+        NetappControllerIps: {get_param: CinderNetappControllerIps}
+        NetappSaPassword: {get_param: CinderNetappSaPassword}
+        NetappStoragePools: {get_param: CinderNetappStoragePools}
+        NetappEseriesHostType: {get_param: CinderNetappEseriesHostType}
+        NetappWebservicePath: {get_param: CinderNetappWebservicePath}
+
+outputs:
+  deploy_stdout:
+    description: Deployment reference, used to trigger puppet apply on changes
+    value: {get_attr: [CinderNetappDeployment, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/controller/multiple.yaml b/puppet/extraconfig/pre_deploy/controller/multiple.yaml
new file mode 100644 (file)
index 0000000..f949a39
--- /dev/null
@@ -0,0 +1,18 @@
+heat_template_version: 2014-10-16
+description: 'Extra Pre-Deployment Config, multiple'
+parameters:
+  server:
+    type: string
+
+resources:
+
+  CinderNetappConfig:
+    type: cinder-netapp.yaml
+    properties:
+        server: {get_param: server}
+
+  # Note depends_on may be used for serialization if ordering is important
+  OtherConfig:
+    type: other.yaml
+    properties:
+        server: {get_param: server}
diff --git a/puppet/extraconfig/pre_deploy/default.yaml b/puppet/extraconfig/pre_deploy/default.yaml
new file mode 100644 (file)
index 0000000..dcbc681
--- /dev/null
@@ -0,0 +1,8 @@
+heat_template_version: 2014-10-16
+description: 'Noop Extra Pre-Deployment Config'
+parameters:
+  server:
+    type: string
+outputs:
+  deploy_stdout:
+    value: "None"
index cdd1d3a..72c10c2 100644 (file)
@@ -65,7 +65,6 @@ glance::backend::rbd::rbd_store_user: 'openstack'
 neutron::core_plugin: 'ml2'
 neutron::service_plugins:
   - 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin'
-neutron::dhcp_agents_per_network: 2
 neutron::server::sync_db: true
 neutron::agents::dhcp::dnsmasq_config_file: /etc/neutron/dnsmasq-neutron.conf