Merge "Drop MongoDB from the undercloud"
authorJenkins <jenkins@review.openstack.org>
Mon, 24 Jul 2017 04:12:47 +0000 (04:12 +0000)
committerGerrit Code Review <review@openstack.org>
Mon, 24 Jul 2017 04:12:47 +0000 (04:12 +0000)
35 files changed:
capabilities-map.yaml
ci/environments/multinode-core.yaml
common/services.yaml
docker/docker-steps.j2
docker/services/nova-libvirt.yaml
environments/host-config-and-reboot.j2.yaml
environments/neutron-opendaylight-dpdk.yaml
environments/neutron-ovs-dpdk.yaml
environments/veritas-hyperscale/cinder-veritas-hyperscale-config.yaml [new file with mode: 0644]
environments/veritas-hyperscale/veritas-hyperscale-config.yaml [new file with mode: 0644]
extraconfig/post_deploy/example_run_on_update.yaml
extraconfig/pre_network/host_config_and_reboot.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/all-nodes-config.yaml
puppet/major_upgrade_steps.j2.yaml
puppet/puppet-steps.j2
puppet/services/ceph-mon.yaml
puppet/services/cinder-backend-veritas-hyperscale.yaml [new file with mode: 0644]
puppet/services/congress.yaml
puppet/services/ec2-api.yaml
puppet/services/keystone.yaml
puppet/services/neutron-l3-compute-dvr.yaml
puppet/services/neutron-l3.yaml
puppet/services/neutron-plugin-ml2.yaml
puppet/services/tacker.yaml
puppet/services/tripleo-packages.yaml
puppet/services/veritas-hyperscale-controller.yaml [new file with mode: 0644]
releasenotes/notes/composable-veritas-hyperscale-driver-e7f0a35d7d9a8df1.yaml [new file with mode: 0644]
releasenotes/notes/computeovsdpdk-role-67d53a405ce4174b.yaml [new file with mode: 0644]
roles/BlockStorage.yaml
roles/ComputeOvsDpdk.yaml [new file with mode: 0644]
roles/Controller.yaml
roles/README.rst
roles_data.yaml
tools/yaml-validate.py

index d0ec015..decac6b 100644 (file)
@@ -451,6 +451,13 @@ topics:
               configured via puppet
             requires:
               - overcloud-resource-registry-puppet.yaml
+          - file: environments/cinder-veritas-hyperscale-config.yaml
+            title: Cinder Veritas HyperScale backend
+            description: >
+              Enables a Cinder Veritas HyperScale backend,
+              configured via puppet
+            requires:
+              - overcloud-resource-registry-puppet.yaml
       - title: Ceph
         description: >
           Enable the use of Ceph in the overcloud
index b5316f1..0dd59e9 100644 (file)
@@ -21,6 +21,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
 
 resources:
 
index 8581656..e415f4b 100644 (file)
@@ -1,4 +1,3 @@
-#FIXME move into common when specfile adds it
 heat_template_version: pike
 
 description: >
@@ -63,6 +62,33 @@ resources:
     properties:
       RoleData: {get_attr: [ServiceChain, role_data]}
 
+  PuppetStepConfig:
+    type: OS::Heat::Value
+    properties:
+      type: string
+      value:
+        yaql:
+          expression:
+            # select 'step_config' only from services that do not have a docker_config
+            coalesce($.data.service_names, []).zip(coalesce($.data.step_config, []), coalesce($.data.docker_config, [])).where($[2] = null).where($[1] != null).select($[1]).join("\n")
+          data:
+            service_names: {get_attr: [ServiceChain, role_data, service_name]}
+            step_config: {get_attr: [ServiceChain, role_data, step_config]}
+            docker_config: {get_attr: [ServiceChain, role_data, docker_config]}
+
+  DockerConfig:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        yaql:
+          expression:
+            # select 'docker_config' only from services that have it
+            coalesce($.data.service_names, []).zip(coalesce($.data.docker_config, [])).where($[1] != null).select($[1]).reduce($1.mergeWith($2), {})
+          data:
+            service_names: {get_attr: [ServiceChain, role_data, service_names]}
+            docker_config: {get_attr: [ServiceChain, role_data, docker_config]}
+
 outputs:
   role_data:
     description: Combined Role data for this set of services.
@@ -125,7 +151,7 @@ outputs:
         yaql:
           expression: $.data.role_data.where($ != null).select($.get('service_workflow_tasks')).where($ != null).reduce($1.mergeWith($2), {})
           data: {role_data: {get_attr: [ServiceChain, role_data]}}
-      step_config: {get_attr: [ServiceChain, role_data, step_config]}
+      step_config: {get_attr: [PuppetStepConfig, value]}
       upgrade_tasks:
         yaql:
           # Note we use distinct() here to filter any identical tasks, e.g yum update for all services
@@ -143,7 +169,7 @@ outputs:
       kolla_config:
         map_merge: {get_attr: [ServiceChain, role_data, kolla_config]}
       docker_config:
-        {get_attr: [ServiceChain, role_data, docker_config]}
+        {get_attr: [DockerConfig, value]}
       docker_puppet_tasks:
         {get_attr: [ServiceChain, role_data, docker_puppet_tasks]}
       host_prep_tasks:
index 4b0c878..68ab02f 100644 (file)
@@ -133,6 +133,7 @@ resources:
                 {%- for r in roles %}
                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
                 {%- endfor %}
+            evaluate_env: false
         UPDATE:
           workflow: { get_resource: WorkflowTasks_Step{{step}} }
           params:
@@ -142,6 +143,7 @@ resources:
                 {%- for r in roles %}
                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
                 {%- endfor %}
+            evaluate_env: false
       always_update: true
 # END service_workflow_tasks handling
 {% endfor %}
@@ -176,10 +178,10 @@ resources:
                   puppet_config: {get_param: [role_data, {{role.name}}, puppet_config]}
                   docker_puppet_script: {get_file: docker-puppet.py}
                   docker_puppet_tasks: {get_attr: [{{primary_role_name}}DockerPuppetTasks, value]}
-                  docker_startup_configs: {get_attr: [{{role.name}}DockerConfig, value]}
+                  docker_startup_configs: {get_param: [role_data, {{role.name}}, docker_config]}
                   kolla_config: {get_param: [role_data, {{role.name}}, kolla_config]}
                   bootstrap_server_id: {get_param: [servers, {{primary_role_name}}, '0']}
-                  puppet_step_config: {get_attr: [{{role.name}}PuppetStepConfig, value]}
+                  puppet_step_config: {get_param: [role_data, {{role.name}}, step_config]}
                 tasks:
                   # Join host_prep_tasks with the other per-host configuration
                   yaql:
@@ -232,33 +234,6 @@ resources:
       servers: {get_param: [servers, {{role.name}}]}
       config: {get_resource: {{role.name}}HostPrepConfig}
 
-  {{role.name}}PuppetStepConfig:
-    type: OS::Heat::Value
-    properties:
-      type: string
-      value:
-        yaql:
-          expression:
-            # select 'step_config' only from services that do not have a docker_config
-            $.data.service_names.zip($.data.step_config, $.data.docker_config).where($[2] = null).where($[1] != null).select($[1]).join("\n")
-          data:
-            service_names: {get_param: [role_data, {{role.name}}, service_names]}
-            step_config: {get_param: [role_data, {{role.name}}, step_config]}
-            docker_config: {get_param: [role_data, {{role.name}}, docker_config]}
-
-  {{role.name}}DockerConfig:
-    type: OS::Heat::Value
-    properties:
-      type: json
-      value:
-        yaql:
-          expression:
-            # select 'docker_config' only from services that have it
-            $.data.service_names.zip($.data.docker_config).where($[1] != null).select($[1]).reduce($1.mergeWith($2), {})
-          data:
-            service_names: {get_param: [role_data, {{role.name}}, service_names]}
-            docker_config: {get_param: [role_data, {{role.name}}, docker_config]}
-
   # BEGIN CONFIG STEPS
 
   {{role.name}}PreConfig:
index 36bdc7f..e1ddca8 100644 (file)
@@ -14,7 +14,7 @@ parameters:
     type: string
   EnablePackageInstall:
     default: 'false'
-    description: Set to true to enable package installation
+    description: Set to true to enable package installation at deploy time
     type: boolean
   ServiceData:
     default: {}
index d5f69ec..c16627d 100644 (file)
@@ -11,8 +11,8 @@ resource_registry:
   #ComputeParameters:
     #KernelArgs: ""
     #TunedProfileName: ""
-    #HostIsolatedCoreList: ""
+    #IsolCpusList: ""
   #ComputeOvsDpdkParameters:
-    #KernelArgs: ""
-    #TunedProfileName: ""
-    #HostIsolatedCoreList: ""
+    #KernelArgs: "intel_iommu=on iommu=pt default_hugepagesz=1GB hugepagesz=1G hugepages=60"
+    #TunedProfileName: "cpu-partitioning"
+    #IsolCpusList: ""
index 9ee4eb7..d675252 100644 (file)
@@ -12,15 +12,23 @@ parameter_defaults:
   NeutronMechanismDrivers: 'opendaylight_v2'
   NeutronServicePlugins: 'odl-router_v2'
   NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
-  ## Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
-  ## It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
-  ## This can be done using ComputeKernelArgs as shown below.
-  ComputeParameters:
-    #ComputeKernelArgs: "intel_iommu=on default_hugepagesz=2MB hugepagesz=2MB hugepages=2048"
+
+  ComputeOvsDpdkParameters:
+    OvsEnableDpdk: True
+
+    ## Host configuration Parameters
+    #TunedProfileName: "cpu-partitioning"
+    #IsolCpusList: ""               # Logical CPUs list to be isolated from the host process (applied via cpu-partitioning tuned).
+                                    # It is mandatory to provide isolated cpus for tuned to achive optimal performance.
+                                    # Example: "3-8,12-15,18"
+    #KernelArgs: ""                 # Space separated kernel args to configure hugepage and IOMMU.
+                                    # Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
+                                    # It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
+                                    # This should be done by configuring parameters via host-config-and-reboot.yaml environment file.
+
     ## Attempting to deploy DPDK without appropriate values for the below parameters may lead to unstable deployments
     ## due to CPU contention of DPDK PMD threads.
-    OvsEnableDpdk: True
-    ## It is highly recommended to to enable isolcpus (via ComputeKernelArgs) on compute overcloud nodes and set the following parameters:
+    ## It is highly recommended to to enable isolcpus (via KernelArgs) on compute overcloud nodes and set the following parameters:
     #OvsDpdkSocketMemory: ""       # Sets the amount of hugepage memory to assign per NUMA node.
                                    # It is recommended to use the socket closest to the PCIe slot used for the
                                    # desired DPDK NIC.  Format should be comma separated per socket string such as:
index ecfd0fe..029a198 100644 (file)
@@ -1,25 +1,32 @@
 # A Heat environment that can be used to deploy DPDK with OVS
 # Deploying DPDK requires enabling hugepages for the overcloud nodes
 resource_registry:
-  OS::TripleO::Services::ComputeNeutronOvsAgent: ../puppet/services/neutron-ovs-dpdk-agent.yaml
+  OS::TripleO::Services::ComputeNeutronOvsDpdk: ../puppet/services/neutron-ovs-dpdk-agent.yaml
 
 parameter_defaults:
   NeutronDatapathType: "netdev"
   NeutronVhostuserSocketDir: "/var/lib/vhost_sockets"
   NovaSchedulerDefaultFilters: "RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,NUMATopologyFilter"
-  ## Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
-  ## It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
-  ## This can be done using ComputeKernelArgs as shown below.
-  #ComputeParameters:
-    #ComputeKernelArgs: "intel_iommu=on default_hugepagesz=2MB hugepagesz=2MB hugepages=2048"
+  OvsDpdkDriverType: "vfio-pci"
+
+  #ComputeOvsDpdkParameters:
+    ## Host configuration Parameters
+    #TunedProfileName: "cpu-partitioning"
+    #IsolCpusList: ""               # Logical CPUs list to be isolated from the host process (applied via cpu-partitioning tuned).
+                                    # It is mandatory to provide isolated cpus for tuned to achive optimal performance.
+                                    # Example: "3-8,12-15,18"
+    #KernelArgs: ""                 # Space separated kernel args to configure hugepage and IOMMU.
+                                    # Deploying DPDK requires enabling hugepages for the overcloud compute nodes.
+                                    # It also requires enabling IOMMU when using the VFIO (vfio-pci) OvsDpdkDriverType.
+                                    # This should be done by configuring parameters via host-config-and-reboot.yaml environment file.
+
     ## Attempting to deploy DPDK without appropriate values for the below parameters may lead to unstable deployments
     ## due to CPU contention of DPDK PMD threads.
-    ## It is highly recommended to to enable isolcpus (via ComputeKernelArgs) on compute overcloud nodes and set the following parameters:
+    ## It is highly recommended to to enable isolcpus (via KernelArgs) on compute overcloud nodes and set the following parameters:
     #OvsDpdkSocketMemory: ""       # Sets the amount of hugepage memory to assign per NUMA node.
                                    # It is recommended to use the socket closest to the PCIe slot used for the
                                    # desired DPDK NIC.  Format should be comma separated per socket string such as:
                                    # "<socket 0 mem MB>,<socket 1 mem MB>", for example: "1024,0".
-    #OvsDpdkDriverType: "vfio-pci" # Ensure the Overcloud NIC to be used for DPDK supports this UIO/PMD driver.
     #OvsPmdCoreList: ""            # List or range of CPU cores for PMD threads to be pinned to.  Note, NIC
                                    # location to cores on socket, number of hyper-threaded logical cores, and
                                    # desired number of PMD threads can all play a role in configuring this setting.
diff --git a/environments/veritas-hyperscale/cinder-veritas-hyperscale-config.yaml b/environments/veritas-hyperscale/cinder-veritas-hyperscale-config.yaml
new file mode 100644 (file)
index 0000000..eaa6cf7
--- /dev/null
@@ -0,0 +1,18 @@
+# Copyright (c) 2017 Veritas Technologies LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# A Heat environment file which can be used to enable a
+# a Veritas HyperScale backend, configured via puppet
+resource_registry:
+  OS::TripleO::Services::CinderBackendVRTSHyperScale: ../../puppet/services/cinder-backend-veritas-hyperscale.yaml
diff --git a/environments/veritas-hyperscale/veritas-hyperscale-config.yaml b/environments/veritas-hyperscale/veritas-hyperscale-config.yaml
new file mode 100644 (file)
index 0000000..30fe399
--- /dev/null
@@ -0,0 +1,24 @@
+# Copyright (c) 2017 Veritas Technologies LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# A Heat environment file which can be used to install
+# Veritas HyperScale packages for controller.
+resource_registry:
+  OS::TripleO::Services::VRTSHyperScale: ../../puppet/services/veritas-hyperscale-controller.yaml
+
+parameter_defaults:
+  EnablePackageInstall: true
+  VrtsRabbitPassword: ''
+  VrtsKeystonePassword: ''
+  VrtsMysqlPassword: ''
index 346a1d7..4e378b1 100644 (file)
@@ -14,6 +14,9 @@ parameters:
   # otherwise unchanged
   DeployIdentifier:
     type: string
+    default: ''
+    description: >
+      Setting this to a unique value will re-run any deployment tasks which perform configuration on a Heat stack-update.
 
 resources:
 
index 31d0c1e..2f5fcdf 100644 (file)
@@ -14,12 +14,6 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
-  IsolCpusList:
-    default: "0"
-    description: List of cores to be isolated by tuned
-    type: string
-    constraints:
-      - allowed_pattern: "[0-9,-]+"
   OvsEnableDpdk:
     default: false
     description: Whether or not to configure enable DPDK in OVS
@@ -47,12 +41,6 @@ parameters:
       mem>, <socket n mem>", where the value is specified in MB.  For example:
       "1024,0".
     type: string
-  OvsDpdkDriverType:
-    default: "vfio-pci"
-    description: >
-      DPDK Driver type. Ensure the Overcloud NIC to be used for DPDK supports
-      this UIO/PMD driver.
-    type: string
   OvsPmdCoreList:
     description: >
       A list or range of CPU cores for PMD threads to be pinned to.  Note, NIC
@@ -91,10 +79,6 @@ parameters:
     default: ''
     description: Memory allocated for each socket
     type: string
-  NeutronDpdkDriverType:
-    default: "vfio-pci"
-    description: DPDK Driver type
-    type: string
   deployment_actions:
     default: ['CREATE', 'UPDATE']
     type: comma_delimited_list
@@ -105,15 +89,13 @@ parameters:
 
 conditions:
   is_host_config_required: {not: {equals: [{get_param: [RoleParameters, KernelArgs]}, ""]}}
-  # YAQL is enabled in conditions with https://review.openstack.org/#/c/467506/
   is_dpdk_config_required:
     or:
       - yaql:
-        expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
-        data:
-          service_names: {get_param: ServiceNames}
-      - {get_param: OvsEnableDpdk}
-      - {get_param: [RoleParameters, OvsEnableDpdk]}
+          expression: $.data.service_names.contains('neutron_ovs_dpdk_agent')
+          data:
+            service_names: {get_param: ServiceNames}
+      - {equals: [{get_param: [RoleParameters, OvsEnableDpdk]}, true]}
   is_reboot_config_required:
     or:
       - is_host_config_required
@@ -122,8 +104,6 @@ conditions:
   pmd_cores_empty: {equals: [{get_param: OvsPmdCoreList}, '']}
   mem_channels_empty: {equals: [{get_param: OvsDpdkMemoryChannels}, '']}
   socket_mem_empty: {equals: [{get_param: OvsDpdkSocketMemory}, '']}
-  driver_not_set: {equals: [{get_param: OvsDpdkDriverType}, 'vfio-pci']}
-  isol_cpus_empty: {equals: [{get_param: IsolCpusList}, '0']}
   deployment_actions_empty:
     equals:
       - {get_param: deployment_actions}
@@ -137,19 +117,15 @@ resources:
       value:
         map_replace:
           - map_replace:
-            - IsolCpusList: IsolCpusList
-              OvsDpdkCoreList: OvsDpdkCoreList
+            - OvsDpdkCoreList: OvsDpdkCoreList
               OvsDpdkMemoryChannels: OvsDpdkMemoryChannels
               OvsDpdkSocketMemory: OvsDpdkSocketMemory
-              OvsDpdkDriverType: OvsDpdkDriverType
-              OvsPmdCoreList: OvsDpdkCoreList
+              OvsPmdCoreList: OvsPmdCoreList
             - values: {get_param: [RoleParameters]}
           - values:
-              IsolCpusList: {if: [isol_cpus_empty, {get_param: HostCpusList}, {get_param: IsolCpusList}]}
               OvsDpdkCoreList: {if: [l_cores_empty, {get_param: HostCpusList}, {get_param: OvsDpdkCoreList}]}
               OvsDpdkMemoryChannels: {if: [mem_channels_empty, {get_param: NeutronDpdkMemoryChannels}, {get_param: OvsDpdkMemoryChannels}]}
               OvsDpdkSocketMemory: {if: [socket_mem_empty, {get_param: NeutronDpdkSocketMemory}, {get_param: OvsDpdkSocketMemory}]}
-              OvsDpdkDriverType: {if: [driver_not_set, {get_param: NeutronDpdkDriverType}, {get_param: OvsDpdkDriverType}]}
               OvsPmdCoreList: {if: [pmd_cores_empty, {get_param: NeutronDpdkCoreList}, {get_param: OvsPmdCoreList}]}
 
   HostParametersConfig:
@@ -243,7 +219,11 @@ resources:
       name: EnableDpdkDeployment
       server:  {get_param: server}
       config: {get_resource: EnableDpdkConfig}
-      actions: ['CREATE'] # Only do this on CREATE
+      actions:
+        if:
+          - deployment_actions_empty
+          - []
+          - ['CREATE'] # Only do this on CREATE
 
   RebootConfig:
     type: OS::Heat::SoftwareConfig
index a1220d3..dad8a0b 100644 (file)
@@ -161,6 +161,7 @@ resource_registry:
   OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
   OS::TripleO::Services::NeutronLinuxbridgeAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
+  OS::TripleO::Services::ComputeNeutronOvsDpdk: OS::Heat::None
   OS::TripleO::Services::Pacemaker: OS::Heat::None
   OS::TripleO::Services::PacemakerRemote: OS::Heat::None
   OS::TripleO::Services::NeutronSriovAgent: OS::Heat::None
@@ -257,6 +258,7 @@ resource_registry:
   OS::TripleO::Services::CinderBackendDellSc: OS::Heat::None
   OS::TripleO::Services::CinderBackendNetApp: OS::Heat::None
   OS::TripleO::Services::CinderBackendScaleIO: OS::Heat::None
+  OS::TripleO::Services::CinderBackendVRTSHyperScale: OS::Heat::None
   OS::TripleO::Services::CinderHPELeftHandISCSI: OS::Heat::None
   OS::TripleO::Services::Etcd: OS::Heat::None
   OS::TripleO::Services::Ec2Api: OS::Heat::None
@@ -272,6 +274,7 @@ resource_registry:
   OS::TripleO::Services::CertmongerUser: OS::Heat::None
   OS::TripleO::Services::Iscsid: OS::Heat::None
   OS::TripleO::Services::Clustercheck: OS::Heat::None
+  OS::TripleO::Services::VRTSHyperScale: OS::Heat::None
 
 parameter_defaults:
   EnablePackageInstall: false
index b29a8a9..24aa152 100644 (file)
@@ -45,6 +45,7 @@ parameters:
       perform configuration on a Heat stack-update.
   UpdateIdentifier:
     type: string
+    default: ''
     description: >
       Setting to a previously unused value during stack-update will trigger
       package update on all nodes
index 574c41b..625ff4d 100644 (file)
@@ -18,6 +18,7 @@ parameters:
     type: json
   UpdateIdentifier:
     type: string
+    default: ''
     description: >
       Setting to a previously unused value during stack-update will trigger
       the Upgrade resources to re-run on all roles.
index 3d07101..542af42 100644 (file)
@@ -36,7 +36,7 @@ resources:
   {{role.name}}Config:
     type: OS::TripleO::{{role.name}}Config
     properties:
-      StepConfig: {list_join: ["\n", {get_param: [role_data, {{role.name}}, step_config]}]}
+      StepConfig: {get_param: [role_data, {{role.name}}, step_config]}
 
   # Step through a series of configuration steps
 {% for step in range(1, deploy_steps_max) %}
@@ -139,6 +139,7 @@ resources:
                 {%- for r in roles %}
                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
                 {%- endfor %}
+            evaluate_env: false
         UPDATE:
           workflow: { get_resource: WorkflowTasks_Step{{step}} }
           params:
@@ -148,6 +149,7 @@ resources:
                 {%- for r in roles %}
                 {{r.name}}: {get_param: [role_data, {{r.name}}, merged_config_settings]}
                 {%- endfor %}
+            evaluate_env: false
       always_update: true
 {% endfor %}
 # END service_workflow_tasks handling
index 3e4f5b4..4fe6e90 100644 (file)
@@ -172,6 +172,6 @@ outputs:
           until: ceph_quorum_nodecheck.rc == 0
           retries: {get_param: CephValidationRetries}
           delay: {get_param: CephValidationDelay}
-        - name: set crush tunables
+        - name: ceph osd crush tunables default
           tags: step0
-          shell: ceph osd crush tunables optimal
+          shell: ceph osd crush tunables default
diff --git a/puppet/services/cinder-backend-veritas-hyperscale.yaml b/puppet/services/cinder-backend-veritas-hyperscale.yaml
new file mode 100644 (file)
index 0000000..11ceb2f
--- /dev/null
@@ -0,0 +1,56 @@
+# Copyright (c) 2017 Veritas Technologies LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+heat_template_version: ocata
+
+description: >
+  Openstack Veritas HyperScale backend
+
+parameters:
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
+
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  RoleName:
+    default: ''
+    description: Role name on which the service is applied
+    type: string
+  RoleParameters:
+    default: {}
+    description: Parameters specific to the role
+    type: json
+  EndpointMap:
+    default: {}
+    type: json
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+
+outputs:
+  role_data:
+    description: Role data for the Cinder Veritas HyperScale backend.
+    value:
+      service_name: cinder_backend_veritas_hyperscale
+      config_settings:
+        tripleo::profile::base::cinder::volume::cinder_enable_vrts_hs_backend: true
+      step_config: |
+        include ::tripleo::profile::base::cinder::volume
index 31a4d3e..f5d38b6 100644 (file)
@@ -37,6 +37,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
   CongressDebug:
     default: ''
     description: Set to True to enable debugging Glance service.
index d5056c6..85fdb36 100644 (file)
@@ -61,7 +61,7 @@ parameters:
       path: /var/log/ec2api/ec2api.log
   EnablePackageInstall:
     default: 'false'
-    description: Set to true to enable package installation via Puppet
+    description: Set to true to enable package installation at deploy time
     type: boolean
   Ec2ApiPolicies:
     description: |
index 136c0ad..8796209 100644 (file)
@@ -67,6 +67,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
   KeystoneDebug:
     default: ''
     description: Set to True to enable debugging Keystone service.
index 0d56b3b..a3baf71 100644 (file)
@@ -34,6 +34,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
   MonitoringSubscriptionNeutronL3Dvr:
     default: 'overcloud-neutron-l3-dvr'
     type: string
index 8237133..7ccf526 100644 (file)
@@ -33,6 +33,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
   NeutronL3AgentMode:
     description: |
       Agent mode for L3 agent. Must be one of legacy or dvr_snat.
index d98d162..dd757b5 100644 (file)
@@ -53,8 +53,8 @@ parameters:
     default: 'datacentre:1:1000'
     description: >
       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
-      Neutron documentation for permitted values. Defaults to permitting any
-      VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
+      Neutron documentation for permitted values. Defaults to permitting VLANs
+      1 to 1000 on the 'datacentre' physical network (See NeutronBridgeMappings).
     type: comma_delimited_list
   NeutronTunnelIdRanges:
     description: |
index 7661dd2..541a2eb 100644 (file)
@@ -37,6 +37,7 @@ parameters:
   Debug:
     type: string
     default: ''
+    description: Set to True to enable debugging on all services.
   TackerDebug:
     default: ''
     description: Set to True to enable debugging Tacker service.
index e52dd71..e471c2a 100644 (file)
@@ -32,7 +32,7 @@ parameters:
     type: json
   EnablePackageInstall:
     default: 'false'
-    description: Set to true to enable package installation via Puppet
+    description: Set to true to enable package installation at deploy time
     type: boolean
 
 outputs:
diff --git a/puppet/services/veritas-hyperscale-controller.yaml b/puppet/services/veritas-hyperscale-controller.yaml
new file mode 100644 (file)
index 0000000..bcb9e38
--- /dev/null
@@ -0,0 +1,70 @@
+# Copyright (c) 2017 Veritas Technologies LLC.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+heat_template_version: ocata
+
+description: >
+  Openstack Veritas HyperScale backend
+
+parameters:
+  VrtsRabbitPassword:
+    type: string
+    default: ''
+  VrtsKeystonePassword:
+    type: string
+    default: ''
+  VrtsMysqlPassword:
+    type: string
+    default: ''
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  RoleName:
+    default: ''
+    description: Role name on which the service is applied
+    type: string
+  RoleParameters:
+    default: {}
+    description: Parameters specific to the role
+    type: json
+  EndpointMap:
+    default: {}
+    type: json
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+
+outputs:
+  role_data:
+    description: Install Veritas HyperScale packages for controller.
+    value:
+      service_name: veritas_hyperscale_controller
+      config_settings:
+      step_config: |
+        include ::veritas_hyperscale::controller_pkg_inst
+      service_config_settings:
+        rabbitmq:
+            vrts_rabbitmq_passwd: {get_param: VrtsRabbitPassword}
+        keystone:
+            vrts_keystone_passwd: {get_param: VrtsKeystonePassword}
+        mysql:
+            vrts_mysql_passwd: {get_param: VrtsMysqlPassword}
diff --git a/releasenotes/notes/composable-veritas-hyperscale-driver-e7f0a35d7d9a8df1.yaml b/releasenotes/notes/composable-veritas-hyperscale-driver-e7f0a35d7d9a8df1.yaml
new file mode 100644 (file)
index 0000000..3c17e24
--- /dev/null
@@ -0,0 +1,3 @@
+---
+features:
+  - Add support for Veritas HyperScale Cinder backend.
diff --git a/releasenotes/notes/computeovsdpdk-role-67d53a405ce4174b.yaml b/releasenotes/notes/computeovsdpdk-role-67d53a405ce4174b.yaml
new file mode 100644 (file)
index 0000000..ec7f40c
--- /dev/null
@@ -0,0 +1,4 @@
+---
+features:
+  - A new role ComputeOvsDpdk has been added to enable dynamic roles_data
+    creation with OVS-DPDK role.
index b011740..3779d23 100644 (file)
@@ -13,6 +13,7 @@
     - OS::TripleO::Services::BlockStorageCinderVolume
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CertmongerUser
+    - OS::TripleO::Services::CinderBackendVRTSHyperScale
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::Docker
     - OS::TripleO::Services::FluentdClient
diff --git a/roles/ComputeOvsDpdk.yaml b/roles/ComputeOvsDpdk.yaml
new file mode 100644 (file)
index 0000000..7c3cd21
--- /dev/null
@@ -0,0 +1,41 @@
+###############################################################################
+# Role: ComputeOvsDpdk                                                        #
+###############################################################################
+- name: ComputeOvsDpdk
+  description: |
+    Compute OvS DPDK Role
+  CountDefault: 1
+  networks:
+    - InternalApi
+    - Tenant
+    - Storage
+  HostnameFormatDefault: '%stackname%-computeovsdpdk-%index%'
+  disable_upgrade_deployment: True
+  ServicesDefault:
+    - OS::TripleO::Services::AuditD
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::CephClient
+    - OS::TripleO::Services::CephExternal
+    - OS::TripleO::Services::CertmongerUser
+    - OS::TripleO::Services::Collectd
+    - OS::TripleO::Services::ComputeCeilometerAgent
+    - OS::TripleO::Services::ComputeNeutronCorePlugin
+    - OS::TripleO::Services::ComputeNeutronL3Agent
+    - OS::TripleO::Services::ComputeNeutronMetadataAgent
+    - OS::TripleO::Services::ComputeNeutronOvsDpdk
+    - OS::TripleO::Services::Docker
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::Iscsid
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::MySQLClient
+    - OS::TripleO::Services::NovaCompute
+    - OS::TripleO::Services::NovaLibvirt
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::OpenDaylightOvs
+    - OS::TripleO::Services::Securetty
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::TripleoPackages
index e3af321..34a23b4 100644 (file)
@@ -40,6 +40,7 @@
     - OS::TripleO::Services::CinderBackendDellSc
     - OS::TripleO::Services::CinderBackendNetApp
     - OS::TripleO::Services::CinderBackendScaleIO
+    - OS::TripleO::Services::CinderBackendVRTSHyperScale
     - OS::TripleO::Services::CinderBackup
     - OS::TripleO::Services::CinderHPELeftHandISCSI
     - OS::TripleO::Services::CinderScheduler
index cd1fcb4..5ac716a 100644 (file)
@@ -95,6 +95,7 @@ Example
   BlockStorage
   CephStorage
   Compute
+  ComputeOvsDpdk
   Controller
   ControllerOpenstack
   Database
index fe24a42..1832fe4 100644 (file)
@@ -43,6 +43,7 @@
     - OS::TripleO::Services::CinderBackendDellSc
     - OS::TripleO::Services::CinderBackendNetApp
     - OS::TripleO::Services::CinderBackendScaleIO
+    - OS::TripleO::Services::CinderBackendVRTSHyperScale
     - OS::TripleO::Services::CinderBackup
     - OS::TripleO::Services::CinderHPELeftHandISCSI
     - OS::TripleO::Services::CinderScheduler
     - OS::TripleO::Services::BlockStorageCinderVolume
     - OS::TripleO::Services::CACerts
     - OS::TripleO::Services::CertmongerUser
+    - OS::TripleO::Services::CinderBackendVRTSHyperScale
     - OS::TripleO::Services::Collectd
     - OS::TripleO::Services::Docker
     - OS::TripleO::Services::FluentdClient
index d35cba6..33d12ee 100755 (executable)
@@ -49,8 +49,93 @@ PARAMETER_DEFINITION_EXCLUSIONS = {'ManagementNetCidr': ['default'],
                                    'ExternalAllocationPools': ['default'],
                                    'StorageNetCidr': ['default'],
                                    'StorageAllocationPools': ['default'],
-                                   'StorageMgmtNetCidr': ['default'],
+                                   'StorageMgmtNetCidr': ['default',
+                                                          # FIXME
+                                                          'description'],
                                    'StorageMgmtAllocationPools': ['default'],
+                                   'TenantNetCidr': ['default'],
+                                   'TenantAllocationPools': ['default'],
+                                   'InternalApiNetCidr': ['default'],
+                                   'UpdateIdentifier': ['description'],
+                                   # TODO(bnemec): Address these existing
+                                   # inconsistencies.
+                                   'NeutronMetadataProxySharedSecret': [
+                                       'description', 'hidden'],
+                                   'ServiceNetMap': ['description', 'default'],
+                                   'RedisPassword': ['description'],
+                                   'EC2MetadataIp': ['default'],
+                                   'network': ['default'],
+                                   'ControlPlaneIP': ['default',
+                                                      'description'],
+                                   'ControlPlaneIp': ['default',
+                                                      'description'],
+                                   'NeutronBigswitchLLDPEnabled': ['default'],
+                                   'NeutronEnableL2Pop': ['description'],
+                                   'NeutronWorkers': ['description'],
+                                   'TenantIpSubnet': ['description'],
+                                   'ExternalNetName': ['description'],
+                                   'AdminToken': ['description'],
+                                   'ControlPlaneDefaultRoute': ['default'],
+                                   'StorageMgmtNetName': ['description'],
+                                   'ServerMetadata': ['description'],
+                                   'InternalApiIpUri': ['description'],
+                                   'UpgradeLevelNovaCompute': ['default'],
+                                   'StorageMgmtIpUri': ['description'],
+                                   'server': ['description'],
+                                   'servers': ['description'],
+                                   'FixedIPs': ['description'],
+                                   'ExternalIpSubnet': ['description'],
+                                   'NeutronBridgeMappings': ['description'],
+                                   'ExtraConfig': ['description'],
+                                   'InternalApiIpSubnet': ['description'],
+                                   'DefaultPasswords': ['description',
+                                                        'default'],
+                                   'BondInterfaceOvsOptions': ['description',
+                                                               'default',
+                                                               'constraints'],
+                                   'KeyName': ['constraints'],
+                                   'TenantNetName': ['description'],
+                                   'StorageIpSubnet': ['description'],
+                                   'OVNSouthboundServerPort': ['description'],
+                                   'ExternalInterfaceDefaultRoute':
+                                       ['description', 'default'],
+                                   'ExternalIpUri': ['description'],
+                                   'IPPool': ['description'],
+                                   'ControlPlaneNetwork': ['description'],
+                                   'SSLCertificate': ['description',
+                                                      'default',
+                                                      'hidden'],
+                                   'HostCpusList': ['default', 'constraints'],
+                                   'InternalApiAllocationPools': ['default'],
+                                   'NodeIndex': ['description'],
+                                   'SwiftPassword': ['description'],
+                                   'name': ['description', 'default'],
+                                   'StorageNetName': ['description'],
+                                   'ManagementNetName': ['description'],
+                                   'NeutronPublicInterface': ['description'],
+                                   'RoleParameters': ['description'],
+                                   'AdminPassword': ['description', 'hidden'],
+                                   'ManagementInterfaceDefaultRoute':
+                                       ['default'],
+                                   'NovaPassword': ['description'],
+                                   'image': ['description', 'default'],
+                                   'NeutronBigswitchAgentEnabled': ['default'],
+                                   'EndpointMap': ['description', 'default'],
+                                   'DockerManilaConfigImage': ['description',
+                                                               'default'],
+                                   'NetworkName': ['default', 'description'],
+                                   'StorageIpUri': ['description'],
+                                   'InternalApiNetName': ['description'],
+                                   'NeutronTunnelTypes': ['description'],
+                                   'replacement_policy': ['default'],
+                                   'StorageMgmtIpSubnet': ['description'],
+                                   'CloudDomain': ['description', 'default'],
+                                   'key_name': ['default', 'description'],
+                                   'EnableLoadBalancer': ['description'],
+                                   'ControllerExtraConfig': ['description'],
+                                   'NovaComputeExtraConfig': ['description'],
+                                   'controllerExtraConfig': ['description'],
+                                   'DockerSwiftConfigImage': ['default'],
                                    }
 
 PREFERRED_CAMEL_CASE = {
@@ -424,10 +509,8 @@ for p, defs in param_map.items():
     # If all items in the list are not == the first, then the check fails
     if check_data.count(check_data[0]) != len(check_data):
         mismatch_count += 1
-        # TODO(bnemec): Make this a hard failure once all the templates have
-        #               been fixed.
-        #exit_val |= 1
-        #failed_files.extend([d['filename'] for d in defs])
+        exit_val |= 1
+        failed_files.extend([d['filename'] for d in defs])
         print('Mismatched parameter definitions found for "%s"' % p)
         print('Definitions found:')
         for d in defs: