Merge "Enable Zaqar API SSL"
authorJenkins <jenkins@review.openstack.org>
Fri, 28 Jul 2017 15:46:58 +0000 (15:46 +0000)
committerGerrit Code Review <review@openstack.org>
Fri, 28 Jul 2017 15:46:58 +0000 (15:46 +0000)
105 files changed:
ci/environments/scenario004-multinode-containers.yaml
docker/README-containers.md
docker/deploy-steps-playbook.yaml
docker/services/ceph-ansible/ceph-base.yaml [new file with mode: 0644]
docker/services/ceph-ansible/ceph-client.yaml [moved from puppet/services/network/contrail-provision.yaml with 73% similarity]
docker/services/ceph-ansible/ceph-mon.yaml [new file with mode: 0644]
docker/services/ceph-ansible/ceph-osd.yaml [new file with mode: 0644]
docker/services/cinder-api.yaml
docker/services/cinder-backup.yaml
docker/services/cinder-volume.yaml
docker/services/collectd.yaml
docker/services/glance-api.yaml
docker/services/gnocchi-metricd.yaml
docker/services/haproxy.yaml
docker/services/heat-api-cfn.yaml
docker/services/heat-api.yaml
docker/services/keystone.yaml
docker/services/manila-share.yaml
docker/services/nova-api.yaml
docker/services/nova-compute.yaml
docker/services/nova-libvirt.yaml
docker/services/pacemaker/database/mysql.yaml
docker/services/pacemaker/database/redis.yaml
docker/services/pacemaker/rabbitmq.yaml
docker/services/swift-storage.yaml
environments/ceph-ansible/ceph-ansible.yaml [new file with mode: 0644]
environments/cinder-dellps-config.yaml
environments/contrail/contrail-net-storage-mgmt.yaml [new file with mode: 0644]
environments/contrail/contrail-net.yaml
environments/contrail/contrail-services.yaml
environments/contrail/roles_data_contrail.yaml
environments/docker-ha.yaml
environments/hyperconverged-ceph.yaml
environments/overcloud-baremetal.j2.yaml
environments/overcloud-services.yaml
environments/puppet-ceph.yaml
environments/split-stack-consistent-hostname-format.j2.yaml [new file with mode: 0644]
environments/ssl/tls-endpoints-public-dns.yaml
environments/ssl/tls-endpoints-public-ip.yaml
environments/ssl/tls-everywhere-endpoints-dns.yaml
environments/storage/enable-ceph.yaml
environments/tls-endpoints-public-dns.yaml
environments/tls-endpoints-public-ip.yaml
environments/tls-everywhere-endpoints-dns.yaml
environments/veritas-hyperscale/veritas-hyperscale-config.yaml
extraconfig/all_nodes/contrail/enable_contrail_repo.yaml [new file with mode: 0644]
extraconfig/pre_network/contrail/compute_pre_network.yaml [new file with mode: 0644]
extraconfig/pre_network/contrail/contrail_dpdk_pre_network.yaml [new file with mode: 0644]
firstboot/install_vrouter_kmod.yaml [deleted file]
network/config/contrail/contrail-nic-config-compute.yaml [moved from environments/contrail/contrail-nic-config-compute.yaml with 100% similarity]
network/config/contrail/contrail-nic-config.yaml [new file with mode: 0644]
network/endpoints/endpoint_data.yaml
network/endpoints/endpoint_map.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/major_upgrade_steps.j2.yaml
puppet/role.role.j2.yaml
puppet/services/aodh-api.yaml
puppet/services/ceph-rgw.yaml
puppet/services/cinder-backend-dellps.yaml
puppet/services/database/mysql.yaml
puppet/services/database/redis-base.yaml
puppet/services/external-swift-proxy.yaml
puppet/services/haproxy.yaml
puppet/services/heat-api-cfn.yaml
puppet/services/manila-scheduler.yaml
puppet/services/monitoring/sensu-client.yaml
puppet/services/network/contrail-analytics.yaml
puppet/services/network/contrail-base.yaml
puppet/services/network/contrail-config.yaml
puppet/services/network/contrail-control.yaml
puppet/services/network/contrail-dpdk.yaml [new file with mode: 0644]
puppet/services/network/contrail-neutron-plugin.yaml
puppet/services/network/contrail-tsn.yaml
puppet/services/network/contrail-vrouter.yaml
puppet/services/network/contrail-webui.yaml
puppet/services/neutron-api.yaml
puppet/services/neutron-compute-plugin-nuage.yaml
puppet/services/nova-api.yaml
puppet/services/nova-base.yaml
puppet/services/nova-placement.yaml
puppet/services/swift-proxy.yaml
puppet/services/swift-storage.yaml
puppet/services/tuned.yaml [new file with mode: 0644]
puppet/services/veritas-hyperscale-controller.yaml
releasenotes/notes/ceph-ansible-workflow-70f7d52faf4cd419.yaml [new file with mode: 0644]
releasenotes/notes/contrail-bugfixes-and-dpdk-enabling-0233a06e23259660.yaml [new file with mode: 0644]
releasenotes/notes/ps-san_private_key-5aa111e7907ba600.yaml [new file with mode: 0644]
releasenotes/notes/tuned-service-650c0eec1cf12a4d.yaml [new file with mode: 0644]
roles/BlockStorage.yaml
roles/CephStorage.yaml
roles/Compute.yaml
roles/ComputeHCI.yaml
roles/Controller.yaml
roles/ControllerOpenstack.yaml
roles/Database.yaml
roles/IronicConductor.yaml
roles/Messaging.yaml
roles/Networker.yaml
roles/ObjectStorage.yaml
roles/Telemetry.yaml
roles/Undercloud.yaml
roles_data.yaml
roles_data_undercloud.yaml
sample-env-generator/storage.yaml
tools/yaml-validate.py

index b94a7f7..6d795f9 100644 (file)
@@ -16,8 +16,7 @@ resource_registry:
   OS::TripleO::Services::SwiftRingBuilder: OS::Heat::None
   OS::TripleO::Services::ManilaApi: ../../docker/services/manila-api.yaml
   OS::TripleO::Services::ManilaScheduler: ../../docker/services/manila-scheduler.yaml
-  # NOTE: being containerized here: https://review.openstack.org/#/c/471527/
-  OS::TripleO::Services::ManilaShare: ../../puppet/services/manila-share.yaml
+  OS::TripleO::Services::ManilaShare: ../../docker/services/manila-share.yaml
   OS::TripleO::Services::ManilaBackendCephFs: ../../puppet/services/manila-backend-cephfs.yaml
   # TODO: containerize NeutronBgpVpnApi
   OS::TripleO::Services::NeutronBgpVpnApi: ../../puppet/services/neutron-bgpvpn-api.yaml
index 5a9f6f3..376af3e 100644 (file)
@@ -1,58 +1,3 @@
-# Using Docker Containers With TripleO
+# Containers based OpenStack deployment
 
-## Configuring TripleO with to use a container based compute node.
-
-Steps include:
-- Adding a base OS image to glance
-- Deploy an overcloud configured to use the docker compute heat templates
-
-## Getting base OS image working.
-
-Download the fedora atomic image into glance:
-
-```
-wget https://download.fedoraproject.org/pub/fedora/linux/releases/22/Cloud/x86_64/Images/Fedora-Cloud-Atomic-22-20150521.x86_64.qcow2
-glance image-create --name atomic-image --file Fedora-Cloud-Atomic-22-20150521.x86_64.qcow2 --disk-format qcow2 --container-format bare
-```
-
-## Configuring TripleO
-
-You can use the tripleo.sh script up until the point of running the Overcloud.
-https://github.com/openstack/tripleo-common/blob/master/scripts/tripleo.sh
-
-You will want to set up the runtime puppet script delivery system described here:
-http://hardysteven.blogspot.ca/2016/08/tripleo-deploy-artifacts-and-puppet.html
-
-Create the Overcloud:
-```
-$ openstack overcloud deploy --templates=tripleo-heat-templates -e tripleo-heat-templates/environments/docker.yaml -e tripleo-heat-templates/environments/docker-network.yaml --libvirt-type=qemu
-```
-
-Using Network Isolation in the Overcloud:
-```
-$ openstack overcloud deploy --templates=tripleo-heat-templates -e tripleo-heat-templates/environments/docker.yaml -e tripleo-heat-templates/environments/docker-network-isolation.yaml --libvirt-type=qemu
-```
-
-Source the overcloudrc and then you can use the overcloud.
-
-## Debugging
-
-You can ssh into the controller/compute nodes by using the heat key, eg:
-```
-nova list
-ssh heat-admin@<compute_node_ip>
-```
-
-You can check to see what docker containers are running:
-```
-sudo docker ps -a
-```
-
-To enter a container that doesn't seem to be working right:
-```
-sudo docker exec -ti <container name> /bin/bash
-```
-
-Then you can check logs etc.
-
-You can also just do a 'docker logs' on a given container.
+https://docs.openstack.org/tripleo-docs/latest/install/containers_deployment/
index cd7d5b5..b884e0e 100644 (file)
@@ -10,7 +10,7 @@
       command: >-
         puppet apply
         --modulepath=/etc/puppet/modules:/opt/stack/puppet-modules:/usr/share/openstack-puppet/modules
-        --logdest syslog --color=false
+        --logdest syslog --logdest console --color=false
         /var/lib/tripleo-config/puppet_step_config.pp
       changed_when: false
       check_mode: no
diff --git a/docker/services/ceph-ansible/ceph-base.yaml b/docker/services/ceph-ansible/ceph-base.yaml
new file mode 100644 (file)
index 0000000..1468415
--- /dev/null
@@ -0,0 +1,205 @@
+heat_template_version: pike
+
+description: >
+  Ceph base service. Shared by all Ceph services.
+
+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: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CephAnsibleWorkflowName:
+    type: string
+    description: Name of the Mistral workflow to execute
+    default: tripleo.storage.v1.ceph-install
+  CephAnsiblePlaybook:
+    type: string
+    description: Path to the ceph-ansible playbook to execute
+    default: /usr/share/ceph-ansible/site-docker.yml.sample
+  CephAnsibleExtraConfig:
+    type: json
+    description: Extra vars for the ceph-ansible playbook
+    default: {}
+  CephClusterFSID:
+    type: string
+    description: The Ceph cluster FSID. Must be a UUID.
+  CephPoolDefaultPgNum:
+    description: default pg_num to use for the RBD pools
+    type: number
+    default: 32
+  CephPools:
+    description: >
+      It can be used to override settings for one of the predefined pools, or to create
+      additional ones. Example:
+      {
+        "volumes": {
+          "size": 5,
+          "pg_num": 128,
+          "pgp_num": 128
+         }
+      }
+    default: {}
+    type: json
+  CinderRbdPoolName:
+    default: volumes
+    type: string
+  CinderBackupRbdPoolName:
+    default: backups
+    type: string
+  GlanceRbdPoolName:
+    default: images
+    type: string
+  GnocchiRbdPoolName:
+    default: metrics
+    type: string
+  NovaRbdPoolName:
+    default: vms
+    type: string
+  CephClientKey:
+    description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
+    type: string
+    hidden: true
+  CephClientUserName:
+    default: openstack
+    type: string
+  CephPoolDefaultSize:
+    description: default minimum replication for RBD copies
+    type: number
+    default: 3
+  CephIPv6:
+    default: False
+    type: boolean
+  DockerCephDaemonImage:
+    description: image
+    type: string
+    default: 'ceph/daemon:tag-build-master-jewel-centos-7'
+
+conditions:
+  custom_registry_host:
+    yaql:
+      data: {get_param: DockerCephDaemonImage}
+      expression: $.data.split('/')[0].matches('(\.|:)')
+
+outputs:
+  role_data:
+    description: Role data for the Ceph base service.
+    value:
+      service_name: ceph_base
+      upgrade_tasks: []
+      step_config: ''
+      puppet_config:
+        config_image: ''
+        config_volume: ''
+        step_config: ''
+      docker_config: {}
+      service_workflow_tasks:
+        step2:
+          - name: ceph_base_ansible_workflow
+            workflow: { get_param: CephAnsibleWorkflowName }
+            input:
+              ceph_ansible_extra_vars: {get_param: CephAnsibleExtraConfig}
+              ceph_ansible_playbook: {get_param: CephAnsiblePlaybook}
+      config_settings:
+        ceph_common_ansible_vars:
+          fsid: { get_param: CephClusterFSID }
+          docker: true
+          ceph_docker_registry:
+            if:
+            - custom_registry_host
+            - yaql:
+                expression: regex('(?:https?://)?(.*)/').split($.data)[1]
+                data: {str_split: [':', {get_param: DockerCephDaemonImage}, 0]}
+            - docker.io
+          ceph_docker_image:
+            if:
+            - custom_registry_host
+            - yaql:
+                expression: regex('(?:https?://)?(.*)/').split($.data)[2]
+                data: {str_split: [':', {get_param: DockerCephDaemonImage}, 0]}
+            - {str_split: [':', {get_param: DockerCephDaemonImage}, 0]}
+          ceph_docker_image_tag: {str_split: [':', {get_param: DockerCephDaemonImage}, 1]}
+          containerized_deployment: true
+          public_network: {get_param: [ServiceData, net_cidr_map, {get_param: [ServiceNetMap, CephMonNetwork]}]}
+          cluster_network: {get_param: [ServiceData, net_cidr_map, {get_param: [ServiceNetMap, CephClusterNetwork]}]}
+          user_config: true
+          ceph_stable: true
+          ceph_origin: distro
+          openstack_config: true
+          openstack_pools:
+            list_concat:
+              - repeat:
+                  template:
+                    name: <%pool%>
+                    pg_num: {get_param: CephPoolDefaultPgNum}
+                    rule_name: ""
+                  for_each:
+                    <%pool%>:
+                      - {get_param: CinderRbdPoolName}
+                      - {get_param: CinderBackupRbdPoolName}
+                      - {get_param: NovaRbdPoolName}
+                      - {get_param: GlanceRbdPoolName}
+                      - {get_param: GnocchiRbdPoolName}
+              - repeat:
+                  template:
+                    name: <%pool%>
+                    pg_num: {get_param: CephPoolDefaultPgNum}
+                    rule_name: ""
+                  for_each:
+                    <%pool%>: {get_param: CephPools}
+          openstack_keys: &openstack_keys
+          - name:
+              list_join:
+              - '.'
+              - - client
+                - {get_param: CephClientUserName}
+            key: {get_param: CephClientKey}
+            mon_cap: "allow r"
+            osd_cap:
+              str_replace:
+               template: "allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL"
+               params:
+                 NOVA_POOL: {get_param: NovaRbdPoolName}
+                 CINDER_POOL: {get_param: CinderRbdPoolName}
+                 CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
+                 GLANCE_POOL: {get_param: GlanceRbdPoolName}
+                 GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
+            acls:
+            - "u:glance:r--"
+            - "u:nova:r--"
+            - "u:cinder:r--"
+            - "u:gnocchi:r--"
+          keys: *openstack_keys
+          pools: []
+          ceph_conf_overrides:
+            global:
+              osd_pool_default_size: {get_param: CephPoolDefaultSize}
+              osd_pool_default_pg_num: {get_param: CephPoolDefaultPgNum}
+          ntp_service_enabled: false
+          generate_fsid: false
+          ip_version:
+            if:
+            - {get_param: CephIPv6}
+            - ipv6
+            - ipv4
@@ -1,7 +1,7 @@
 heat_template_version: pike
 
 description: >
-  Provision Contrail services after deployment
+  Ceph Client service.
 
 parameters:
   ServiceData:
@@ -32,8 +32,8 @@ parameters:
     type: json
 
 resources:
-  ContrailBase:
-    type: ./contrail-base.yaml
+  CephBase:
+    type: ./ceph-base.yaml
     properties:
       ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
@@ -44,11 +44,15 @@ resources:
 
 outputs:
   role_data:
-    description: Contrail provisioning role
+    description: Role data for the Ceph Client service.
     value:
-      service_name: contrail_provision
-      config_settings:
-        map_merge:
-          - get_attr: [ContrailBase, role_data, config_settings]
-      step_config: |
-        include ::tripleo::network::contrail::provision
+      service_name: ceph_client
+      upgrade_tasks: []
+      step_config: ''
+      puppet_config:
+        config_image: ''
+        config_volume: ''
+        step_config: ''
+      docker_config: {}
+      service_workflow_tasks: {get_attr: [CephBase, role_data, service_workflow_tasks]}
+      config_settings: {}
diff --git a/docker/services/ceph-ansible/ceph-mon.yaml b/docker/services/ceph-ansible/ceph-mon.yaml
new file mode 100644 (file)
index 0000000..90149d1
--- /dev/null
@@ -0,0 +1,86 @@
+heat_template_version: pike
+
+description: >
+  Ceph Monitor service.
+
+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: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CephMonKey:
+    description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
+    type: string
+    hidden: true
+  CephAdminKey:
+    default: ''
+    description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
+    type: string
+    hidden: true
+  CephValidationRetries:
+    type: number
+    default: 40
+    description: Number of retry attempts for Ceph validation
+  CephValidationDelay:
+    type: number
+    default: 30
+    description: Interval (in seconds) in between validation checks
+
+resources:
+  CephBase:
+    type: ./ceph-base.yaml
+    properties:
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+outputs:
+  role_data:
+    description: Role data for the Ceph Monitor service.
+    value:
+      service_name: ceph_mon
+      upgrade_tasks: []
+      step_config: ''
+      puppet_config:
+        config_image: ''
+        config_volume: ''
+        step_config: ''
+      docker_config: {}
+      service_workflow_tasks: {get_attr: [CephBase, role_data, service_workflow_tasks]}
+      config_settings:
+        map_merge:
+        - tripleo.ceph_mon.firewall_rules:
+            '110 ceph_mon':
+              dport:
+              - 6789
+        - ceph_mon_ansible_vars:
+            map_merge:
+            - {get_attr: [CephBase, role_data, config_settings, ceph_common_ansible_vars]}
+            - monitor_secret: {get_param: CephMonKey}
+              admin_secret: {get_param: CephAdminKey}
+              monitor_interface: br_ex
diff --git a/docker/services/ceph-ansible/ceph-osd.yaml b/docker/services/ceph-ansible/ceph-osd.yaml
new file mode 100644 (file)
index 0000000..6e0f4a6
--- /dev/null
@@ -0,0 +1,75 @@
+heat_template_version: pike
+
+description: >
+  Ceph OSD service.
+
+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: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CephAnsibleDisksConfig:
+    type: json
+    description: Disks config settings for ceph-ansible
+    default:
+      devices:
+      - /dev/vdb
+      journal_size: 512
+      journal_collocation: true
+
+resources:
+  CephBase:
+    type: ./ceph-base.yaml
+    properties:
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+outputs:
+  role_data:
+    description: Role data for the Ceph OSD service.
+    value:
+      service_name: ceph_osd
+      upgrade_tasks: []
+      step_config: ''
+      puppet_config:
+        config_image: ''
+        config_volume: ''
+        step_config: ''
+      docker_config: {}
+      service_workflow_tasks: {get_attr: [CephBase, role_data, service_workflow_tasks]}
+      config_settings:
+        map_merge:
+        - tripleo.ceph_osd.firewall_rules:
+            '111 ceph_osd':
+              dport:
+              - '6800-7300'
+        - ceph_osd_ansible_vars:
+            map_merge:
+            - {get_attr: [CephBase, role_data, config_settings, ceph_common_ansible_vars]}
+            - {get_param: CephAnsibleDisksConfig}
\ No newline at end of file
index 0cd1dd7..7804fdb 100644 (file)
@@ -86,6 +86,17 @@ outputs:
             - path: /var/log/cinder
               owner: cinder:cinder
               recurse: true
+        /var/lib/kolla/config_files/cinder_api_cron.json:
+          command: /usr/sbin/crond -n
+          config_files:
+            - source: "/var/lib/kolla/config_files/src/*"
+              dest: "/"
+              merge: true
+              preserve_properties: true
+          permissions:
+            - path: /var/log/cinder
+              owner: cinder:cinder
+              recurse: true
       docker_config:
         step_2:
           cinder_api_init_logs:
@@ -140,6 +151,21 @@ outputs:
                       - ''
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+          cinder_api_cron:
+            image: *cinder_api_image
+            net: host
+            privileged: false
+            restart: always
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /var/lib/kolla/config_files/cinder_api_cron.json:/var/lib/kolla/config_files/config.json:ro
+                  - /var/lib/config-data/puppet-generated/cinder/:/var/lib/kolla/config_files/src:ro
+                  - /var/log/containers/cinder:/var/log/cinder
+            environment:
+              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+
       host_prep_tasks:
         - name: create persistent logs directory
           file:
index dc7580a..de637f3 100644 (file)
@@ -72,16 +72,12 @@ outputs:
         /var/lib/kolla/config_files/cinder_backup.json:
           command: /usr/bin/cinder-backup --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf
           config_files:
-            # NOTE(mandre): the copy of ceph conf will need to go once we
-            # generate a ceph.conf for cinder in puppet
-            # Copy ceph config files before cinder ones as a precaution, for
-            # the later one to take precendence in case of duplicate files.
-            - source: "/var/lib/kolla/config_files/src-ceph/*"
+            - source: "/var/lib/kolla/config_files/src/*"
               dest: "/"
               merge: true
               preserve_properties: true
-            - source: "/var/lib/kolla/config_files/src/*"
-              dest: "/"
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
               merge: true
               preserve_properties: true
             - source: "/var/lib/kolla/config_files/src-iscsid/*"
@@ -118,8 +114,8 @@ outputs:
                   - /var/lib/kolla/config_files/cinder_backup.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/cinder/:/var/lib/kolla/config_files/src:ro
                   - /var/lib/config-data/puppet-generated/iscsid/:/var/lib/kolla/config_files/src-iscsid:ro
-                  # FIXME: we need to generate a ceph.conf with puppet for this
                   - /var/lib/config-data/puppet-generated/ceph/:/var/lib/kolla/config_files/src-ceph:ro
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
                   - /dev/:/dev/
                   - /run/:/run/
                   - /sys:/sys
@@ -136,6 +132,10 @@ outputs:
           with_items:
             - /var/lib/cinder
             - /var/log/containers/cinder
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
       upgrade_tasks:
         - name: Stop and disable cinder_backup service
           tags: step2
index 3030019..ce81fbf 100644 (file)
@@ -86,16 +86,12 @@ outputs:
         /var/lib/kolla/config_files/cinder_volume.json:
           command: /usr/bin/cinder-volume --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf
           config_files:
-            # NOTE(mandre): the copy of ceph conf will need to go once we
-            # generate a ceph.conf for cinder in puppet
-            # Copy ceph config files before cinder ones as a precaution, for
-            # the later one to take precendence in case of duplicate files.
-            - source: "/var/lib/kolla/config_files/src-ceph/*"
+            - source: "/var/lib/kolla/config_files/src/*"
               dest: "/"
               merge: true
               preserve_properties: true
-            - source: "/var/lib/kolla/config_files/src/*"
-              dest: "/"
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
               merge: true
               preserve_properties: true
             - source: "/var/lib/kolla/config_files/src-iscsid/*"
@@ -129,8 +125,8 @@ outputs:
                   - /var/lib/kolla/config_files/cinder_volume.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/cinder/:/var/lib/kolla/config_files/src:ro
                   - /var/lib/config-data/puppet-generated/iscsid/:/var/lib/kolla/config_files/src-iscsid:ro
-                  # FIXME: we need to generate a ceph.conf with puppet for this
                   - /var/lib/config-data/puppet-generated/ceph/:/var/lib/kolla/config_files/src-ceph:ro
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
                   - /lib/modules:/lib/modules:ro
                   - /dev/:/dev/
                   - /run/:/run/
@@ -147,6 +143,10 @@ outputs:
           with_items:
             - /var/log/containers/cinder
             - /var/lib/cinder
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
         - name: cinder_enable_iscsi_backend fact
           set_fact:
             cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
index 2989729..3c0ba09 100644 (file)
@@ -89,15 +89,17 @@ outputs:
           collectd:
             image: {get_param: DockerCollectdImage}
             net: host
+            pid: host
             privileged: true
+            user: root
             restart: always
             volumes:
               list_concat:
                 - {get_attr: [ContainersCommon, volumes]}
                 -
-                  - /var/run/docker.sock:/var/run/docker.sock:rw
                   - /var/lib/kolla/config_files/collectd.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/collectd/:/var/lib/kolla/config_files/src:ro
+                  - /var/log/containers/collectd:/var/log/collectd:rw
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       host_prep_tasks:
index d88c64b..f4c724b 100644 (file)
@@ -86,6 +86,10 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
+              merge: true
+              preserve_properties: true
         /var/lib/kolla/config_files/glance_api_tls_proxy.json:
           command: /usr/sbin/httpd -DFOREGROUND
           config_files:
@@ -117,6 +121,7 @@ outputs:
                   - /var/lib/kolla/config_files/glance_api.json:/var/lib/kolla/config_files/config.json
                   - /var/lib/config-data/puppet-generated/glance_api/:/var/lib/kolla/config_files/src:ro
                   - /var/log/containers/glance:/var/log/glance
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
             environment:
               - KOLLA_BOOTSTRAP=True
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
@@ -156,6 +161,10 @@ outputs:
           file:
             path: /var/log/containers/glance
             state: directory
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
       upgrade_tasks:
         - name: Stop and disable glance_api service
           tags: step2
index 1a0a1dd..6778543 100644 (file)
@@ -75,6 +75,10 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
+              merge: true
+              preserve_properties: true
           permissions:
             - path: /var/log/gnocchi
               owner: gnocchi:gnocchi
@@ -93,6 +97,7 @@ outputs:
                   - /var/lib/kolla/config_files/gnocchi_metricd.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/gnocchi/:/var/lib/kolla/config_files/src:ro
                   - /var/log/containers/gnocchi:/var/log/gnocchi
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       host_prep_tasks:
@@ -100,6 +105,10 @@ outputs:
           file:
             path: /var/log/containers/gnocchi
             state: directory
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
       upgrade_tasks:
         - name: Stop and disable openstack-gnocchi-metricd service
           tags: step2
index 21baf5c..f080dcb 100644 (file)
@@ -46,7 +46,7 @@ parameters:
         The filepath of the certificate as it will be stored in the controller.
     type: string
   RedisPassword:
-    description: The password for Redis
+    description: The password for the redis service account.
     type: string
     hidden: true
   MonitoringSubscriptionHaproxy:
index aff0f1a..7061289 100644 (file)
@@ -125,8 +125,25 @@ outputs:
             path: /var/log/containers/heat
             state: directory
       upgrade_tasks:
-        - name: Stop and disable heat_api_cfn service
+        - name: Check if heat_api_cfn is deployed
+          command: systemctl is-enabled openstack-heat-api-cfn
+          tags: common
+          ignore_errors: True
+          register: heat_api_cfn_enabled
+        - name: check for heat_api_cfn running under apache (post upgrade)
           tags: step2
-          service: name=httpd state=stopped enabled=no
+          shell: "httpd -t -D DUMP_VHOSTS | grep -q heat_api_cfn_wsgi"
+          register: heat_api_cfn_apache
+          ignore_errors: true
+          changed_when: false
+          check_mode: no
+        - name: Stop heat_api_cfn service (running under httpd)
+          tags: step2
+          service: name=httpd state=stopped
+          when: heat_api_cfn_apache.rc == 0
+        - name: Stop and disable heat_api_cfn service (pre-upgrade not under httpd)
+          tags: step2
+          service: name=openstack-heat-api-cfn state=stopped enabled=no
+          when: heat_api_cfn_enabled.rc == 0
       metadata_settings:
         get_attr: [HeatBase, role_data, metadata_settings]
index d09230f..0bc331c 100644 (file)
@@ -90,6 +90,17 @@ outputs:
             - path: /var/log/heat
               owner: heat:heat
               recurse: true
+        /var/lib/kolla/config_files/heat_api_cron.json:
+          command: /usr/sbin/crond -n
+          config_files:
+            - source: "/var/lib/kolla/config_files/src/*"
+              dest: "/"
+              merge: true
+              preserve_properties: true
+          permissions:
+            - path: /var/log/heat
+              owner: heat:heat
+              recurse: true
       docker_config:
         step_4:
           heat_api:
@@ -119,14 +130,45 @@ outputs:
                       - ''
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
+          heat_api_cron:
+            image: {get_param: DockerHeatApiImage}
+            net: host
+            privileged: false
+            restart: always
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /var/lib/kolla/config_files/heat_api_cron.json:/var/lib/kolla/config_files/config.json:ro
+                  - /var/lib/config-data/puppet-generated/heat_api/:/var/lib/kolla/config_files/src:ro
+                  - /var/log/containers/heat:/var/log/heat
+            environment:
+              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       host_prep_tasks:
         - name: create persistent logs directory
           file:
             path: /var/log/containers/heat
             state: directory
       upgrade_tasks:
-        - name: Stop and disable heat_api service
+        - name: Check is heat_api is deployed
+          command: systemctl is-enabled openstack-heat-api
+          tags: common
+          ignore_errors: True
+          register: heat_api_enabled
+        - name: check for heat_api running under apache (post upgrade)
+          tags: step2
+          shell: "httpd -t -D DUMP_VHOSTS | grep -q heat_api_wsgi"
+          register: heat_api_apache
+          ignore_errors: true
+          changed_when: false
+          check_mode: no
+        - name: Stop heat_api service (running under httpd)
+          tags: step2
+          service: name=httpd state=stopped
+          when: heat_api_apache.rc == 0
+        - name: Stop and disable heat_api service (pre-upgrade not under httpd)
           tags: step2
-          service: name=httpd state=stopped enabled=no
+          service: name=openstack-heat-api state=stopped enabled=no
+          when: heat_api_enabled.rc == 0
       metadata_settings:
         get_attr: [HeatBase, role_data, metadata_settings]
index da04682..7ecfc32 100644 (file)
@@ -98,6 +98,17 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
+        /var/lib/kolla/config_files/keystone_cron.json:
+          command: /usr/sbin/cron -n
+          config_files:
+            - source: "/var/lib/kolla/config_files/src/*"
+              dest: "/"
+              merge: true
+              preserve_properties: true
+          permissions:
+            - path: /var/log/keystone
+              owner: keystone:keystone
+              recurse: true
       docker_config:
         # Kolla_bootstrap/db sync runs before permissions set by kolla_config
         step_2:
@@ -150,6 +161,21 @@ outputs:
             user: root
             command:
               [ 'keystone', '/usr/bin/bootstrap_host_exec', 'keystone' ,'keystone-manage', 'bootstrap', '--bootstrap-password', {get_param: AdminPassword} ]
+          keystone_cron:
+            start_order: 4
+            image: *keystone_image
+            net: host
+            privileged: false
+            restart: always
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /var/lib/kolla/config_files/keystone_cron.json:/var/lib/kolla/config_files/config.json:ro
+                  - /var/lib/config-data/puppet-generated/keystone/:/var/lib/kolla/config_files/src:ro
+                  - /var/log/containers/keystone:/var/log/keystone
+            environment:
+              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       docker_puppet_tasks:
         # Keystone endpoint creation occurs only on single node
         step_3:
index 09d1a57..b427815 100644 (file)
@@ -75,9 +75,8 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
-            # NOTE(gfidente): ceph-ansible generated
-            - source: "/var/lib/kolla/config_files/src-ceph/*"
-              dest: "/etc/ceph"
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
               merge: true
               preserve_properties: true
           permissions:
@@ -97,7 +96,7 @@ outputs:
                    - /var/lib/kolla/config_files/manila_share.json:/var/lib/kolla/config_files/config.json:ro
                    - /var/lib/config-data/puppet-generated/manila/:/var/lib/kolla/config_files/src:ro
                    - /var/log/containers/manila:/var/log/manila
-                   - /etc/ceph/:/var/lib/kolla/config_files/src-ceph:ro
+                   - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       host_prep_tasks:
@@ -105,6 +104,10 @@ outputs:
           file:
             path: /var/log/containers/manila
             state: directory
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
       upgrade_tasks:
         - name: Stop and disable manila_share service
           tags: step2
index 1d73a53..4bec803 100644 (file)
@@ -88,6 +88,17 @@ outputs:
             - path: /var/log/nova
               owner: nova:nova
               recurse: true
+        /var/lib/kolla/config_files/nova_api_cron.json:
+          command: /usr/sbin/crond -n
+          config_files:
+            - source: "/var/lib/kolla/config_files/src/*"
+              dest: "/"
+              merge: true
+              preserve_properties: true
+          permissions:
+            - path: /var/log/nova
+              owner: nova:nova
+              recurse: true
       docker_config:
         # db sync runs before permissions set by kolla_config
         step_2:
@@ -151,7 +162,7 @@ outputs:
             user: nova
             privileged: true
             restart: always
-            volumes: &nova_api_volumes
+            volumes:
               list_concat:
                 - {get_attr: [ContainersCommon, volumes]}
                 -
@@ -164,12 +175,17 @@ outputs:
             image: *nova_api_image
             net: host
             user: root
-            privileged: true
+            privileged: false
             restart: always
-            volumes: *nova_api_volumes
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /var/lib/kolla/config_files/nova_api_cron.json:/var/lib/kolla/config_files/config.json:ro
+                  - /var/lib/config-data/puppet-generated/nova/:/var/lib/kolla/config_files/src:ro
+                  - /var/log/containers/nova:/var/log/nova
             environment:
               - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
-            command: "/usr/sbin/crond -n"
         step_5:
           nova_api_discover_hosts:
             start_order: 1
index 0426eae..c6e848a 100644 (file)
@@ -84,6 +84,10 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
+              merge: true
+              preserve_properties: true
           permissions:
             - path: /var/log/nova
               owner: nova:nova
@@ -107,12 +111,15 @@ outputs:
                   - /var/lib/kolla/config_files/nova_compute.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/nova_libvirt/:/var/lib/kolla/config_files/src:ro
                   - /var/lib/config-data/puppet-generated/iscsid/:/var/lib/kolla/config_files/src-iscsid:ro
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
                   - /dev:/dev
                   - /lib/modules:/lib/modules:ro
                   - /run:/run
                   - /var/lib/nova:/var/lib/nova
                   - /var/lib/libvirt:/var/lib/libvirt
                   - /var/log/containers/nova:/var/log/nova
+                  - /sys/class/net:/sys/class/net
+                  - /sys/bus/pci:/sys/bus/pci
             environment:
              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
       host_prep_tasks:
@@ -124,6 +131,10 @@ outputs:
             - /var/log/containers/nova
             - /var/lib/nova
             - /var/lib/libvirt
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
       upgrade_tasks:
         - name: Stop and disable nova-compute service
           tags: step2
index 5fc7939..973b0eb 100644 (file)
@@ -96,7 +96,7 @@ outputs:
         get_attr: [NovaLibvirtBase, role_data, step_config]
       puppet_config:
         config_volume: nova_libvirt
-        puppet_tags: nova_config,file,exec
+        puppet_tags: libvirtd_config,nova_config,file,exec
         step_config: *step_config
         config_image: {get_param: DockerNovaLibvirtConfigImage}
       kolla_config:
@@ -111,6 +111,10 @@ outputs:
               dest: "/"
               merge: true
               preserve_properties: true
+            - source: "/var/lib/kolla/config_files/src-ceph/"
+              dest: "/etc/ceph/"
+              merge: true
+              preserve_properties: true
           permissions:
             - path: /var/log/nova
               owner: nova:nova
@@ -129,6 +133,7 @@ outputs:
                 -
                   - /var/lib/kolla/config_files/nova_libvirt.json:/var/lib/kolla/config_files/config.json:ro
                   - /var/lib/config-data/puppet-generated/nova_libvirt/:/var/lib/kolla/config_files/src:ro
+                  - /etc/ceph:/var/lib/kolla/config_files/src-ceph:ro
                   - /lib/modules:/lib/modules:ro
                   - /dev:/dev
                   - /run:/run
@@ -153,6 +158,10 @@ outputs:
             - /etc/libvirt/qemu
             - /var/lib/libvirt
             - /var/log/containers/nova
+        - name: ensure ceph configurations exist
+          file:
+            path: /etc/ceph
+            state: directory
         - name: set enable_package_install fact
           set_fact:
             enable_package_install: {get_param: EnablePackageInstall}
index 22c29b2..f12852f 100644 (file)
@@ -65,6 +65,17 @@ outputs:
         map_merge:
           - {get_attr: [MysqlPuppetBase, role_data, config_settings]}
           - tripleo::profile::pacemaker::database::mysql_bundle::mysql_docker_image: &mysql_image {get_param: DockerMysqlImage}
+            tripleo::profile::pacemaker::database::mysql_bundle::control_port: 3123
+            tripleo.mysql.firewall_rules:
+              '104 mysql galera-bundle':
+                dport:
+                  - 873
+                  - 3123
+                  - 3306
+                  - 4444
+                  - 4567
+                  - 4568
+                  - 9200
       step_config: ""
       # BEGIN DOCKER SETTINGS #
       puppet_config:
index df7ae7f..75b6d65 100644 (file)
@@ -61,7 +61,13 @@ outputs:
             redis::notify_service: false
             redis::managed_by_cluster_manager: true
             tripleo::profile::pacemaker::database::redis_bundle::redis_docker_image: &redis_image {get_param: DockerRedisImage}
-
+            tripleo::profile::pacemaker::database::redis_bundle::control_port: 3124
+            tripleo.redis.firewall_rules:
+              '108 redis-bundle':
+                dport:
+                  - 3124
+                  - 6379
+                  - 26379
       step_config: ""
       service_config_settings: {get_attr: [RedisBase, role_data, service_config_settings]}
       # BEGIN DOCKER SETTINGS
index dc56bcc..de53cee 100644 (file)
@@ -63,6 +63,14 @@ outputs:
           - {get_attr: [RabbitmqBase, role_data, config_settings]}
           - rabbitmq::service_manage: false
             tripleo::profile::pacemaker::rabbitmq_bundle::rabbitmq_docker_image: &rabbitmq_image {get_param: DockerRabbitmqImage}
+            tripleo::profile::pacemaker::rabbitmq_bundle::control_port: 3122
+            tripleo.rabbitmq.firewall_rules:
+              '109 rabbitmq-bundle':
+                dport:
+                  - 3122
+                  - 4369
+                  - 5672
+                  - 25672
       step_config: &step_config
         get_attr: [RabbitmqBase, role_data, step_config]
       service_config_settings: {get_attr: [RabbitmqBase, role_data, service_config_settings]}
index 04e58b4..e879b25 100644 (file)
@@ -462,6 +462,7 @@ outputs:
             - openstack-swift-container-updater
             - openstack-swift-container
             - openstack-swift-object-auditor
+            - openstack-swift-object-expirer
             - openstack-swift-object-replicator
             - openstack-swift-object-updater
             - openstack-swift-object
diff --git a/environments/ceph-ansible/ceph-ansible.yaml b/environments/ceph-ansible/ceph-ansible.yaml
new file mode 100644 (file)
index 0000000..2c25828
--- /dev/null
@@ -0,0 +1,12 @@
+resource_registry:
+  OS::TripleO::Services::CephMon: ../../docker/services/ceph-ansible/ceph-mon.yaml
+  OS::TripleO::Services::CephOSD: ../../docker/services/ceph-ansible/ceph-osd.yaml
+  OS::TripleO::Services::CephClient: ../../docker/services/ceph-ansible/ceph-client.yaml
+
+parameter_defaults:
+  CinderEnableIscsiBackend: false
+  CinderEnableRbdBackend: true
+  CinderBackupBackend: ceph
+  NovaEnableRbdBackend: true
+  GlanceBackend: rbd
+  GnocchiBackend: rbd
index eefd0fd..f5adbaf 100644 (file)
@@ -23,6 +23,7 @@ parameter_defaults:
   CinderDellPsSanIp: ''
   CinderDellPsSanLogin: ''
   CinderDellPsSanPassword: ''
+  CinderDellPsSanPrivateKey: ''
   CinderDellPsSanThinProvision: true
   CinderDellPsGroupname: 'group-0'
   CinderDellPsPool: 'default'
diff --git a/environments/contrail/contrail-net-storage-mgmt.yaml b/environments/contrail/contrail-net-storage-mgmt.yaml
new file mode 100644 (file)
index 0000000..b382732
--- /dev/null
@@ -0,0 +1,37 @@
+resource_registry:
+  OS::TripleO::Compute::Net::SoftwareConfig: contrail-nic-config-compute-storage-mgmt.yaml
+  OS::TripleO::ContrailDpdk::Net::SoftwareConfig: contrail-nic-config-compute-storage-mgmt.yaml
+  OS::TripleO::Controller::Net::SoftwareConfig: contrail-nic-config-storage-mgmt.yaml
+  OS::TripleO::ContrailController::Net::SoftwareConfig: contrail-nic-config-storage-mgmt.yaml
+  OS::TripleO::ContrailAnalytics::Net::SoftwareConfig: contrail-nic-config-storage-mgmt.yaml
+  OS::TripleO::ContrailAnalyticsDatabase::Net::SoftwareConfig: contrail-nic-config-storage-mgmt.yaml
+  OS::TripleO::ContrailTsn::Net::SoftwareConfig: contrail-nic-config-compute-storage-mgmt.yaml
+
+parameter_defaults:
+  ContrailConfigVIP: 10.0.0.10
+  ContrailAnalyticsVIP: 10.0.0.10
+  ContrailWebuiVIP: 10.0.0.10
+  ContrailVIP: 10.0.0.10
+  ControlPlaneSubnetCidr: '24'
+  ControlPlaneDefaultRoute: 192.168.24.254
+  InternalApiNetCidr: 10.3.0.0/24
+  InternalApiAllocationPools: [{'start': '10.3.0.10', 'end': '10.3.0.200'}]
+  InternalApiDefaultRoute: 10.3.0.1
+  StorageMgmtNetCidr: 10.0.0.0/24
+  StorageMgmtAllocationPools: [{'start': '10.0.0.10', 'end': '10.0.0.200'}]
+  StorageMgmtDefaultRoute: 10.0.0.1
+  StorageMgmtInterfaceDefaultRoute: 10.0.0.1
+  StorageMgmtVirtualIP: 10.0.0.10
+  ManagementNetCidr: 10.1.0.0/24
+  ManagementAllocationPools: [{'start': '10.1.0.10', 'end': '10.1.0.200'}]
+  ManagementInterfaceDefaultRoute: 10.1.0.1
+  ExternalNetCidr: 10.2.0.0/24
+  ExternalAllocationPools: [{'start': '10.2.0.10', 'end': '10.2.0.200'}]
+  EC2MetadataIp: 192.168.24.1  # Generally the IP of the Undercloud
+  DnsServers: ["10.87.64.101"]
+  VrouterPhysicalInterface: eth1
+  VrouterGateway: 10.0.0.1
+  VrouterNetmask: 255.255.255.0
+  ControlVirtualInterface: eth0
+  PublicVirtualInterface: vlan10
+# VlanParentInterface: eth1 # If VrouterPhysicalInterface is a vlan interface using vlanX notation
index cca9bea..a1862c3 100644 (file)
@@ -1,10 +1,10 @@
 resource_registry:
-  OS::TripleO::Compute::Net::SoftwareConfig: contrail-nic-config-compute.yaml
-  OS::TripleO::Controller::Net::SoftwareConfig: contrail-nic-config.yaml
-  OS::TripleO::ContrailController::Net::SoftwareConfig: contrail-nic-config.yaml
-  OS::TripleO::ContrailAnalytics::Net::SoftwareConfig: contrail-nic-config.yaml
-  OS::TripleO::ContrailAnalyticsDatabase::Net::SoftwareConfig: contrail-nic-config.yaml
-  OS::TripleO::ContrailTsn::Net::SoftwareConfig: contrail-nic-config-compute.yaml
+  OS::TripleO::Compute::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config-compute.yaml
+  OS::TripleO::Controller::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config.yaml
+  OS::TripleO::ContrailController::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config.yaml
+  OS::TripleO::ContrailAnalytics::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config.yaml
+  OS::TripleO::ContrailAnalyticsDatabase::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config.yaml
+  OS::TripleO::ContrailTsn::Net::SoftwareConfig: ../../network/config/contrail/contrail-nic-config-compute.yaml
 
 parameter_defaults:
   ControlPlaneSubnetCidr: '24'
@@ -18,9 +18,16 @@ parameter_defaults:
   ExternalNetCidr: 10.2.0.0/24
   ExternalAllocationPools: [{'start': '10.2.0.10', 'end': '10.2.0.200'}]
   EC2MetadataIp: 192.168.24.1  # Generally the IP of the Undercloud
-  DnsServers: ["8.8.8.8","8.8.4.4"]
-  VrouterPhysicalInterface: eth1
-  VrouterGateway: 10.0.0.1
-  VrouterNetmask: 255.255.255.0
+  DnsServers: ["8.8.8.8"]
+  NtpServer: 10.0.0.1
+  ContrailVrouterPhysicalInterface: eth1
+  ContrailVrouterGateway: 10.0.0.1
+  ContrailVrouterNetmask: 255.255.255.0
   ControlVirtualInterface: eth0
   PublicVirtualInterface: vlan10
+## If vhost0 is linked to a vlan interface:
+# ContrailVlanParentInterface: eth1 # If VrouterPhysicalInterface is a vlan interface using vlanX notation
+## If vhost0 is linked to a bonded vlan interface:
+# ContrailVlanParentInterface: bond0
+# ContrailBondInterface: bond0
+# ContrailBondInterfaceMembers: 'eth1,eth2'
index 80ef9d3..1cf4bc0 100644 (file)
@@ -8,7 +8,6 @@ resource_registry:
   OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginContrail
   OS::TripleO::Services::ComputeNeutronCorePlugin: OS::TripleO::Services::ComputeNeutronCorePluginContrail
-  OS::TripleO::NodeUserData: ../../firstboot/install_vrouter_kmod.yaml
   OS::TripleO::Services::ContrailHeat: ../../puppet/services/network/contrail-heat.yaml
   OS::TripleO::Services::ContrailAnalytics: ../../puppet/services/network/contrail-analytics.yaml
   OS::TripleO::Services::ContrailAnalyticsDatabase: ../../puppet/services/network/contrail-analytics-database.yaml
@@ -17,10 +16,26 @@ resource_registry:
   OS::TripleO::Services::ContrailDatabase: ../../puppet/services/network/contrail-database.yaml
   OS::TripleO::Services::ContrailWebUI: ../../puppet/services/network/contrail-webui.yaml
   OS::TripleO::Services::ContrailTsn: ../../puppet/services/network/contrail-tsn.yaml
+  OS::TripleO::Services::ContrailDpdk: ../../puppet/services/network/contrail-dpdk.yaml
   OS::TripleO::Services::ComputeNeutronCorePluginContrail: ../../puppet/services/network/contrail-vrouter.yaml
   OS::TripleO::Services::NeutronCorePluginContrail: ../../puppet/services/network/contrail-neutron-plugin.yaml
+  OS::TripleO::NodeUserData: ../../extraconfig/all_nodes/contrail/enable_contrail_repo.yaml
+  OS::TripleO::ContrailTsn::PreNetworkConfig: ../../extraconfig/pre_network/contrail/compute_pre_network.yaml
+  OS::TripleO::ContrailDpdk::PreNetworkConfig: ../../extraconfig/pre_network/contrail/contrail_dpdk_pre_network.yaml
+  OS::TripleO::Compute::PreNetworkConfig: ../../extraconfig/pre_network/contrail/compute_pre_network.yaml
 parameter_defaults:
-  ContrailRepo: http://192.168.24.1/contrail-3.2.0.0-19
+  ServiceNetMap:
+    ContrailAnalyticsNetwork: internal_api
+    ContrailAnalyticsDatabaseNetwork: internal_api
+    ContrailConfigNetwork: internal_api
+    ContrailControlNetwork: internal_api
+    ContrailDatabaseNetwork: internal_api
+    ContrailWebuiNetwork: internal_api
+    ContrailTsnNetwork: internal_api
+    ContrailVrouterNetwork: internal_api
+    ContrailDpdkNetwork: internal_api
+  ContrailRepo: http://192.168.24.1/contrail
+  ContrailControlManageNamed: true
   EnablePackageInstall: true
 #  ContrailConfigIfmapUserName: api-server
 #  ContrailConfigIfmapUserPassword: api-server
@@ -30,16 +45,16 @@ parameter_defaults:
   OvercloudContrailAnalyticsDatabaseFlavor: contrail-analytics-database
   OvercloudContrailTsnFlavor: contrail-tsn
   OvercloudComputeFlavor: compute
+  OvercloudContrailDpdkFlavor: compute-dpdk
   ControllerCount: 3
   ContrailControllerCount: 3
   ContrailAnalyticsCount: 3
   ContrailAnalyticsDatabaseCount: 3
-  ContrailTsnCount: 1
+  ContrailTsnCount: 0
   ComputeCount: 3
-  DnsServers: ["8.8.8.8","8.8.4.4"]
-  NtpServer: 10.0.0.1
+  ContrailDpdkCount: 0
   NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
-  NeutronServicePlugins: ''
+  NeutronServicePlugins: 'neutron_plugin_contrail.plugins.opencontrail.loadbalancer.v2.plugin.LoadBalancerPluginV2'
   NeutronTunnelTypes: ''
 #  NeutronMetadataProxySharedSecret:
 #  ContrailControlRNDCSecret: # sda1/256 hmac key, e.g. echo -n "values" | openssl dgst -sha256 -hmac key -binary | base64
index e648768..eae809a 100644 (file)
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::SensuClient
     - OS::TripleO::Services::FluentdClient
+
+- name: ContrailDpdk
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::CertmongerUser
+    - OS::TripleO::Services::ContrailTsn
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
index 784a2a3..474e996 100644 (file)
@@ -10,8 +10,9 @@ resource_registry:
   OS::TripleO::Services::Keepalived: OS::Heat::None
 
   # HA Containers managed by pacemaker
-  OS::TripleO::Services::CinderVolume: ../docker/services/pacemaker/cinder-volume.yaml
-  OS::TripleO::Services::CinderBackup: ../docker/services/pacemaker/cinder-backup.yaml
+  # FIXME: enable those Cinder services once their non-HA counterpart are enabled
+  # OS::TripleO::Services::CinderVolume: ../docker/services/pacemaker/cinder-volume.yaml
+  # OS::TripleO::Services::CinderBackup: ../docker/services/pacemaker/cinder-backup.yaml
   OS::TripleO::Services::Clustercheck: ../docker/services/pacemaker/clustercheck.yaml
   OS::TripleO::Services::HAproxy: ../docker/services/pacemaker/haproxy.yaml
   OS::TripleO::Services::MySQL: ../docker/services/pacemaker/database/mysql.yaml
index 872a1d9..d1970d6 100644 (file)
@@ -26,6 +26,7 @@ parameter_defaults:
     - OS::TripleO::Services::ComputeNeutronMetadataAgent
     - OS::TripleO::Services::TripleoPackages
     - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::NeutronSriovAgent
     - OS::TripleO::Services::OpenDaylightOvs
     - OS::TripleO::Services::SensuClient
index 8d7bc8d..93191a7 100644 (file)
@@ -11,10 +11,3 @@ parameter_defaults:
 {% for role in roles %}
   {{role.name}}Services: []
 {% endfor %}
-
-  # Consistent Hostname format
-  ControllerHostnameFormat: overcloud-controller-%index%
-  ComputeHostnameFormat: overcloud-novacompute-%index%
-  ObjectStorageHostnameFormat: overcloud-objectstorage-%index%
-  CephStorageHostnameFormat: overcloud-cephstorage-%index%
-  BlockStorageHostnameFormat: overcloud-blockstorage-%index%
index 1d01cb3..ac1c69f 100644 (file)
@@ -1,10 +1,2 @@
 resource_registry:
   OS::TripleO::DeployedServerEnvironment: ../deployed-server/deployed-server-environment-output.yaml
-
-parameter_defaults:
-  # Consistent Hostname format
-  ControllerDeployedServerHostnameFormat: overcloud-controller-%index%
-  ComputeDeployedServerHostnameFormat: overcloud-novacompute-%index%
-  ObjectStorageDeployedServerHostnameFormat: overcloud-objectstorage-%index%
-  CephStorageDeployedServerHostnameFormat: overcloud-cephstorage-%index%
-  BlockStorageDeployedServerHostnameFormat: overcloud-blockstorage-%index%
index 57af540..2b4dfa0 100644 (file)
@@ -1,3 +1,7 @@
+# ****************************************************************************
+# DEPRECATED: Use tripleo-heat-templates/environments/storage/enable-ceph.yaml
+# instead.
+# ****************************************************************************
 resource_registry:
   OS::TripleO::Services::CephMon: ../puppet/services/ceph-mon.yaml
   OS::TripleO::Services::CephOSD: ../puppet/services/ceph-osd.yaml
diff --git a/environments/split-stack-consistent-hostname-format.j2.yaml b/environments/split-stack-consistent-hostname-format.j2.yaml
new file mode 100644 (file)
index 0000000..8345c10
--- /dev/null
@@ -0,0 +1,5 @@
+parameter_defaults:
+  # Consistent Hostname format
+{% for role in roles %}
+  {{role.name}}HostnameFormat: overcloud-{{role.name.lower()}}-%index%
+{% endfor %}
index 216afec..3b3ddc1 100644 (file)
@@ -30,39 +30,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressInternal: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'CLOUDNAME'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiInternal: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'CLOUDNAME'}
index d216ab7..bca6a89 100644 (file)
@@ -30,39 +30,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressInternal: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiInternal: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'IP_ADDRESS'}
index 63157dd..e3fe608 100644 (file)
@@ -30,39 +30,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'https', port: '1789', host: 'CLOUDNAME'}
     CongressInternal: {protocol: 'https', port: '1789', host: 'CLOUDNAME'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'CLOUDNAME'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-    host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'https', port: '8788', host: 'CLOUDNAME'}
     Ec2ApiInternal: {protocol: 'https', port: '8788', host: 'CLOUDNAME'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'CLOUDNAME'}
index c629f74..596ec16 100644 (file)
@@ -33,3 +33,7 @@ parameter_defaults:
   # Type: boolean
   NovaEnableRbdBackend: True
 
+resource_registry:
+  OS::TripleO::Services::CephClient: ../../puppet/services/ceph-client.yaml
+  OS::TripleO::Services::CephMon: ../../puppet/services/ceph-mon.yaml
+  OS::TripleO::Services::CephOSD: ../../puppet/services/ceph-osd.yaml
index 83b3249..3894289 100644 (file)
@@ -24,39 +24,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressInternal: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'CLOUDNAME'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiInternal: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'CLOUDNAME'}
index 8e50297..b6613f4 100644 (file)
@@ -24,39 +24,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressInternal: {protocol: 'http', port: '1789', host: 'IP_ADDRESS'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiInternal: {protocol: 'http', port: '8788', host: 'IP_ADDRESS'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'IP_ADDRESS'}
index 84cabf1..074fae7 100644 (file)
@@ -20,39 +20,6 @@ parameter_defaults:
     CongressAdmin: {protocol: 'https', port: '1789', host: 'CLOUDNAME'}
     CongressInternal: {protocol: 'https', port: '1789', host: 'CLOUDNAME'}
     CongressPublic: {protocol: 'https', port: '13789', host: 'CLOUDNAME'}
-    ContrailAnalyticsApiAdmin: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiInternal: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsApiPublic: {protocol: 'http', port: '8081', host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpAdmin: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpInternal: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorHttpPublic: {protocol: 'http', port: '8089',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshAdmin: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshInternal: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsCollectorSandeshPublic: {protocol: 'http', port: '8086',
-      host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpAdmin: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpInternal: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsHttpPublic: {protocol: 'http', port: '8090', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisAdmin: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisInternal: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailAnalyticsRedisPublic: {protocol: 'http', port: '6379', host: 'IP_ADDRESS'}
-    ContrailConfigAdmin: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigInternal: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailConfigPublic: {protocol: 'http', port: '8082', host: 'IP_ADDRESS'}
-    ContrailDiscoveryAdmin: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryInternal: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailDiscoveryPublic: {protocol: 'http', port: '5998', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpAdmin: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpInternal: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpPublic: {protocol: 'http', port: '8080', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsAdmin: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsInternal: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
-    ContrailWebuiHttpsPublic: {protocol: 'http', port: '8143', host: 'IP_ADDRESS'}
     Ec2ApiAdmin: {protocol: 'https', port: '8788', host: 'CLOUDNAME'}
     Ec2ApiInternal: {protocol: 'https', port: '8788', host: 'CLOUDNAME'}
     Ec2ApiPublic: {protocol: 'https', port: '13788', host: 'CLOUDNAME'}
index 30fe399..f663353 100644 (file)
@@ -22,3 +22,10 @@ parameter_defaults:
   VrtsRabbitPassword: ''
   VrtsKeystonePassword: ''
   VrtsMysqlPassword: ''
+  VrtsCtrlMgmtIP: ''
+  VrtsDashboardIP: ''
+  VrtsZookeeperIP: ''
+  VrtsSSHPassword: ''
+  VrtsConfigParam1: ''
+  VrtsConfigParam2: ''
+  VrtsConfigParam3: ''
diff --git a/extraconfig/all_nodes/contrail/enable_contrail_repo.yaml b/extraconfig/all_nodes/contrail/enable_contrail_repo.yaml
new file mode 100644 (file)
index 0000000..51da6f6
--- /dev/null
@@ -0,0 +1,43 @@
+heat_template_version: pike
+
+parameters:
+  ContrailRepo:
+    type: string
+    default: ''
+
+resources:
+  userdata:
+    type: OS::Heat::MultipartMime
+    properties:
+      parts:
+      - config: {get_resource: EnableContrailRepoConfig}
+
+  EnableContrailRepoConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      config:
+        str_replace:
+          template: |
+            #!/bin/bash
+            contrail_repo=$contrail_repo
+            if [[ ${contrail_repo} ]]; then
+               cat <<EOF > /etc/yum.repos.d/contrail.repo
+            [Contrail]
+            name=Contrail Repo
+            baseurl=${contrail_repo}
+            enabled=1
+            gpgcheck=0
+            protect=1
+            metadata_expire=30
+            EOF
+            fi
+          params:
+            $contrail_repo: {get_param: ContrailRepo}
+
+outputs:
+  # This means get_resource from the parent template will get the userdata, see:
+  # http://docs.openstack.org/developer/heat/template_guide/composition.html#making-your-template-resource-more-transparent
+  # Note this is new-for-kilo, an alternative is returning a value then using
+  # get_attr in the parent template instead.
+  OS::stack_id:
+    value: {get_resource: userdata}
diff --git a/extraconfig/pre_network/contrail/compute_pre_network.yaml b/extraconfig/pre_network/contrail/compute_pre_network.yaml
new file mode 100644 (file)
index 0000000..a30330f
--- /dev/null
@@ -0,0 +1,162 @@
+heat_template_version: pike
+
+# NOTE: You don't need to pass the parameter explicitly from the
+# parent template, it can be specified via the parameter_defaults
+# in the resource_registry instead, if you want to override the default
+# and/or share values with other templates in the tree.
+parameters:
+  ContrailRepo:
+    type: string
+    default: ''
+  ContrailVrouterPhysicalInterface:
+    default: 'eth0'
+    description: vRouter physical interface
+    type: string
+  ContrailVlanParentInterface:
+    default: ''
+    description: Parent interface of vlan interface
+    type: string
+  ContrailBondInterface:
+    default: ''
+    description: Bond interface name
+    type: string
+  ContrailBondInterfaceMembers:
+    default: ''
+    description: Bond interface members
+    type: string
+  ContrailBondMode:
+    default: '4'
+    description: Bond Mode
+    type: string
+  ContrailBondPolicy:
+    default: '1'
+    description: Bond Policy
+    type: string
+  RoleParameters:
+    type: json
+    description: Role Specific parameters
+    default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
+  server:
+    type: string
+
+description: >
+  This template installs the Contrail kernel module  packages in order
+  to bring vhost0 interface up. Vhost0 interface must be up before
+  os-net-config takes over.
+
+resources:
+
+  ContrailVrouterModuleDeployment:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      name: ContrailVrouterModuleDeployment
+      server:  {get_param: server}
+      config: {get_resource: ContrailVrouterModuleConfig}
+      input_values:
+        phy_int: {get_param: ContrailVrouterPhysicalInterface}
+        bond_int: {get_param: ContrailBondInterface}
+        bond_int_members: {get_param: ContrailBondInterfaceMembers}
+        vlan_parent: {get_param: ContrailVlanParentInterface}
+        contrail_repo: {get_param: ContrailRepo}
+        bond_mode: {get_param: ContrailBondMode}
+        bond_policy: {get_param: ContrailBondPolicy}
+      actions: ['CREATE'] # Only do this on CREATE
+
+  ContrailVrouterModuleConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      inputs:
+      - name: phy_int
+      - name: bond_int
+      - name: bond_int_members
+      - name: vlan_parent
+      - name: contrail_repo
+      - name: bond_mode
+      - name: bond_policy
+      config: |
+        #!/bin/bash
+        phy_int=$phy_int
+        bond_int=$bond_int
+        bond_int_members=$bond_int_members
+        bond_mode=$bond_mode
+        bond_policy=$bond_policy
+        vlan_parent=$vlan_parent
+        contrail_repo=$contrail_repo
+        if [[ ${contrail_repo} ]]; then
+          yum install -y contrail-vrouter-utils
+        fi
+        function pkt_setup () {
+            for f in /sys/class/net/$1/queues/rx-*
+            do
+                q="$(echo $f | cut -d '-' -f2)"
+                r=$(($q%32))
+                s=$(($q/32))
+                ((mask=1<<$r))
+                str=(`printf "%x" $mask`)
+                if [ $s -gt 0 ]; then
+                    for ((i=0; i < $s; i++))
+                    do
+                        str+=,00000000
+                    done
+                fi
+                echo $str > $f/rps_cpus
+            done
+            ifconfig $1 up
+        }
+        function insert_vrouter() {
+            if [ -f /sys/class/net/pkt1/queues/rx-0/rps_cpus ]; then
+                pkt_setup pkt1
+            fi
+            if [ -f /sys/class/net/pkt2/queues/rx-0/rps_cpus ]; then
+                pkt_setup pkt2
+            fi
+            if [ -f /sys/class/net/pkt3/queues/rx-0/rps_cpus ]; then
+                pkt_setup pkt3
+            fi
+            DEV_MAC=$(cat /sys/class/net/${phy_int}/address)
+            vif --create vhost0 --mac $DEV_MAC
+            vif --add ${phy_int} --mac $DEV_MAC --vrf 0 --vhost-phys --type physical
+            vif --add vhost0 --mac $DEV_MAC --vrf 0 --type vhost --xconnect ${phy_int}
+            ip link set vhost0 up
+            return 0
+        }
+        if [[ ${bond_int} ]]; then
+           bond_int_member_list=$(echo ${bond_int_members} | tr "," "\n")
+           ip link add name ${bond_int} type bond
+           echo ${bond_mode} > /sys/class/net/${bond_int}/bonding/mode
+           echo ${bond_policy} > /sys/class/net/${bond_int}/bonding/xmit_hash_policy
+           for member in ${bond_int_member_list}; do
+               ip link set dev $member master ${bond_int}
+           done
+        fi
+        if [[ ${vlan_parent} ]]; then
+            vlanId=`echo ${phy_int} | awk -F"vlan" '{print $2}'`
+            ip link add name ${phy_int} link ${vlan_parent} type vlan id ${vlanId}
+        fi
+        if [[ ${contrail_repo} ]]; then
+          yumdownloader contrail-vrouter --destdir /tmp
+          cd /tmp
+          rpm2cpio /tmp/contrail-vrouter*.rpm | cpio -idmv
+          cp `find /tmp/lib/modules -name vrouter.ko |tail -1` /tmp
+          insmod /tmp/vrouter.ko
+        else
+          modprobe vrouter
+        fi
+        insert_vrouter
+        if [[ `ifconfig ${phy_int} |grep "inet "` ]]; then
+          def_gw=''
+          if [[ `ip route show |grep default|grep ${phy_int}` ]]; then
+            def_gw=`ip route show |grep default|grep ${phy_int}|awk '{print $3}'`
+          fi
+          ip=`ifconfig ${phy_int} |grep "inet "|awk '{print $2}'`
+          mask=`ifconfig ${phy_int} |grep "inet "|awk '{print $4}'`
+          ip address delete $ip/$mask dev ${phy_int}
+          ip address add $ip/$mask dev vhost0
+          if [[ $def_gw ]]; then
+            ip route add default via $def_gw
+          fi
+        fi
diff --git a/extraconfig/pre_network/contrail/contrail_dpdk_pre_network.yaml b/extraconfig/pre_network/contrail/contrail_dpdk_pre_network.yaml
new file mode 100644 (file)
index 0000000..623eb7e
--- /dev/null
@@ -0,0 +1,168 @@
+heat_template_version: pike
+
+# NOTE: You don't need to pass the parameter explicitly from the
+# parent template, it can be specified via the parameter_defaults
+# in the resource_registry instead, if you want to override the default
+# and/or share values with other templates in the tree.
+parameters:
+  ContrailRepo:
+    type: string
+    default: ''
+  ContrailVrouterPhysicalInterface:
+    default: 'eth0'
+    description: vRouter physical interface
+    type: string
+  ContrailVlanParentInterface:
+    default: ''
+    description: Parent interface of vlan interface
+    type: string
+  ContrailBondInterface:
+    default: ''
+    description: Bond interface name
+    type: string
+  ContrailBondInterfaceMembers:
+    default: ''
+    description: Bond interface members
+    type: string
+  ContrailBondMode:
+    default: '4'
+    description: Bond Mode
+    type: string
+  ContrailBondPolicy:
+    default: '1'
+    description: Bond Policy
+    type: string
+  ContrailDpdkHugePages:
+    default: '2048'
+    description: DPDK Hugepages setting
+    type: string
+  RoleParameters:
+    type: json
+    description: Role Specific parameters
+    default: {}
+  ServiceNames:
+    type: comma_delimited_list
+    default: []
+  server:
+    type: string
+
+description: >
+  This template installs the Contrail dpdk packages in order
+  to bring vhost0 interface up. Vhost0 interface must be up before
+  os-net-config takes over.
+
+resources:
+
+  ContrailVrouterDpdkDeployment:
+    type: OS::Heat::SoftwareDeployment
+    properties:
+      name: ContrailVrouterDpdkDeployment
+      server:  {get_param: server}
+      config: {get_resource: ContrailVrouterDpdkConfig}
+      input_values:
+        phy_int: {get_param: ContrailVrouterPhysicalInterface}
+        bond_int: {get_param: ContrailBondInterface}
+        bond_int_members: {get_param: ContrailBondInterfaceMembers}
+        vlan_parent: {get_param: ContrailVlanParentInterface}
+        contrail_repo: {get_param: ContrailRepo}
+        bond_mode: {get_param: ContrailBondMode}
+        bond_policy: {get_param: ContrailBondPolicy}
+        dpdk_hugepages: {get_param: ContrailDpdkHugePages}
+      actions: ['CREATE'] # Only do this on CREATE
+
+  ContrailVrouterDpdkConfig:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config: |
+        #!/bin/bash
+        phy_int=$phy_int
+        bond_int=$bond_int
+        bond_int_members=$bond_int_members
+        bond_mode=$bond_mode
+        bond_policy=$bond_policy
+        vlan_parent=$vlan_parent
+        contrail_repo=$contrail_repo
+        dpdk_hugepages=$dpdk_hugepages
+        echo "vm.nr_hugepages = $dpdk_hugepages" >> /etc/sysctl.conf
+        echo "vm.max_map_count = 128960" >> /etc/sysctl.conf
+        echo "kernel.core_pattern = /var/crashes/core.%e.%p.%h.%t" >> /etc/sysctl.conf
+        echo "net.ipv4.tcp_keepalive_time = 5" >> /etc/sysctl.conf
+        echo "net.ipv4.tcp_keepalive_probes = 5" >> /etc/sysctl.conf
+        echo "net.ipv4.tcp_keepalive_intvl = 1" >> /etc/sysctl.conf
+        /sbin/sysctl --system
+        modprobe uio
+        if [[ ${contrail_repo} ]]; then
+          yum install -y contrail-vrouter-utils contrail-vrouter-dpdk contrail-vrouter-dpdk-init
+        fi
+        pci_address=`ethtool -i ${phy_int} |grep bus-info| awk '{print $2}' |tr -d ' '`
+        if [[ ${vlan_parent} ]]; then
+           pci_address=`ethtool -i ${vlan_parent} |grep bus-info| awk '{print $2}' |tr -d ' '`
+        fi
+        if [[ ${bond_int} ]]; then
+          bond_int_member_list=$(echo ${bond_int_members} | tr "," "\n")
+          cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-${bond_int}
+        DEVICE=${bond_int}
+        BOOTPROTO=none
+        ONBOOT=yes
+        USERCTL=no
+        BONDING_OPTS="mode=${bond_mode} xmit_hash_policy=${bond_policy}"
+        EOF
+          for member in ${bond_int_member_list}; do
+            cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-${member}
+        DEVICE=${member}
+        BOOTPROTO=none
+        ONBOOT=yes
+        MASTER=${bond_int}
+        SLAVE=yes
+        USERCTL=no
+        EOF
+            ip link set dev ${member} down
+          done
+          ifup ${bond_int}
+          pci_address=0000:00:00.0
+        fi
+        if [[ ${vlan_parent} ]]; then
+          echo ${vlan_parent} >> /tmp/vlan_parent
+          vlanId=`echo ${phy_int} | awk -F"vlan" '{print $2}'`
+          ip link add name ${phy_int} link ${vlan_parent} type vlan id ${vlanId}
+        fi
+        cat <<EOF > /etc/contrail/agent_param
+        LOG=/var/log/contrail.log
+        CONFIG=/etc/contrail/contrail-vrouter-agent.conf
+        prog=/usr/bin/contrail-vrouter-agent
+        pname=contrail-vrouter-agent
+        LIBDIR=/usr/lib64
+        DEVICE=vhost0
+        dev=${phy_int}
+        vgw_subnet_ip=__VGW_SUBNET_IP__
+        vgw_intf=__VGW_INTF_LIST__
+        LOGFILE=--log-file=/var/log/contrail/vrouter.log
+        EOF
+          mac=`ip link sh dev ${phy_int} | grep link/ether|awk '{print $2}' | tr -d ' '`
+          cat <<EOF > /etc/contrail/contrail-vrouter-agent.conf
+        [DEFAULT]
+        platform=dpdk
+        physical_interface_address=$pci_address
+        physical_interface_mac=$mac
+        physical_uio_driver=uio_pci_generic
+        [VIRTUAL-HOST-INTERFACE]
+        physical_interface=${phy_int}
+        name=vhost0
+        EOF
+        echo $pci_address > /etc/contrail/dpdk_pci
+        echo $mac > /etc/contrail/dpdk_mac
+        systemctl start supervisor-vrouter
+        if [[ `ifconfig ${phy_int} |grep "inet "` ]]; then
+          def_gw=''
+          if [[ `ip route show |grep default|grep ${phy_int}` ]]; then
+            def_gw=`ip route show |grep default|grep ${phy_int}|awk '{print $3}'`
+          fi
+          ip=`ifconfig ${phy_int} |grep "inet "|awk '{print $2}'`
+          mask=`ifconfig ${phy_int} |grep "inet "|awk '{print $4}'`
+          ip address delete $ip/$mask dev ${phy_int}
+          ip address add $ip/$mask dev vhost0
+          if [[ $def_gw ]]; then
+            ip route add default via $def_gw
+          fi
+        fi
diff --git a/firstboot/install_vrouter_kmod.yaml b/firstboot/install_vrouter_kmod.yaml
deleted file mode 100644 (file)
index 65e93fe..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-heat_template_version: pike
-
-parameters:
-  ContrailRepo:
-    type: string
-    default: http://192.168.24.1/contrail
-  VrouterPhysicalInterface:
-    default: 'eth0'
-    description: vRouter physical interface
-    type: string
-
-description: >
-  Prepares vhost0 interface to be used by os-net-config
-
-resources:
-  userdata:
-    type: OS::Heat::MultipartMime
-    properties:
-      parts:
-      - config: {get_resource: vrouter_module_config}
-
-  vrouter_module_config:
-    type: OS::Heat::SoftwareConfig
-    properties:
-      config:
-        str_replace:
-          template: |
-            #!/bin/bash
-            sed -i '/\[main\]/a \ \ \ \ \parser = future' /etc/puppet/puppet.conf
-            cat <<EOF > /etc/yum.repos.d/contrail.repo
-            [Contrail]
-            name=Contrail Repo
-            baseurl=$contrail_repo
-            enabled=1
-            gpgcheck=0
-            protect=1
-            EOF
-            if [[ `hostname |awk -F"-" '{print $2}'` == "novacompute" || `hostname |awk -F"-" '{print $2}'` == "contrailtsn" ]]; then 
-              yum install -y contrail-vrouter-utils
-              function pkt_setup () {
-                  for f in /sys/class/net/$1/queues/rx-*
-                  do
-                      q="$(echo $f | cut -d '-' -f2)"
-                      r=$(($q%32))
-                      s=$(($q/32))
-                      ((mask=1<<$r))
-                      str=(`printf "%x" $mask`)
-                      if [ $s -gt 0 ]; then
-                          for ((i=0; i < $s; i++))
-                          do
-                              str+=,00000000
-                          done
-                      fi
-                      echo $str > $f/rps_cpus
-                  done
-                  ifconfig $1 up
-              }
-              function insert_vrouter() {
-                  insmod /tmp/vrouter.ko
-                  if [ -f /sys/class/net/pkt1/queues/rx-0/rps_cpus ]; then
-                      pkt_setup pkt1
-                  fi
-                  if [ -f /sys/class/net/pkt2/queues/rx-0/rps_cpus ]; then
-                      pkt_setup pkt2
-                  fi
-                  if [ -f /sys/class/net/pkt3/queues/rx-0/rps_cpus ]; then
-                      pkt_setup pkt3
-                  fi
-                  DEV_MAC=$(cat /sys/class/net/$phy_int/address)
-                  vif --create vhost0 --mac $DEV_MAC
-                  vif --add $phy_int --mac $DEV_MAC --vrf 0 --vhost-phys --type physical
-                  vif --add vhost0 --mac $DEV_MAC --vrf 0 --type vhost --xconnect $phy_int
-                  ip link set vhost0 up
-                  return 0
-              }
-              yumdownloader contrail-vrouter --destdir /tmp
-              cd /tmp
-              rpm2cpio /tmp/contrail-vrouter*.rpm | cpio -idmv
-              cp `find /tmp/lib/modules -name vrouter.ko |tail -1` /tmp
-              insert_vrouter
-              if [[ `ifconfig $dev |grep "inet "` ]]; then
-                def_gw=''
-                if [[ `ip route show |grep default|grep $dev` ]]; then
-                  def_gw=`ip route show |grep default|grep $dev|awk '{print $3}'`
-                fi
-                ip=`ifconfig $dev |grep "inet "|awk '{print $2}'`
-                mask=`ifconfig $dev |grep "inet "|awk '{print $4}'`
-                ip address delete $ip/$mask dev $dev
-                ip address add $ip/$mask dev vhost0
-                if [[ $def_gw ]]; then
-                  ip route add default via $def_gw
-                fi
-              fi
-            fi
-          params:
-            $phy_int: {get_param: VrouterPhysicalInterface}
-            $contrail_repo: {get_param: ContrailRepo}
-
-outputs:
-  # This means get_resource from the parent template will get the userdata, see:
-  # http://docs.openstack.org/developer/heat/template_guide/composition.html#making-your-template-resource-more-transparent
-  # Note this is new-for-kilo, an alternative is returning a value then using
-  # get_attr in the parent template instead.
-  OS::stack_id:
-    value: {get_resource: userdata}
diff --git a/network/config/contrail/contrail-nic-config.yaml b/network/config/contrail/contrail-nic-config.yaml
new file mode 100644 (file)
index 0000000..595f34d
--- /dev/null
@@ -0,0 +1,164 @@
+heat_template_version: pike
+
+description: >
+  Software Config to drive os-net-config to configure multiple interfaces
+  for the compute role. This is an example for a Nova compute node using
+  Contrail vrouter and the vhost0 interface.
+
+parameters:
+  ControlPlaneIp:
+    default: ''
+    description: IP address/subnet on the ctlplane network
+    type: string
+  ExternalIpSubnet:
+    default: ''
+    description: IP address/subnet on the external network
+    type: string
+  InternalApiIpSubnet:
+    default: ''
+    description: IP address/subnet on the internal API network
+    type: string
+  InternalApiDefaultRoute: # Not used by default in this template
+    default: '10.0.0.1'
+    description: The default route of the internal api network.
+    type: string
+  StorageIpSubnet:
+    default: ''
+    description: IP address/subnet on the storage network
+    type: string
+  StorageMgmtIpSubnet:
+    default: ''
+    description: IP address/subnet on the storage mgmt network
+    type: string
+  TenantIpSubnet:
+    default: ''
+    description: IP address/subnet on the tenant network
+    type: string
+  ManagementIpSubnet: # Only populated when including environments/network-management.yaml
+    default: ''
+    description: IP address/subnet on the management network
+    type: string
+  ExternalNetworkVlanID:
+    default: 10
+    description: Vlan ID for the external network traffic.
+    type: number
+  InternalApiNetworkVlanID:
+    default: 20
+    description: Vlan ID for the internal_api network traffic.
+    type: number
+  StorageNetworkVlanID:
+    default: 30
+    description: Vlan ID for the storage network traffic.
+    type: number
+  StorageMgmtNetworkVlanID:
+    default: 40
+    description: Vlan ID for the storage mgmt network traffic.
+    type: number
+  TenantNetworkVlanID:
+    default: 50
+    description: Vlan ID for the tenant network traffic.
+    type: number
+  ManagementNetworkVlanID:
+    default: 60
+    description: Vlan ID for the management network traffic.
+    type: number
+  ControlPlaneSubnetCidr: # Override this via parameter_defaults
+    default: '24'
+    description: The subnet CIDR of the control plane network.
+    type: string
+  ControlPlaneDefaultRoute: # Override this via parameter_defaults
+    description: The default route of the control plane network.
+    type: string
+  ExternalInterfaceDefaultRoute: # Not used by default in this template
+    default: '10.0.0.1'
+    description: The default route of the external network.
+    type: string
+  ManagementInterfaceDefaultRoute: # Commented out by default in this template
+    default: unset
+    description: The default route of the management network.
+    type: string
+  DnsServers: # Override this via parameter_defaults
+    default: []
+    description: A list of DNS servers (2 max for some implementations) that will be added to resolv.conf.
+    type: comma_delimited_list
+  EC2MetadataIp: # Override this via parameter_defaults
+    description: The IP address of the EC2 metadata server.
+    type: string
+
+resources:
+  OsNetConfigImpl:
+    type: OS::Heat::SoftwareConfig
+    properties:
+      group: script
+      config:
+        str_replace:
+          template:
+            get_file: ../../scripts/run-os-net-config.sh
+          params:
+            $network_config:
+              network_config:
+              - type: interface
+                name: nic1
+                use_dhcp: false
+                dns_servers:
+                  get_param: DnsServers
+                addresses:
+                - ip_netmask:
+                    list_join:
+                      - '/'
+                      - - get_param: ControlPlaneIp
+                        - get_param: ControlPlaneSubnetCidr
+                routes:
+                - ip_netmask: 169.254.169.254/32
+                  next_hop:
+                    get_param: EC2MetadataIp
+              - type: interface
+                name: nic2
+                use_dhcp: false
+                addresses:
+                - ip_netmask:
+                    get_param: InternalApiIpSubnet
+                routes:
+                - default: true
+                  next_hop:
+                    get_param: InternalApiDefaultRoute
+              - type: linux_bridge
+                name: br0
+                use_dhcp: false
+                members:
+                -  type: interface
+                   name: nic3
+              - type: vlan
+                vlan_id:
+                  get_param: ManagementNetworkVlanID
+                device: br0
+                addresses:
+                - ip_netmask:
+                    get_param: ManagementIpSubnet
+              - type: vlan
+                vlan_id:
+                  get_param: ExternalNetworkVlanID
+                device: br0
+                addresses:
+                - ip_netmask:
+                    get_param: ExternalIpSubnet
+              - type: vlan
+                vlan_id:
+                  get_param: StorageNetworkVlanID
+                device: br0
+                addresses:
+                - ip_netmask:
+                    get_param: StorageIpSubnet
+              - type: vlan
+                vlan_id:
+                  get_param: StorageMgmtNetworkVlanID
+                device: br0
+                addresses:
+                - ip_netmask:
+                    get_param: StorageMgmtIpSubnet
+
+outputs:
+  OS::stack_id:
+    description: The OsNetConfigImpl resource.
+    value:
+      get_resource: OsNetConfigImpl
index ece4008..bed9c70 100644 (file)
@@ -28,87 +28,6 @@ Ceilometer:
         net_param: CeilometerApi
     port: 8777
 
-ContrailConfig:
-    Internal:
-        net_param: ContrailConfig
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailConfig
-    port: 8082
-
-ContrailDiscovery:
-    Internal:
-        net_param: ContrailConfig
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailConfig
-    port: 5998
-
-ContrailAnalyticsCollectorHttp:
-    Internal:
-        net_param: ContrailAnalytics
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailAnalytics
-    port: 8089
-
-ContrailAnalyticsApi:
-    Internal:
-        net_param: ContrailAnalytics
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailAnalytics
-    port: 8081
-
-ContrailAnalyticsHttp:
-    Internal:
-        net_param: ContrailAnalytics
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailAnalytics
-    port: 8090
-
-ContrailAnalyticsCollectorSandesh:
-    Internal:
-        net_param: ContrailAnalytics
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailAnalytics
-    port: 8086
-
-ContrailAnalyticsRedis:
-    Internal:
-        net_param: ContrailAnalytics
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailAnalytics
-    port: 6379
-
-ContrailWebuiHttp:
-    Internal:
-        net_param: ContrailConfig
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailConfig
-    port: 8080
-
-ContrailWebuiHttps:
-    Internal:
-        net_param: ContrailConfig
-    Public:
-        net_param: Public
-    Admin:
-        net_param: ContrailConfig
-    port: 8143
-
 Ec2Api:
     Internal:
         net_param: Ec2Api
index 42d1fbd..1ba7b6f 100644 (file)
@@ -37,39 +37,6 @@ parameters:
       CongressAdmin: {protocol: http, port: '1789', host: IP_ADDRESS}
       CongressInternal: {protocol: http, port: '1789', host: IP_ADDRESS}
       CongressPublic: {protocol: http, port: '1789', host: IP_ADDRESS}
-      ContrailAnalyticsApiAdmin: {protocol: http, port: '8081', host: IP_ADDRESS}
-      ContrailAnalyticsApiInternal: {protocol: http, port: '8081', host: IP_ADDRESS}
-      ContrailAnalyticsApiPublic: {protocol: http, port: '8081', host: IP_ADDRESS}
-      ContrailAnalyticsCollectorHttpAdmin: {protocol: http, port: '8089',
-        host: IP_ADDRESS}
-      ContrailAnalyticsCollectorHttpInternal: {protocol: http, port: '8089',
-        host: IP_ADDRESS}
-      ContrailAnalyticsCollectorHttpPublic: {protocol: http, port: '8089',
-        host: IP_ADDRESS}
-      ContrailAnalyticsCollectorSandeshAdmin: {protocol: http, port: '8086',
-        host: IP_ADDRESS}
-      ContrailAnalyticsCollectorSandeshInternal: {protocol: http, port: '8086',
-        host: IP_ADDRESS}
-      ContrailAnalyticsCollectorSandeshPublic: {protocol: http, port: '8086',
-        host: IP_ADDRESS}
-      ContrailAnalyticsHttpAdmin: {protocol: http, port: '8090', host: IP_ADDRESS}
-      ContrailAnalyticsHttpInternal: {protocol: http, port: '8090', host: IP_ADDRESS}
-      ContrailAnalyticsHttpPublic: {protocol: http, port: '8090', host: IP_ADDRESS}
-      ContrailAnalyticsRedisAdmin: {protocol: http, port: '6379', host: IP_ADDRESS}
-      ContrailAnalyticsRedisInternal: {protocol: http, port: '6379', host: IP_ADDRESS}
-      ContrailAnalyticsRedisPublic: {protocol: http, port: '6379', host: IP_ADDRESS}
-      ContrailConfigAdmin: {protocol: http, port: '8082', host: IP_ADDRESS}
-      ContrailConfigInternal: {protocol: http, port: '8082', host: IP_ADDRESS}
-      ContrailConfigPublic: {protocol: http, port: '8082', host: IP_ADDRESS}
-      ContrailDiscoveryAdmin: {protocol: http, port: '5998', host: IP_ADDRESS}
-      ContrailDiscoveryInternal: {protocol: http, port: '5998', host: IP_ADDRESS}
-      ContrailDiscoveryPublic: {protocol: http, port: '5998', host: IP_ADDRESS}
-      ContrailWebuiHttpAdmin: {protocol: http, port: '8080', host: IP_ADDRESS}
-      ContrailWebuiHttpInternal: {protocol: http, port: '8080', host: IP_ADDRESS}
-      ContrailWebuiHttpPublic: {protocol: http, port: '8080', host: IP_ADDRESS}
-      ContrailWebuiHttpsAdmin: {protocol: http, port: '8143', host: IP_ADDRESS}
-      ContrailWebuiHttpsInternal: {protocol: http, port: '8143', host: IP_ADDRESS}
-      ContrailWebuiHttpsPublic: {protocol: http, port: '8143', host: IP_ADDRESS}
       Ec2ApiAdmin: {protocol: http, port: '8788', host: IP_ADDRESS}
       Ec2ApiInternal: {protocol: http, port: '8788', host: IP_ADDRESS}
       Ec2ApiPublic: {protocol: http, port: '8788', host: IP_ADDRESS}
@@ -2101,2289 +2068,6 @@ outputs:
                         template: NETWORK_uri
             - ':'
             - get_param: [EndpointMap, CongressPublic, port]
-      ContrailAnalyticsApiAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsApiAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsApiAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiAdmin, port]
-      ContrailAnalyticsApiInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsApiInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsApiInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiInternal, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiInternal, port]
-      ContrailAnalyticsApiPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsApiPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsApiPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsApiPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsApiPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsApiPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsApiPublic, port]
-      ContrailAnalyticsCollectorHttpAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpAdmin,
-                port]
-      ContrailAnalyticsCollectorHttpInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal,
-                port]
-      ContrailAnalyticsCollectorHttpPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorHttpPublic,
-                port]
-      ContrailAnalyticsCollectorSandeshAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshAdmin,
-                port]
-      ContrailAnalyticsCollectorSandeshInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal,
-                port]
-      ContrailAnalyticsCollectorSandeshPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-            port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-            protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshPublic,
-                port]
-      ContrailAnalyticsHttpAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpAdmin, port]
-      ContrailAnalyticsHttpInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsHttpInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsHttpInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpInternal,
-                port]
-      ContrailAnalyticsHttpPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsHttpPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsHttpPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsHttpPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsHttpPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsHttpPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsHttpPublic, port]
-      ContrailAnalyticsRedisAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisAdmin,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisAdmin, port]
-      ContrailAnalyticsRedisInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsRedisInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsRedisInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailAnalyticsNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisInternal,
-                port]
-      ContrailAnalyticsRedisPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailAnalyticsRedisPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailAnalyticsRedisPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailAnalyticsRedisPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailAnalyticsRedisPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailAnalyticsRedisPublic,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailAnalyticsRedisPublic, port]
-      ContrailConfigAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailConfigAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailConfigAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigAdmin, port]
-      ContrailConfigInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailConfigInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailConfigInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigInternal, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigInternal, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigInternal, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigInternal, port]
-      ContrailConfigPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailConfigPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailConfigPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailConfigPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailConfigPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailConfigPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailConfigPublic, port]
-      ContrailDiscoveryAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailDiscoveryAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailDiscoveryAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryAdmin, port]
-      ContrailDiscoveryInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailDiscoveryInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailDiscoveryInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryInternal, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryInternal, port]
-      ContrailDiscoveryPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailDiscoveryPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailDiscoveryPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailDiscoveryPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailDiscoveryPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailDiscoveryPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailDiscoveryPublic, port]
-      ContrailWebuiHttpAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpAdmin, port]
-      ContrailWebuiHttpInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpInternal, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpInternal, port]
-      ContrailWebuiHttpPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpPublic, port]
-      ContrailWebuiHttpsAdmin:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsAdmin, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpsAdmin, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpsAdmin, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsAdmin, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsAdmin, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsAdmin, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsAdmin, port]
-      ContrailWebuiHttpsInternal:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, ContrailConfigNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsInternal, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, ContrailConfigNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpsInternal, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpsInternal, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsInternal, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsInternal, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsInternal,
-                    host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, ContrailConfigNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, ContrailConfigNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsInternal, port]
-      ContrailWebuiHttpsPublic:
-        host:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - str_replace:
-                    params:
-                      NETWORK:
-                        get_param: [ServiceNetMap, PublicNetwork]
-                    template: NETWORK_uri
-        host_nobrackets:
-          str_replace:
-            template:
-              get_param: [EndpointMap, ContrailWebuiHttpsPublic, host]
-            params:
-              CLOUDNAME:
-                get_param:
-                - CloudEndpoints
-                - get_param: [ServiceNetMap, PublicNetwork]
-              IP_ADDRESS:
-                get_param:
-                - NetIpMap
-                - get_param: [ServiceNetMap, PublicNetwork]
-        port:
-          get_param: [EndpointMap, ContrailWebuiHttpsPublic, port]
-        protocol:
-          get_param: [EndpointMap, ContrailWebuiHttpsPublic, protocol]
-        uri:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsPublic, port]
-        uri_no_suffix:
-          list_join:
-          - ''
-          - - get_param: [EndpointMap, ContrailWebuiHttpsPublic, protocol]
-            - ://
-            - str_replace:
-                template:
-                  get_param: [EndpointMap, ContrailWebuiHttpsPublic, host]
-                params:
-                  CLOUDNAME:
-                    get_param:
-                    - CloudEndpoints
-                    - get_param: [ServiceNetMap, PublicNetwork]
-                  IP_ADDRESS:
-                    get_param:
-                    - NetIpMap
-                    - str_replace:
-                        params:
-                          NETWORK:
-                            get_param: [ServiceNetMap, PublicNetwork]
-                        template: NETWORK_uri
-            - ':'
-            - get_param: [EndpointMap, ContrailWebuiHttpsPublic, port]
       Ec2ApiAdmin:
         host:
           str_replace:
index bb45896..2dcc7f0 100644 (file)
@@ -175,6 +175,7 @@ resource_registry:
   OS::TripleO::Services::Memcached: puppet/services/memcached.yaml
   OS::TripleO::Services::SaharaApi: OS::Heat::None
   OS::TripleO::Services::SaharaEngine: OS::Heat::None
+  OS::TripleO::Services::Tuned: puppet/services/tuned.yaml
   OS::TripleO::Services::Securetty: OS::Heat::None
   OS::TripleO::Services::Sshd: puppet/services/sshd.yaml
   OS::TripleO::Services::Redis: puppet/services/database/redis.yaml
index 625ff4d..11113ee 100644 (file)
@@ -32,7 +32,7 @@ parameters:
     default: 'regionOne'
     description: Keystone region for endpoint
   NovaPassword:
-    description: The password for the nova service and db account, used by nova-api.
+    description: The password for the nova service and db account
     type: string
     hidden: true
 
index 85520fc..18707b9 100644 (file)
@@ -513,14 +513,27 @@ resources:
             fqdn_management: {get_attr: [NetHostMap, value, management, fqdn]}
             fqdn_ctlplane: {get_attr: [NetHostMap, value, ctlplane, fqdn]}
             fqdn_external: {get_attr: [NetHostMap, value, external, fqdn]}
+  {%- if 'primary' in role.tags and 'controller' in role.tags %}
+            tripleo::haproxy::service_certificate: {get_attr: [NodeTLSData, deployed_ssl_certificate_path]}
+  {%- endif -%}
 
   # Resource for site-specific injection of root certificate
   NodeTLSCAData:
-    depends_on: {{role.name}}Deployment
+    depends_on: NetworkDeployment
     type: OS::TripleO::NodeTLSCAData
     properties:
       server: {get_resource: {{role.name}}}
 
+  {%- if 'primary' in role.tags and 'controller' in role.tags %}
+  # Resource for site-specific passing of private keys/certificates
+  NodeTLSData:
+    depends_on: NodeTLSCAData
+    type: OS::TripleO::NodeTLSData
+    properties:
+      server: {get_resource: {{role.name}}}
+      NodeIndex: {get_param: NodeIndex}
+  {%- endif -%}
+
   # Hook for site-specific additional pre-deployment config, e.g extra hieradata
   {{role.name}}ExtraConfigPre:
     depends_on: {{role.name}}Deployment
@@ -534,7 +547,13 @@ resources:
   # Hook for site-specific additional pre-deployment config,
   # applying to all nodes, e.g node registration/unregistration
   NodeExtraConfig:
-    depends_on: [{{role.name}}ExtraConfigPre, NodeTLSCAData]
+    depends_on:
+      - {{role.name}}ExtraConfigPre
+  {%- if 'primary' in role.tags and 'controller' in role.tags %}
+      - NodeTLSData
+  {%- else %}
+      - NodeTLSCAData
+  {%- endif %}
     type: OS::TripleO::NodeExtraConfig
     # We have to use conditions here so that we don't break backwards
     # compatibility with templates everywhere
@@ -674,6 +693,14 @@ CTLPLANEIP,CTLPLANEHOST.DOMAIN,CTLPLANEHOST HOSTSSHPUBKEY"
                     - 6
                 - 0
         - keys: {hostname: {get_param: Hostname}}
+  {%- if 'primary' in role.tags and 'controller' in role.tags %}
+  tls_key_modulus_md5:
+    description: MD5 checksum of the TLS Key Modulus
+    value: {get_attr: [NodeTLSData, key_modulus_md5]}
+  tls_cert_modulus_md5:
+    description: MD5 checksum of the TLS Certificate Modulus
+    value: {get_attr: [NodeTLSData, cert_modulus_md5]}
+  {%- endif %}
   os_collect_config:
     description: The os-collect-config configuration associated with this server resource
     value: {get_attr: [{{role.name}}, os_collect_config]}
index d9b61cc..f84edde 100644 (file)
@@ -30,6 +30,10 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  GnocchiExternalProject:
+    default: 'service'
+    description: Project name of resources creator in Gnocchi.
+    type: string
   MonitoringSubscriptionAodhApi:
     default: 'overcloud-ceilometer-aodh-api'
     type: string
@@ -85,6 +89,7 @@ outputs:
             aodh::wsgi::apache::wsgi_process_display_name: 'aodh_wsgi'
             aodh::api::service_name: 'httpd'
             aodh::api::enable_proxy_headers_parsing: true
+            aodh::api::gnocchi_external_project_owner: {get_param: GnocchiExternalProject}
             aodh::policy::policies: {get_param: AodhApiPolicies}
             tripleo.aodh_api.firewall_rules:
               '128 aodh-api':
index aa02568..2962946 100644 (file)
@@ -40,7 +40,7 @@ parameters:
     type: string
     hidden: true
   SwiftPassword:
-    description: The password for the swift service account, used by the Ceph RGW services.
+    description: The password for the swift service account
     type: string
     hidden: true
   KeystoneRegion:
index caa2f2f..388e49b 100644 (file)
@@ -31,6 +31,9 @@ parameters:
   CinderDellPsSanPassword:
     type: string
     hidden: true
+  CinderDellPsSanPrivateKey:
+    type: string
+    default: ''
   CinderDellPsSanThinProvision:
     type: boolean
     default: true
@@ -87,6 +90,7 @@ outputs:
         cinder::backend::eqlx::san_ip: {get_param: CinderDellPsSanIp}
         cinder::backend::eqlx::san_login: {get_param: CinderDellPsSanLogin}
         cinder::backend::eqlx::san_password: {get_param: CinderDellPsSanPassword}
+        cinder::backend::eqlx::san_private_key: {get_param: CinderDellPsSanPrivateKey}
         cinder::backend::eqlx::san_thin_provision: {get_param: CinderDellPsSanThinProvision}
         cinder::backend::eqlx::eqlx_group_name: {get_param: CinderDellPsGroupname}
         cinder::backend::eqlx::eqlx_pool: {get_param: CinderDellPsPool}
index 8842a0c..abbe7a2 100644 (file)
@@ -51,7 +51,7 @@ parameters:
     description: Whether to use Galera instead of regular MariaDB.
     type: boolean
   NovaPassword:
-    description: The password for the nova db account
+    description: The password for the nova service and db account
     type: string
     hidden: true
   EnableInternalTLS:
index d15b30c..2a6a89e 100644 (file)
@@ -5,7 +5,7 @@ description: >
 
 parameters:
   RedisPassword:
-    description: The password for Redis
+    description: The password for the redis service account.
     type: string
     hidden: true
   RedisFDLimit:
index a4a25d9..ac1f11a 100644 (file)
@@ -44,7 +44,7 @@ parameters:
     type: string
     default: 'service'
   SwiftPassword:
-    description: The password for the swift service account, used by the swift proxy services.
+    description: The password for the swift service account
     type: string
     hidden: true
   KeystoneRegion:
index 0af132e..a37135d 100644 (file)
@@ -51,7 +51,7 @@ parameters:
     description: Whether or not to enable the HAProxy stats interface.
     type: boolean
   RedisPassword:
-    description: The password for Redis
+    description: The password for the redis service account.
     type: string
     hidden: true
   MonitoringSubscriptionHaproxy:
index 070bd7c..28bb865 100644 (file)
@@ -153,5 +153,5 @@ outputs:
           when: heat_api_cfn_apache.rc == 0
         - name: Stop and disable heat_api_cfn service (pre-upgrade not under httpd)
           tags: step1
-          when: heat_api_cfn_apache.rc == 0
+          when: heat_api_cfn_enabled.rc == 0
           service: name=openstack-heat-api-cfn state=stopped enabled=no
index 160b4e4..7d43f68 100644 (file)
@@ -32,7 +32,7 @@ parameters:
     type: json
   NovaPassword:
     type: string
-    description: The password for the nova service and db account, used by nova-api.
+    description: The password for the nova service and db account
     hidden: true
   NeutronPassword:
     description: The password for the neutron service and db account, used by neutron agents.
index f2b062e..a9ffabe 100644 (file)
@@ -31,8 +31,9 @@ parameters:
       via parameter_defaults in the resource registry.
     type: json
   AdminPassword:
-    description: Keystone admin user password
+    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
     type: string
+    hidden: true
   KeystoneRegion:
     default: 'regionOne'
     description: Keystone region for endpoint
index 51ecbf2..c60ffcd 100644 (file)
@@ -33,6 +33,26 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  ContrailAnalyticsCollectorHttp:
+    default: 8089
+    description: Contrail Analytics Collector http port
+    type: number
+  ContrailAnalyticsCollectorSandesh:
+    default: 8086
+    description: Contrail Analytics Collector sandesh port
+    type: number
+  ContrailAnalyticsHttp:
+    default: 8090
+    description: Contrail Analytics http  port
+    type: number
+  ContrailAnalyticsRedis:
+    default: 6379
+    description: Contrail Analytics redis  port
+    type: number
+  ContrailAnalyticsApi:
+    default: 8081
+    description: Contrail Analytics Api  port
+    type: number
 
 resources:
   ContrailBase:
@@ -41,7 +61,6 @@ resources:
       ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
       RoleName: {get_param: RoleName}
       RoleParameters: {get_param: RoleParameters}
 
@@ -53,14 +72,14 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::analytics::collector_http_server_port: {get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal, port]}
-            contrail::analytics::collector_sandesh_port: {get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal, port]}
+          - contrail::analytics::collector_http_server_port: {get_param: ContrailAnalyticsCollectorHttp}
+            contrail::analytics::collector_sandesh_port: {get_param: ContrailAnalyticsCollectorSandesh}
             contrail::analytics::host_ip: {get_param: [ServiceNetMap, ContrailAnalyticsNetwork]}
-            contrail::analytics::http_server_port: {get_param: [EndpointMap, ContrailAnalyticsHttpInternal, port]}
+            contrail::analytics::http_server_port: {get_param: ContrailAnalyticsHttp}
             contrail::analytics::listen_ip_address: {get_param: [ServiceNetMap, ContrailAnalyticsNetwork]}
             contrail::analytics::redis_server: '127.0.0.1'
-            contrail::analytics::redis_server_port: {get_param: [EndpointMap, ContrailAnalyticsRedisInternal, port]}
+            contrail::analytics::redis_server_port: {get_param: ContrailAnalyticsRedis}
             contrail::analytics::rest_api_ip: {get_param: [ServiceNetMap, ContrailAnalyticsNetwork]}
-            contrail::analytics::rest_api_port: {get_param: [EndpointMap, ContrailAnalyticsApiInternal, port]}
+            contrail::analytics::rest_api_port: {get_param: ContrailAnalyticsApi}
       step_config: |
         include ::tripleo::network::contrail::analytics
index 9ee8a65..77c30bd 100644 (file)
@@ -30,16 +30,16 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailAAAMode:
+  AAAMode:
     description: AAAmode can be no-auth, cloud-admin or rbac
     type: string
     default: 'rbac'
-  ContrailAAAModeAnalytics:
+  AAAModeAnalytics:
     description: AAAmode for analytics can be no-auth, cloud-admin or rbac
     type: string
     default: 'no-auth'
   AdminPassword:
-    description: Keystone admin user password
+    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
     type: string
     hidden: true
   AdminTenantName:
@@ -47,25 +47,33 @@ parameters:
     type: string
     default: 'admin'
   AdminToken:
-    description: Keystone admin token
+    description: The keystone auth secret and db password.
     type: string
     hidden: true
   AdminUser:
     description: Keystone admin user name
     type: string
     default: 'admin'
-  AuthPortSSL:
-    default: 13357
-    description: Keystone SSL port
-    type: number
-  AuthPortSSLPublic:
-    default: 13000
-    description: Keystone Public SSL port
-    type: number
   ContrailAuth:
     default: 'keystone'
     description: Keystone authentication method
     type: string
+  ContrailAnalyticsVIP:
+    default: ''
+    description: Contrail Analytics Api Virtual IP address
+    type: string
+  ContrailConfigPort:
+    default: 8082
+    description: Contrail Config Api port
+    type: number
+  ContrailConfigVIP:
+    default: ''
+    description: Contrail Config Virtual IP address
+    type: string
+  ContrailDiscoveryPort:
+    default: 5998
+    description: Contrail Config Api  port
+    type: number
   ContrailInsecure:
     default: false
     description: Keystone insecure mode
@@ -74,6 +82,14 @@ parameters:
     default: '127.0.0.1:12111'
     description: Memcached server
     type: string
+  ContrailVIP:
+    default: ''
+    description: Contrail VIP
+    type: string
+  ContrailWebuiVIP:
+    default: ''
+    description: Contrail Webui Virtual IP address
+    type: string
   RabbitPassword:
     description: The password for RabbitMQ
     type: string
@@ -87,29 +103,49 @@ parameters:
     description: Set rabbit subscriber port, change this if using SSL
     type: number
 
+conditions:
+  contrail_config_vip_unset: {equals : [{get_param: ContrailConfigVIP}, '']}
+  contrail_analytics_vip_unset: {equals : [{get_param: ContrailAnalyticsVIP}, '']}
+  contrail_webui_vip_unset: {equals : [{get_param: ContrailWebuiVIP}, '']}
+
 outputs:
   role_data:
     description: Shared role data for the Contrail services.
     value:
       service_name: contrail_base
       config_settings:
-        contrail::aaa_mode: {get_param: ContrailAAAMode}
-        contrail::analytics_aaa_mode: {get_param: ContrailAAAModeAnalytics}
-        contrail::admin_password: {get_param: AdminPassword}
-        contrail::admin_tenant_name: {get_param: AdminTenantName}
-        contrail::admin_token: {get_param: AdminToken}
-        contrail::admin_user: {get_param: AdminUser}
-        contrail::auth: {get_param: ContrailAuth}
-        contrail::auth_host: {get_param: [EndpointMap, KeystonePublic, host] }
-        contrail::auth_port: {get_param: [EndpointMap, KeystoneAdmin, port] }
-        contrail::auth_port_ssl: {get_param: AuthPortSSL }
-        contrail::auth_port_public: {get_param: [EndpointMap, KeystonePublic, port] }
-        contrail::auth_port_ssl_public: {get_param: AuthPortSSLPublic }
-        contrail::auth_protocol: {get_param: [EndpointMap, KeystoneInternal, protocol] }
-        contrail::api_port: {get_param: [EndpointMap, ContrailConfigInternal, port] }
-        contrail::disc_server_port: {get_param: [EndpointMap, ContrailDiscoveryInternal, port] }
-        contrail::insecure: {get_param: ContrailInsecure}
-        contrail::memcached_server: {get_param: ContrailMemcachedServer}
-        contrail::rabbit_password: {get_param: RabbitPassword}
-        contrail::rabbit_user: {get_param: RabbitUserName}
-        contrail::rabbit_port: {get_param: RabbitClientPort}
+        map_merge:
+        - contrail::aaa_mode: {get_param: AAAMode}
+          contrail::analytics_aaa_mode: {get_param: AAAModeAnalytics}
+          contrail::admin_password: {get_param: AdminPassword}
+          contrail::admin_tenant_name: {get_param: AdminTenantName}
+          contrail::admin_token: {get_param: AdminToken}
+          contrail::admin_user: {get_param: AdminUser}
+          contrail::auth: {get_param: ContrailAuth}
+          contrail::auth_host: {get_param: [EndpointMap, KeystoneAdmin, host] }
+          contrail::auth_port: {get_param: [EndpointMap, KeystoneAdmin, port] }
+          contrail::auth_port_public: {get_param: [EndpointMap, KeystonePublic, port] }
+          contrail::auth_protocol: {get_param: [EndpointMap, KeystonePublic, protocol] }
+          contrail::api_port: {get_param: ContrailConfigPort }
+          contrail::disc_server_port: {get_param: ContrailDiscoveryPort }
+          contrail::insecure: {get_param: ContrailInsecure}
+          contrail::memcached_server: {get_param: ContrailMemcachedServer}
+          contrail::rabbit_password: {get_param: RabbitPassword}
+          contrail::rabbit_user: {get_param: RabbitUserName}
+          contrail::rabbit_port: {get_param: RabbitClientPort}
+          contrail::vip: {get_param: ContrailVIP}
+        - 
+          if:
+          - contrail_config_vip_unset
+          - {}
+          - contrail_config_vip: {get_param: ContrailConfigVIP}
+        - 
+          if:
+          - contrail_webui_vip_unset
+          - {}
+          - contrail_webui_vip: {get_param: ContrailWebuiVIP}
+        - 
+          if:
+          - contrail_analytics_vip_unset
+          - {}
+          - contrail_analytics_vip: {get_param: ContrailAnalyticsVIP}
index d11cf6d..210c81d 100644 (file)
@@ -41,6 +41,10 @@ parameters:
     description: Ifmap user password
     type: string
     default: 'api-server'
+  ContrailConfigPort:
+    default: 8082
+    description: Contrail Config Api port
+    type: number
 
 resources:
   ContrailBase:
@@ -64,8 +68,8 @@ outputs:
           - contrail::config::ifmap_password: {get_param: ContrailConfigIfmapUserPassword}
             contrail::config::ifmap_username: {get_param: ContrailConfigIfmapUserName}
             contrail::config::listen_ip_address: {get_param: [ServiceNetMap, ContrailConfigNetwork]}
-            contrail::config::listen_port: {get_param: [EndpointMap, ContrailConfigInternal, port] }
+            contrail::config::listen_port: {get_param: ContrailConfigPort}
             contrail::config::redis_server: '127.0.0.1'
-            contrail::config::host_ip: {get_param: [ServiceNetMap, ContrailConfigNetwork] }
+            contrail::config::host_ip: {get_param: [ServiceNetMap, ContrailConfigNetwork]}
       step_config: |
         include ::tripleo::network::contrail::config
index 529160e..20951b0 100644 (file)
@@ -41,6 +41,10 @@ parameters:
     description: sda1/256 hmac key, e.g. echo -n "values" | openssl dgst -sha256 -hmac key -binary | base64
     type: string
     hidden: true
+  ContrailControlManageNamed:
+    description: named config file mgmt
+    type: string
+    default: true
 
 resources:
   ContrailBase:
@@ -64,5 +68,6 @@ outputs:
           - contrail::control::asn: {get_param: ContrailControlASN }
             contrail::control::host_ip: {get_param: [ServiceNetMap, ContrailControlNetwork]}
             contrail::control::rndc_secret: {get_param: ContrailControlRNDCSecret}
+            contrail::control::manage_named: {get_param: ContrailControlManageNamed}
       step_config: |
         include ::tripleo::network::contrail::control
diff --git a/puppet/services/network/contrail-dpdk.yaml b/puppet/services/network/contrail-dpdk.yaml
new file mode 100644 (file)
index 0000000..1f33189
--- /dev/null
@@ -0,0 +1,82 @@
+heat_template_version: pike
+
+description: >
+  OpenStack Neutron Compute OpenContrail plugin
+
+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: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NeutronMetadataProxySharedSecret:
+    description: Metadata Secret
+    type: string
+    hidden: true
+  ContrailVrouterPhysicalInterface:
+    default: 'eth0'
+    description: vRouter physical interface
+    type: string
+  ContrailVrouterGateway:
+    default: '192.168.24.1'
+    description: vRouter default gateway
+    type: string
+  ContrailVrouterNetmask:
+    default: '255.255.255.0'
+    description: vRouter netmask
+    type: string
+
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Compute OpenContrail plugin
+    value:
+      service_name: contrail_dpdk
+      config_settings:
+        map_merge:
+          - get_attr: [ContrailBase, role_data, config_settings]
+          - contrail::vrouter::host_ip: {get_param: [ServiceNetMap, ContrailVrouterNetwork]}
+            contrail::vrouter::is_dpdk: 'true'
+            contrail::vrouter::physical_interface: {get_param: ContrailVrouterPhysicalInterface}
+            contrail::vrouter::gateway: {get_param: ContrailVrouterGateway}
+            contrail::vrouter::netmask: {get_param: ContrailVrouterNetmask}
+            contrail::vrouter::metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+            tripleo.neutron_compute_plugin_opencontrail.firewall_rules:
+              '111 neutron_compute_plugin_opencontrail proxy':
+                dport:
+                  - 8097
+                  - 8085
+                proto: tcp
+      step_config: |
+        include ::tripleo::network::contrail::vrouter
index 95951fd..50a6be4 100644 (file)
@@ -33,7 +33,7 @@ parameters:
   ContrailExtensions:
     description: List of OpenContrail extensions to be enabled
     type: comma_delimited_list
-    default: ''
+    default: 'ipam:neutron_plugin_contrail.plugins.opencontrail.contrail_plugin_ipam.NeutronPluginContrailIpam,policy:neutron_plugin_contrail.plugins.opencontrail.contrail_plugin_policy.NeutronPluginContrailPolicy,route-table:neutron_plugin_contrail.plugins.opencontrail.contrail_plugin_vpc.NeutronPluginContrailVpc,contrail:None'
 
 resources:
   ContrailBase:
@@ -54,7 +54,7 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - neutron::api_extensions_path: /usr/lib/python2.7/site-packages/neutron_plugin_contrail/extensions
+          - neutron::api_extensions_path: '/usr/lib/python2.7/site-packages/neutron_plugin_contrail/extensions:/usr/lib/python2.7/site-packages/neutron_lbaas/extensions'
             contrail::vrouter::contrail_extensions: {get_param: ContrailExtensions}
       step_config: |
         include tripleo::network::contrail::neutron_plugin
index 469e18c..058b9dc 100644 (file)
@@ -33,15 +33,15 @@ parameters:
   NeutronMetadataProxySharedSecret:
     description: Metadata Secret
     type: string
-  VrouterPhysicalInterface:
+  ContrailVrouterPhysicalInterface:
     default: 'eth0'
     description: vRouter physical interface
     type: string
-  VrouterGateway:
+  ContrailVrouterGateway:
     default: '192.168.24.1'
     description: vRouter default gateway
     type: string
-  VrouterNetmask:
+  ContrailVrouterNetmask:
     default: '255.255.255.0'
     description: vRouter netmask
     type: string
@@ -65,10 +65,10 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::vrouter::host_ip: {get_param: [ServiceNetMap, NeutronCorePluginOpencontrailNetwork]}
-            contrail::vrouter::physical_interface: {get_param: VrouterPhysicalInterface}
-            contrail::vrouter::gateway: {get_param: VrouterGateway}
-            contrail::vrouter::netmask: {get_param: VrouterNetmask}
+          - contrail::vrouter::host_ip: {get_param: [ServiceNetMap, ContrailVrouterNetwork]}
+            contrail::vrouter::physical_interface: {get_param: ContrailVrouterPhysicalInterface}
+            contrail::vrouter::gateway: {get_param: ContrailVrouterGateway}
+            contrail::vrouter::netmask: {get_param: ContrailVrouterNetmask}
             contrail::vrouter::metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
             contrail::vrouter::is_tsn: 'true'
             tripleo.neutron_compute_plugin_opencontrail.firewall_rules:
index d36a565..981fe2f 100644 (file)
@@ -46,6 +46,10 @@ parameters:
     default: '255.255.255.0'
     description: vRouter netmask
     type: string
+  ContrailVrouterControlNodeIps:
+    description: List of Contrail Node IPs
+    type: comma_delimited_list
+    default: ''
 
 resources:
   ContrailBase:
@@ -66,14 +70,16 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::vrouter::host_ip: {get_param: [ServiceNetMap, NeutronCorePluginOpencontrailNetwork]}
+          - contrail::vrouter::host_ip: {get_param: [ServiceNetMap, ContrailVrouterNetwork]}
             contrail::vrouter::physical_interface: {get_param: ContrailVrouterPhysicalInterface}
             contrail::vrouter::gateway: {get_param: ContrailVrouterGateway}
             contrail::vrouter::netmask: {get_param: ContrailVrouterNetmask}
             contrail::vrouter::metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
-            tripleo.neutron_compute_plugin_opencontrail.firewall_rules:
-              '111 neutron_compute_plugin_opencontrail proxy':
+            contrail::vrouter::control_node_ips: {get_param: ContrailVrouterControlNodeIps}
+            tripleo.contrail_vrouter.firewall_rules:
+              '111 contrail_vrouter_8085':
+                dport: 8085
+              '112 contrail_vrouter_8097':
                 dport: 8097
-                proto: tcp
       step_config: |
         include ::tripleo::network::contrail::vrouter
index aa73fb9..8f96643 100644 (file)
@@ -33,6 +33,14 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  ContrailWebuiHttp:
+    default: 8080
+    description: Contrail Webui http port
+    type: number
+  ContrailWebuiHttps:
+    default: 8143
+    description: Contrail Webui https port
+    type: number
 
 resources:
   ContrailBase:
@@ -53,8 +61,8 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::webui::http_port: {get_param: [EndpointMap, ContrailWebuiHttpInternal, port] }
-            contrail::webui::https_port: {get_param: [EndpointMap, ContrailWebuiHttpsInternal, port] }
+          - contrail::webui::http_port: {get_param: ContrailWebuiHttp }
+            contrail::webui::https_port: {get_param: ContrailWebuiHttps }
             contrail::webui::redis_ip: '127.0.0.1'
       step_config: |
         include ::tripleo::network::contrail::webui
index d650b11..459a968 100644 (file)
@@ -50,7 +50,7 @@ parameters:
     description: Allow automatic l3-agent failover
     type: string
   NovaPassword:
-    description: The password for the nova service and db account, used by nova-api.
+    description: The password for the nova service and db account
     type: string
     hidden: true
   NeutronEnableDVR:
index 5842149..f1a5653 100644 (file)
@@ -31,7 +31,7 @@ parameters:
                  via parameter_defaults in the resource registry.
     type: json
   NovaPassword:
-    description: The password for the nova service account, used by nova-api.
+    description: The password for the nova service and db account
     type: string
     hidden: true
   NuageMetadataPort:
index a28f467..b413fb1 100644 (file)
@@ -35,7 +35,7 @@ parameters:
     description: Number of workers for Nova services.
     type: number
   NovaPassword:
-    description: The password for the nova service and db account, used by nova-api.
+    description: The password for the nova service and db account
     type: string
     hidden: true
   KeystoneRegion:
index 82f8bc1..08302ee 100644 (file)
@@ -41,7 +41,7 @@ parameters:
     constraints:
       - allowed_values: [ 'messagingv2', 'noop' ]
   NovaPassword:
-    description: The password for the nova service and db account, used by nova-api.
+    description: The password for the nova service and db account
     type: string
     hidden: true
   NeutronPassword:
index 5cb4ef5..916cefd 100644 (file)
@@ -35,7 +35,7 @@ parameters:
     description: Number of workers for Nova services.
     type: number
   NovaPassword:
-    description: The password for the nova service and db account, used by nova-placement.
+    description: The password for the nova service and db account
     type: string
     hidden: true
   KeystoneRegion:
index 283bb3f..06e8180 100644 (file)
@@ -35,7 +35,7 @@ parameters:
     description: Set to True to enable debugging on all services.
     type: string
   SwiftPassword:
-    description: The password for the swift service account, used by the swift proxy services.
+    description: The password for the swift service account
     type: string
     hidden: true
   SwiftProxyNodeTimeout:
index 40bc136..f9c3cba 100644 (file)
@@ -130,6 +130,7 @@ outputs:
             - openstack-swift-container-updater
             - openstack-swift-container
             - openstack-swift-object-auditor
+            - openstack-swift-object-expirer
             - openstack-swift-object-replicator
             - openstack-swift-object-updater
             - openstack-swift-object
diff --git a/puppet/services/tuned.yaml b/puppet/services/tuned.yaml
new file mode 100644 (file)
index 0000000..f1dec93
--- /dev/null
@@ -0,0 +1,50 @@
+heat_template_version: ocata
+
+description: >
+  Configure tuned
+
+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
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    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
+  TunedProfileName:
+    default: ''
+    description: Tuned Profile to apply to the host
+    type: string
+
+outputs:
+  role_data:
+    description: Role data for tuned
+    value:
+      service_name: tuned
+      config_settings:
+        map_replace:
+          - map_replace:
+            - tripleo::profile::base::tuned::profile: TunedProfileName
+            - values: {get_param: RoleParameters}
+          - values: {'TunedProfileName': {get_param: TunedProfileName}}
+      step_config: |
+        include ::tripleo::profile::base::tuned
index bcb9e38..fe641ad 100644 (file)
@@ -19,13 +19,41 @@ description: >
 parameters:
   VrtsRabbitPassword:
     type: string
-    default: ''
+    description: The Rabbitmq password of the hyperscale user. Mandatory.
   VrtsKeystonePassword:
     type: string
-    default: ''
+    description: The Keystone password of the hyperscale service. Mandatory.
   VrtsMysqlPassword:
+    type: string
+    description: The MySQL password of the hyperscale user. Mandatory.
+  VrtsCtrlMgmtIP:
+    type: string
+    default: ''
+    description: The management IP of HyperScale. The value will be inferred
+                 from the rest of the deployment settings if left blank.
+  VrtsDashboardIP:
+    type: string
+    default: ''
+    description: The dashboard IP of HyperScale. The value will be inferred
+                 from the rest of the deployment settings if left blank.
+  VrtsZookeeperIP:
+    type: string
+    description: The IP of a node where Zookeeper is configured. Mandatory.
+  VrtsSSHPassword:
+    type: string
+    description: The SSH password of the hyperscale user. Mandatory.
+  VrtsConfigParam1:
+    type: string
+    default: ''
+    description: Additional config parameter. Optional.
+  VrtsConfigParam2:
+    type: string
+    default: ''
+    description: Additional config parameter. Optional.
+  VrtsConfigParam3:
     type: string
     default: ''
+    description: Additional config parameter. Optional.
   ServiceData:
     default: {}
     description: Dictionary packing service data
@@ -59,6 +87,14 @@ outputs:
     value:
       service_name: veritas_hyperscale_controller
       config_settings:
+      global_config_settings:
+        vrts_ctrl_mgmt_ip: {get_param: VrtsCtrlMgmtIP}
+        vrts_dashboard_ip: {get_param: VrtsDashboardIP}
+        vrts_zookeeper_ip: {get_param: VrtsZookeeperIP}
+        vrts_ssh_passwd: {get_param: VrtsSSHPassword}
+        vrts_config_param1: {get_param: VrtsConfigParam1}
+        vrts_config_param2: {get_param: VrtsConfigParam2}
+        vrts_config_param3: {get_param: VrtsConfigParam3}
       step_config: |
         include ::veritas_hyperscale::controller_pkg_inst
       service_config_settings:
diff --git a/releasenotes/notes/ceph-ansible-workflow-70f7d52faf4cd419.yaml b/releasenotes/notes/ceph-ansible-workflow-70f7d52faf4cd419.yaml
new file mode 100644 (file)
index 0000000..c7d1826
--- /dev/null
@@ -0,0 +1,14 @@
+---
+prelude: >
+  Deployment of Ceph in containers is implemented using a Mistral workflow.
+other:
+  - |
+    It is possible to deploy Ceph in docker containers in the overcloud. This
+    is implemented by triggering `ceph-ansible` via a Mistral workflow. A new
+    `CephAnsibleExtraConfig` parameter has been added to the templates and can
+    be used to provide arbitrary config variables consumed by `ceph-ansible`.
+    The pre-existing template params consumed by the TripleO Pike release to
+    drive `puppet-ceph` continue to work and are translated, when possible, into
+    their equivalent `ceph-ansible` variable. To enable the deployment of Ceph
+    in containers use `environments/ceph-ansible/ceph-ansible.yaml` when
+    deploying the overcloud.
\ No newline at end of file
diff --git a/releasenotes/notes/contrail-bugfixes-and-dpdk-enabling-0233a06e23259660.yaml b/releasenotes/notes/contrail-bugfixes-and-dpdk-enabling-0233a06e23259660.yaml
new file mode 100644 (file)
index 0000000..776c7b4
--- /dev/null
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    This patch enables the configuration of Contrail DPDK on the Compute nodes
+    by specifying the required parameters in an environment file.
+fixes:
+  - |
+    The patch moves the Contrail control plane communication from the public
+    network to the internal_api network.
diff --git a/releasenotes/notes/ps-san_private_key-5aa111e7907ba600.yaml b/releasenotes/notes/ps-san_private_key-5aa111e7907ba600.yaml
new file mode 100644 (file)
index 0000000..6359331
--- /dev/null
@@ -0,0 +1,4 @@
+---
+features:
+  - Added new parameter san_private_key to configure SSH Private Key
+    for the PS Series cinder backend
diff --git a/releasenotes/notes/tuned-service-650c0eec1cf12a4d.yaml b/releasenotes/notes/tuned-service-650c0eec1cf12a4d.yaml
new file mode 100644 (file)
index 0000000..30e72db
--- /dev/null
@@ -0,0 +1,4 @@
+---
+features:
+  - Allows the user to set the tuned profile on a given
+    host. Defaults to throughput-performance.
index 3779d23..e4fdfa4 100644 (file)
@@ -28,3 +28,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
index 647c4d5..f3978c5 100644 (file)
@@ -25,3 +25,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
index de35648..ec9e369 100644 (file)
@@ -43,4 +43,5 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
index d20b5f3..a1342dc 100644 (file)
@@ -43,4 +43,5 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
index 34a23b4..c97f7a7 100644 (file)
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
     - OS::TripleO::Services::Zaqar
index 1feb12f..398736a 100644 (file)
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
     - OS::TripleO::Services::Zaqar
 
index 75b26a8..e101fd4 100644 (file)
@@ -22,4 +22,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
-
+    - OS::TripleO::Services::Tuned
index 8a29b33..ae848bc 100644 (file)
@@ -19,3 +19,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
index 5b06063..47e0f92 100644 (file)
@@ -21,4 +21,5 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
 
index 635c430..311e0a7 100644 (file)
@@ -36,4 +36,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
-
+    - OS::TripleO::Services::Tuned
index 27dc123..81bedbd 100644 (file)
@@ -28,3 +28,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
index d23ab6e..b1c7379 100644 (file)
@@ -29,4 +29,4 @@
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
-
+    - OS::TripleO::Services::Tuned
index d462fb2..a408a21 100644 (file)
@@ -43,6 +43,7 @@
     - OS::TripleO::Services::SwiftProxy
     - OS::TripleO::Services::SwiftRingBuilder
     - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::UndercloudAodhApi
     - OS::TripleO::Services::UndercloudAodhEvaluator
     - OS::TripleO::Services::UndercloudAodhListener
index 466164f..5918718 100644 (file)
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
     - OS::TripleO::Services::Zaqar
 ###############################################################################
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::Vpp
 ###############################################################################
 # Role: BlockStorage                                                          #
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
 ###############################################################################
 # Role: ObjectStorage                                                         #
 ###############################################################################
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
 ###############################################################################
 # Role: CephStorage                                                           #
 ###############################################################################
     - OS::TripleO::Services::Timezone
     - OS::TripleO::Services::TripleoFirewall
     - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::Tuned
 
index 2c8e479..d61d1a2 100644 (file)
@@ -46,6 +46,7 @@
     - OS::TripleO::Services::SwiftProxy
     - OS::TripleO::Services::SwiftRingBuilder
     - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::Tuned
     - OS::TripleO::Services::UndercloudAodhApi
     - OS::TripleO::Services::UndercloudAodhEvaluator
     - OS::TripleO::Services::UndercloudAodhListener
index aa0385c..dc4fbb1 100644 (file)
@@ -26,6 +26,10 @@ environments:
       NovaEnableRbdBackend: True
       GlanceBackend: rbd
       GnocchiBackend: rbd
+    resource_registry:
+      OS::TripleO::Services::CephMon: ../../puppet/services/ceph-mon.yaml
+      OS::TripleO::Services::CephOSD: ../../puppet/services/ceph-osd.yaml
+      OS::TripleO::Services::CephClient: ../../puppet/services/ceph-client.yaml
     description: |
       Include this environment to enable Ceph as the backend for
       Cinder, Nova, Gnocchi, and Glance.
index 33d12ee..374cd6e 100755 (executable)
@@ -31,6 +31,7 @@ envs_containing_endpoint_map = ['tls-endpoints-public-dns.yaml',
                                 'tls-endpoints-public-ip.yaml',
                                 'tls-everywhere-endpoints-dns.yaml']
 ENDPOINT_MAP_FILE = 'endpoint_map.yaml'
+OPTIONAL_SECTIONS = ['service_workflow_tasks']
 REQUIRED_DOCKER_SECTIONS = ['service_name', 'docker_config', 'puppet_config',
                             'config_settings', 'step_config']
 OPTIONAL_DOCKER_SECTIONS = ['docker_puppet_tasks', 'upgrade_tasks',
@@ -62,7 +63,6 @@ PARAMETER_DEFINITION_EXCLUSIONS = {'ManagementNetCidr': ['default'],
                                    'NeutronMetadataProxySharedSecret': [
                                        'description', 'hidden'],
                                    'ServiceNetMap': ['description', 'default'],
-                                   'RedisPassword': ['description'],
                                    'EC2MetadataIp': ['default'],
                                    'network': ['default'],
                                    'ControlPlaneIP': ['default',
@@ -74,7 +74,6 @@ PARAMETER_DEFINITION_EXCLUSIONS = {'ManagementNetCidr': ['default'],
                                    'NeutronWorkers': ['description'],
                                    'TenantIpSubnet': ['description'],
                                    'ExternalNetName': ['description'],
-                                   'AdminToken': ['description'],
                                    'ControlPlaneDefaultRoute': ['default'],
                                    'StorageMgmtNetName': ['description'],
                                    'ServerMetadata': ['description'],
@@ -108,16 +107,13 @@ PARAMETER_DEFINITION_EXCLUSIONS = {'ManagementNetCidr': ['default'],
                                    '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'],
@@ -271,6 +267,8 @@ def validate_docker_service(filename, tpl):
             else:
                 if section_name in OPTIONAL_DOCKER_SECTIONS:
                     continue
+                elif section_name in OPTIONAL_SECTIONS:
+                    continue
                 else:
                     print('ERROR: %s is extra in role_data for %s.'
                           % (section_name, filename))