Re-organizes Contrail services to the correct roles
authorMichael Henkel <mhenkel@juniper.net>
Thu, 26 Jan 2017 14:24:04 +0000 (15:24 +0100)
committerMichael Henkel <mhenkel@juniper.net>
Wed, 8 Feb 2017 19:25:41 +0000 (20:25 +0100)
In current setup some Contrail services belong to the wrong roles.
The Contrail control plane can be impacted if the Analytics database has
problems.

Change-Id: I0d57a2324c38b5b20cc687c6217a7a364941f7e6
Depends-On: Id0dd35b95c5fe9d0fcc1e16c4b7d6cc601f10818
Closes-Bug: #1659560

27 files changed:
environments/contrail/contrail-net.yaml [new file with mode: 0644]
environments/contrail/contrail-nic-config-compute.yaml [new file with mode: 0644]
environments/contrail/contrail-services.yaml [new file with mode: 0644]
environments/contrail/roles_data_contrail.yaml [new file with mode: 0644]
environments/neutron-opencontrail.yaml [deleted file]
environments/tls-endpoints-public-dns.yaml
environments/tls-endpoints-public-ip.yaml
environments/tls-everywhere-endpoints-dns.yaml
firstboot/install_vrouter_kmod.yaml [new file with mode: 0644]
network/endpoints/endpoint_data.yaml
network/endpoints/endpoint_map.yaml
network/service_net_map.j2.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml [deleted file]
puppet/services/network/contrail-analytics-database.yaml [new file with mode: 0644]
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-database.yaml
puppet/services/network/contrail-heat.yaml [new file with mode: 0644]
puppet/services/network/contrail-neutron-plugin.yaml [new file with mode: 0644]
puppet/services/network/contrail-provision.yaml [moved from puppet/services/neutron-compute-plugin-opencontrail.yaml with 56% similarity]
puppet/services/network/contrail-tsn.yaml [new file with mode: 0644]
puppet/services/network/contrail-vrouter.yaml [new file with mode: 0644]
puppet/services/network/contrail-webui.yaml
puppet/services/neutron-plugin-opencontrail.yaml [deleted file]

diff --git a/environments/contrail/contrail-net.yaml b/environments/contrail/contrail-net.yaml
new file mode 100644 (file)
index 0000000..1e64f91
--- /dev/null
@@ -0,0 +1,26 @@
+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
+
+parameter_defaults:
+  ControlPlaneSubnetCidr: '24'
+  ControlPlaneDefaultRoute: 192.0.2.254
+  InternalApiNetCidr: 10.0.0.0/24
+  InternalApiAllocationPools: [{'start': '10.0.0.10', 'end': '10.0.0.200'}]
+  InternalApiDefaultRoute: 10.0.0.1
+  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.0.2.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
+  ControlVirtualInterface: eth0
+  PublicVirtualInterface: vlan10
diff --git a/environments/contrail/contrail-nic-config-compute.yaml b/environments/contrail/contrail-nic-config-compute.yaml
new file mode 100644 (file)
index 0000000..3007638
--- /dev/null
@@ -0,0 +1,167 @@
+heat_template_version: ocata
+
+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
+              - type: interface
+                name: vhost0
+                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
diff --git a/environments/contrail/contrail-services.yaml b/environments/contrail/contrail-services.yaml
new file mode 100644 (file)
index 0000000..80ef9d3
--- /dev/null
@@ -0,0 +1,45 @@
+# A Heat environment file which can be used to enable OpenContrail
+# # extensions, configured via puppet
+resource_registry:
+  OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  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
+  OS::TripleO::Services::ContrailConfig: ../../puppet/services/network/contrail-config.yaml
+  OS::TripleO::Services::ContrailControl: ../../puppet/services/network/contrail-control.yaml
+  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::ComputeNeutronCorePluginContrail: ../../puppet/services/network/contrail-vrouter.yaml
+  OS::TripleO::Services::NeutronCorePluginContrail: ../../puppet/services/network/contrail-neutron-plugin.yaml
+parameter_defaults:
+  ContrailRepo: http://192.168.24.1/contrail-3.2.0.0-19
+  EnablePackageInstall: true
+#  ContrailConfigIfmapUserName: api-server
+#  ContrailConfigIfmapUserPassword: api-server
+  OvercloudControlFlavor: control
+  OvercloudContrailControllerFlavor: contrail-controller
+  OvercloudContrailAnalyticsFlavor: contrail-analytics
+  OvercloudContrailAnalyticsDatabaseFlavor: contrail-analytics-database
+  OvercloudContrailTsnFlavor: contrail-tsn
+  OvercloudComputeFlavor: compute
+  ControllerCount: 3
+  ContrailControllerCount: 3
+  ContrailAnalyticsCount: 3
+  ContrailAnalyticsDatabaseCount: 3
+  ContrailTsnCount: 1
+  ComputeCount: 3
+  DnsServers: ["8.8.8.8","8.8.4.4"]
+  NtpServer: 10.0.0.1
+  NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
+  NeutronServicePlugins: ''
+  NeutronTunnelTypes: ''
+#  NeutronMetadataProxySharedSecret:
+#  ContrailControlRNDCSecret: # sda1/256 hmac key, e.g. echo -n "values" | openssl dgst -sha256 -hmac key -binary | base64
diff --git a/environments/contrail/roles_data_contrail.yaml b/environments/contrail/roles_data_contrail.yaml
new file mode 100644 (file)
index 0000000..5f6c469
--- /dev/null
@@ -0,0 +1,237 @@
+# Specifies which roles (groups of nodes) will be deployed
+# Note this is used as an input to the various *.j2.yaml
+# jinja2 templates, so that they are converted into *.yaml
+# during the plan creation (via a mistral action/workflow).
+#
+# The format is a list, with the following format:
+#
+# * name: (string) mandatory, name of the role, must be unique
+#
+# CountDefault: (number) optional, default number of nodes, defaults to 0
+# sets the default for the {{role.name}}Count parameter in overcloud.yaml
+#
+# HostnameFormatDefault: (string) optional default format string for hostname
+# defaults to '%stackname%-{{role.name.lower()}}-%index%'
+# sets the default for {{role.name}}HostnameFormat parameter in overcloud.yaml
+#
+# disable_constraints: (boolean) optional, whether to disable Nova and Glance
+# constraints for each role specified in the templates.
+#
+# upgrade_batch_size: (number): batch size for upgrades where tasks are
+# specified by services to run in batches vs all nodes at once.
+# This defaults to 1, but larger batches may be specified here.
+#
+# ServicesDefault: (list) optional default list of services to be deployed
+# on the role, defaults to an empty list. Sets the default for the
+# {{role.name}}Services parameter in overcloud.yaml
+
+- name: Controller # the 'primary' role goes first
+  CountDefault: 1
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::CephMds
+    - OS::TripleO::Services::CephMon
+    - OS::TripleO::Services::CephExternal
+    - OS::TripleO::Services::CephRbdMirror
+    - OS::TripleO::Services::CephRgw
+    - OS::TripleO::Services::CinderApi
+    - OS::TripleO::Services::CinderBackup
+    - OS::TripleO::Services::CinderScheduler
+    - OS::TripleO::Services::CinderVolume
+    - OS::TripleO::Services::ContrailHeat
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Keystone
+    - OS::TripleO::Services::GlanceApi
+    - OS::TripleO::Services::HeatApi
+    - OS::TripleO::Services::HeatApiCfn
+    - OS::TripleO::Services::HeatApiCloudwatch
+    - OS::TripleO::Services::HeatEngine
+    - OS::TripleO::Services::MySQL
+    - OS::TripleO::Services::NeutronApi
+    - OS::TripleO::Services::NeutronCorePlugin
+    - OS::TripleO::Services::RabbitMQ
+    - OS::TripleO::Services::HAproxy
+    - OS::TripleO::Services::Keepalived
+    - OS::TripleO::Services::Memcached
+    - OS::TripleO::Services::Pacemaker
+    - OS::TripleO::Services::Redis
+    - OS::TripleO::Services::NovaConductor
+    - OS::TripleO::Services::MongoDb
+    - OS::TripleO::Services::NovaApi
+    - OS::TripleO::Services::NovaPlacement
+    - OS::TripleO::Services::NovaMetadata
+    - OS::TripleO::Services::NovaScheduler
+    - OS::TripleO::Services::NovaConsoleauth
+    - OS::TripleO::Services::NovaVncProxy
+    - OS::TripleO::Services::Ec2Api
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::SwiftProxy
+    - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::SwiftRingBuilder
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::CeilometerApi
+    - OS::TripleO::Services::CeilometerCollector
+    - OS::TripleO::Services::CeilometerExpirer
+    - OS::TripleO::Services::CeilometerAgentCentral
+    - OS::TripleO::Services::CeilometerAgentNotification
+    - OS::TripleO::Services::Horizon
+    - OS::TripleO::Services::GnocchiApi
+    - OS::TripleO::Services::GnocchiMetricd
+    - OS::TripleO::Services::GnocchiStatsd
+    - OS::TripleO::Services::ManilaApi
+    - OS::TripleO::Services::ManilaScheduler
+    - OS::TripleO::Services::ManilaBackendGeneric
+    - OS::TripleO::Services::ManilaBackendNetapp
+    - OS::TripleO::Services::ManilaBackendCephFs
+    - OS::TripleO::Services::ManilaShare
+    - OS::TripleO::Services::AodhApi
+    - OS::TripleO::Services::AodhEvaluator
+    - OS::TripleO::Services::AodhNotifier
+    - OS::TripleO::Services::AodhListener
+    - OS::TripleO::Services::SaharaApi
+    - OS::TripleO::Services::SaharaEngine
+    - OS::TripleO::Services::IronicApi
+    - OS::TripleO::Services::IronicConductor
+    - OS::TripleO::Services::NovaIronic
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::OpenDaylightApi
+    - OS::TripleO::Services::OpenDaylightOvs
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::BarbicanApi
+    - OS::TripleO::Services::PankoApi
+    - OS::TripleO::Services::Zaqar
+    - OS::TripleO::Services::OVNDBs
+    - OS::TripleO::Services::CinderHPELeftHandISCSI
+    - OS::TripleO::Services::Etcd
+    - OS::TripleO::Services::AuditD
+
+- name: Compute
+  CountDefault: 1
+  HostnameFormatDefault: '%stackname%-novacompute-%index%'
+  disable_upgrade_deployment: True
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::CephClient
+    - OS::TripleO::Services::CephExternal
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::NovaCompute
+    - OS::TripleO::Services::NovaLibvirt
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::ComputeNeutronCorePlugin
+    - OS::TripleO::Services::ComputeNeutronOvsAgent
+    - OS::TripleO::Services::ComputeCeilometerAgent
+    - OS::TripleO::Services::ComputeNeutronL3Agent
+    - OS::TripleO::Services::ComputeNeutronMetadataAgent
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::NeutronSriovAgent
+    - OS::TripleO::Services::OpenDaylightOvs
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::AuditD
+
+- name: BlockStorage
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::BlockStorageCinderVolume
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::AuditD
+
+- name: ObjectStorage
+  disable_upgrade_deployment: True
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::SwiftStorage
+    - OS::TripleO::Services::SwiftRingBuilder
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::AuditD
+
+- name: CephStorage
+  disable_upgrade_deployment: True
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::CephOSD
+    - OS::TripleO::Services::Kernel
+    - OS::TripleO::Services::Ntp
+    - OS::TripleO::Services::Snmp
+    - OS::TripleO::Services::Sshd
+    - OS::TripleO::Services::Timezone
+    - OS::TripleO::Services::TripleoPackages
+    - OS::TripleO::Services::TripleoFirewall
+    - OS::TripleO::Services::SensuClient
+    - OS::TripleO::Services::FluentdClient
+    - OS::TripleO::Services::AuditD
+
+- name: ContrailController
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::ContrailConfig
+    - OS::TripleO::Services::ContrailControl
+    - OS::TripleO::Services::ContrailDatabase
+    - OS::TripleO::Services::ContrailWebUI
+    - 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
+
+- name: ContrailAnalytics
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::ContrailAnalytics
+    - 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
+
+- name: ContrailAnalyticsDatabase
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - OS::TripleO::Services::ContrailAnalyticsDatabase
+    - 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
+
+- name: ContrailTsn
+  ServicesDefault:
+    - OS::TripleO::Services::CACerts
+    - 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
diff --git a/environments/neutron-opencontrail.yaml b/environments/neutron-opencontrail.yaml
deleted file mode 100644 (file)
index 51575b8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-# A Heat environment file which can be used to enable OpenContrail
-# extensions, configured via puppet
-resource_registry:
-  OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml
-  OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
-  OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
-  OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
-  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
-  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
-  # Override the NeutronCorePlugin to use Nuage
-  OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginOpencontrail
-  OS::TripleO::Services::ComputeNeutronCorePlugin: ../puppet/services/neutron-compute-plugin-opencontrail.yaml
-
-parameter_defaults:
-  NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
-  NeutronServicePlugins: neutron_plugin_contrail.plugins.opencontrail.loadbalancer.v2.plugin.LoadBalancerPluginV2
-  NeutronTunnelTypes: ''
-
-  # required params:
-  #ContrailApiServerIp:
-  #ContrailExtensions: ''
-
-  # optional params
-  # ContrailApiServerPort: 8082
-  # ContrailMultiTenancy: false
index a02c479..9f41ac7 100644 (file)
@@ -17,6 +17,39 @@ parameter_defaults:
     CinderAdmin: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
     CinderInternal: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
     CinderPublic: {protocol: 'https', port: '13776', 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 bf4d4f4..51c492b 100644 (file)
@@ -17,6 +17,39 @@ parameter_defaults:
     CinderAdmin: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
     CinderInternal: {protocol: 'http', port: '8776', host: 'IP_ADDRESS'}
     CinderPublic: {protocol: 'https', port: '13776', 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 6193dde..00ca547 100644 (file)
@@ -17,6 +17,39 @@ parameter_defaults:
     CinderAdmin: {protocol: 'https', port: '8776', host: 'CLOUDNAME'}
     CinderInternal: {protocol: 'https', port: '8776', host: 'CLOUDNAME'}
     CinderPublic: {protocol: 'https', port: '13776', 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'}
diff --git a/firstboot/install_vrouter_kmod.yaml b/firstboot/install_vrouter_kmod.yaml
new file mode 100644 (file)
index 0000000..e936e60
--- /dev/null
@@ -0,0 +1,105 @@
+heat_template_version: ocata
+
+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}
index 1b2f842..5cd243c 100644 (file)
@@ -28,6 +28,87 @@ 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 2d60df8..5139856 100644 (file)
@@ -34,6 +34,39 @@ parameters:
       CinderAdmin: {protocol: http, port: '8776', host: IP_ADDRESS}
       CinderInternal: {protocol: http, port: '8776', host: IP_ADDRESS}
       CinderPublic: {protocol: http, port: '8776', 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}
@@ -1816,6 +1849,2289 @@ outputs:
                         template: NETWORK_uri
             - ':'
             - get_param: [EndpointMap, CinderPublic, 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 390b18b..4a249ae 100644 (file)
@@ -27,6 +27,13 @@ parameters:
       ApacheNetwork: internal_api
       NeutronTenantNetwork: tenant
       CeilometerApiNetwork: internal_api
+      ContrailAnalyticsNetwork: internal_api
+      ContrailAnalyticsDatabaseNetwork: internal_api
+      ContrailConfigNetwork: internal_api
+      ContrailControlNetwork: internal_api
+      ContrailDatabaseNetwork: internal_api
+      ContrailWebuiNetwork: internal_api
+      ContrailTsnNetwork: internal_api
       AodhApiNetwork: internal_api
       PankoApiNetwork: internal_api
       BarbicanApiNetwork: internal_api
index 1b9646f..977be20 100644 (file)
@@ -154,7 +154,6 @@ resource_registry:
   OS::TripleO::Services::NeutronCorePluginML2OVN: puppet/services/neutron-plugin-ml2-ovn.yaml
   OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml
   OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
-  OS::TripleO::Services::NeutronCorePluginOpencontrail: puppet/services/neutron-plugin-opencontrail.yaml
   OS::TripleO::Services::OVNDBs: OS::Heat::None
 
   OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml
@@ -228,11 +227,6 @@ resource_registry:
   OS::TripleO::Services::OpenDaylightApi: OS::Heat::None
   OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None
   OS::TripleO::Services::SensuClient: OS::Heat::None
-  OS::TripleO::Services::ContrailAnalytics: puppet/services/network/contrail-analytics.yaml
-  OS::TripleO::Services::ContrailConfig: puppet/services/network/contrail-config.yaml
-  OS::TripleO::Services::ContrailControl: puppet/services/network/contrail-control.yaml
-  OS::TripleO::Services::ContrailDatabase: puppet/services/network/contrail-database.yaml
-  OS::TripleO::Services::ContrailWebui: puppet/services/network/contrail-webui.yaml
   OS::TripleO::Services::TLSProxyBase: OS::Heat::None
   OS::TripleO::Services::Zaqar: OS::Heat::None
   OS::TripleO::Services::NeutronML2FujitsuCfab: OS::Heat::None
diff --git a/puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml b/puppet/extraconfig/pre_deploy/compute/neutron-opencontrail.yaml
deleted file mode 100644 (file)
index 66252f1..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-heat_template_version: ocata
-
-description: Compute node hieradata for Neutron OpenContrail configuration
-
-parameters:
-  server:
-    description: ID of the compute node to apply this config to
-    type: string
-  ContrailApiServerIp:
-    description: IP address of the OpenContrail API server
-    type: string
-  ContrailApiServerPort:
-    description: Port of the OpenContrail API
-    type: string
-    default: 8082
-
-resources:
-  ComputeContrailConfig:
-    type: OS::Heat::StructuredConfig
-    properties:
-      group: os-apply-config
-      config:
-        hiera:
-          datafiles:
-            neutron_opencontrail_data:
-              mapped_data:
-                nova::network::neutron::network_api_class: nova.network.neutronv2.api.API
-
-                contrail::vrouter::provision_vrouter::api_address: {get_input: contrail_api_server_ip}
-                contrail::vrouter::provision_vrouter::api_port: {get_input: contrail_api_server_port}
-                contrail::vrouter::provision_vrouter::keystone_admin_user: admin
-                contrail::vrouter::provision_vrouter::keystone_admin_tenant_name: admin
-                contrail::vrouter::provision_vrouter::keystone_admin_password: '"%{::admin_password}"'
-
-                contrail::vnc_api::vnc_api_config:
-                  'auth/AUTHN_TYPE':
-                    value: keystone
-                  'auth/AUTHN_PROTOCOL':
-                    value: http
-                  'auth/AUTHN_SERVER':
-                    value: "%{hiera('keystone_admin_api_vip')}"
-                  'auth/AUTHN_PORT':
-                    value: 35357
-                  'auth/AUTHN_URL':
-                    value: '/v2.0/tokens'
-
-  ComputeContrailDeployment:
-    type: OS::Heat::StructuredDeployment
-    properties:
-      config: {get_resource: ComputeContrailConfig}
-      server: {get_param: server}
-      input_values:
-        contrail_api_server_ip: {get_param: ContrailApiServerIp}
-        contrail_api_server_port: {get_param: ContrailApiServerPort}
-
-outputs:
-  deploy_stdout:
-    description: Output of the extra hiera data deployment
-    value: {get_attr: [ComputeContrailDeployment, deploy_stdout]}
diff --git a/puppet/services/network/contrail-analytics-database.yaml b/puppet/services/network/contrail-analytics-database.yaml
new file mode 100644 (file)
index 0000000..67341ed
--- /dev/null
@@ -0,0 +1,43 @@
+heat_template_version: ocata
+
+description: >
+  Contrail Analytics Database service deployment using puppet, this YAML file
+  creates the interface between the HOT template
+  and the puppet manifest that actually installs
+  and configures Contrail Analytics Database.
+
+parameters:
+  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
+
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role Contrail Analytics Database using composable services.
+    value:
+      service_name: contrail_analytics_database
+      config_settings:
+        map_merge:
+          - get_attr: [ContrailBase, role_data, config_settings]
+          - contrail::analytics::database::host_ip: {get_param: [ServiceNetMap, ContrailAnalyticsDatabaseNetwork]}
+      step_config: |
+        include ::tripleo::network::contrail::analyticsdatabase
index ad14d31..e3e0ec4 100644 (file)
@@ -21,44 +21,6 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailAnalyticsHostIP:
-    description: host IP address of Analytics
-    type: string
-  ContrailAnalyticsRedisServerIp:
-    description: Redis server ip address
-    type: string
-  ContrailAnalyticsCollectorServerHttpPort:
-    description: Collector http port
-    type: number
-    default: 8089
-  ContrailAnalyticsCollectorSandeshPort:
-    description: Collector sandesh port
-    type: number
-    default: 8086
-  ContrailAnalyticsHttpServerPort:
-    description: Analytics http port
-    type: number
-    default: 8090
-  ContrailAnalyticsListenAddress:
-    default: '0.0.0.0'
-    description: IP address Config API is listening on
-    type: string
-  ContrailAnalyticsListenPort:
-    default: 8082
-    description: Port Config API is listening on
-    type: number
-  ContrailAnalyticsRedisServerPort:
-    description: Redis server port
-    type: number
-    default: 6379
-  ContrailAnalyticsRestApiIp:
-    description: IP address Analytics rest interface listens on
-    type: string
-    default: '0.0.0.0'
-  ContrailAnalyticsRestApiPort:
-    description: Analytics rest port
-    type: number
-    default: 8081
 
 resources:
   ContrailBase:
@@ -76,15 +38,14 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::analytics::collector_http_server_port: {get_param: ContrailAnalyticsCollectorServerHttpPort}
-            contrail::analytics::collector_sandesh_port: {get_param: ContrailAnalyticsCollectorSandeshPort}
-            contrail::analytics::host_ip: {get_param: ContrailAnalyticsHostIP}
-            contrail::analytics::http_server_port: {get_param: ContrailAnalyticsHttpServerPort}
-            contrail::analytics::listen_ip_address: {get_param: ContrailAnalyticsListenAddress}
-            contrail::analytics::listen_port: {get_param: ContrailAnalyticsListenPort}
-            contrail::analytics::redis_server: {get_param: ContrailAnalyticsRedisServerIp}
-            contrail::analytics::redis_server_port: {get_param: ContrailAnalyticsRedisServerPort}
-            contrail::analytics::rest_api_ip: {get_param: ContrailAnalyticsRestApiIp}
-            contrail::analytics::rest_api_port: {get_param: ContrailAnalyticsRestApiPort}
+          - contrail::analytics::collector_http_server_port: {get_param: [EndpointMap, ContrailAnalyticsCollectorHttpInternal, port]}
+            contrail::analytics::collector_sandesh_port: {get_param: [EndpointMap, ContrailAnalyticsCollectorSandeshInternal, port]}
+            contrail::analytics::host_ip: {get_param: [ServiceNetMap, ContrailAnalyticsNetwork]}
+            contrail::analytics::http_server_port: {get_param: [EndpointMap, ContrailAnalyticsHttpInternal, port]}
+            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::rest_api_ip: {get_param: [ServiceNetMap, ContrailAnalyticsNetwork]}
+            contrail::analytics::rest_api_port: {get_param: [EndpointMap, ContrailAnalyticsApiInternal, port]}
       step_config: |
         include ::tripleo::network::contrail::analytics
index b49b2ad..bc56a3c 100644 (file)
@@ -18,47 +18,42 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  ContrailAAAMode:
+    description: AAAmode can be no-auth, cloud-admin or rbac
+    type: string
+    default: 'rbac'
+  ContrailAAAModeAnalytics:
+    description: AAAmode for analytics can be no-auth, cloud-admin or rbac
+    type: string
+    default: 'no-auth'
   AdminPassword:
     description: Keystone admin user password
     type: string
+    hidden: true
   AdminTenantName:
     description: Keystone admin tenant name
     type: string
+    default: 'admin'
   AdminToken:
     description: Keystone admin token
     type: string
+    hidden: true
   AdminUser:
     description: Keystone admin user name
     type: string
-  AuthHost:
-    description: Keystone host IP address
-    type: string
-  AuthPort:
-    default: 35357
-    description: Keystone port
+    default: 'admin'
+  AuthPortSSL:
+    default: 13357
+    description: Keystone SSL port
+    type: number
+  AuthPortSSLPublic:
+    default: 13000
+    description: Keystone Public SSL port
     type: number
-  AuthProtocol:
-    default: 'http'
-    description: Keystone authentication protocol
-    type: string
-  ContrailDiscoveryServerIp:
-    description: Discovery server ip address
-    type: string
-  ContrailKafkaBrokerList:
-    description: List of kafka servers
-    type: comma_delimited_list
   ContrailAuth:
     default: 'keystone'
     description: Keystone authentication method
     type: string
-  ContrailCassandraServerList:
-    default: []
-    description: List of cassandra servers
-    type: comma_delimited_list
-  ContrailDiscoveryServerPort:
-    description: Discovery server port
-    type: number
-    default: 5998
   ContrailInsecure:
     default: false
     description: Keystone insecure mode
@@ -67,14 +62,18 @@ parameters:
     default: '127.0.0.1:12111'
     description: Memcached server
     type: string
-  ContrailMultiTenancy:
-    default: true
-    description: Turn on/off multi-tenancy
-    type: boolean
-  ContrailZkServerIp:
-    default: []
-    description: List of zookeeper servers
-    type: comma_delimited_list
+  RabbitPassword:
+    description: The password for RabbitMQ
+    type: string
+    hidden: true
+  RabbitUserName:
+    default: guest
+    description: The username for RabbitMQ
+    type: string
+  RabbitClientPort:
+    default: 5672
+    description: Set rabbit subscriber port, change this if using SSL
+    type: number
 
 outputs:
   role_data:
@@ -82,19 +81,23 @@ outputs:
     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_host: {get_param: [EndpointMap, KeystoneInternal, host] }
-        contrail::auth_port: {get_param: [EndpointMap, KeystoneInternal, port] }
-        contrail::auth_protocol: {get_param: [EndpointMap, KeystoneInternal, protocol] }
-        contrail::disc_server_ip: {get_param: ContrailDiscoveryServerIp}
-        contrail::kafka_broker_list: {get_param: ContrailKafkaBrokerList}
         contrail::auth: {get_param: ContrailAuth}
-        contrail::cassandra_server_list: {get_param: ContrailCassandraServerList}
-        contrail::disc_server_port: {get_param: ContrailDiscoveryServerPort}
+        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::multi_tenancy: {get_param: ContrailMultiTenancy}
-        contrail::zk_server_ip: {get_param: ContrailZkServerIp}
+        contrail::rabbit_password: {get_param: RabbitPassword}
+        contrail::rabbit_user: {get_param: RabbitUserName}
+        contrail::rabbit_port: {get_param: RabbitClientPort}
index 0377448..185b609 100644 (file)
@@ -21,29 +21,14 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailConfigIfmapServerIp:
-    description: Ifmap server ip address
-    type: string
   ContrailConfigIfmapUserName:
     description: Ifmap user name
     type: string
+    default: 'api-server'
   ContrailConfigIfmapUserPassword:
     description: Ifmap user password
     type: string
-  ContrailConfigRabbitServerIp:
-    description: RabbitMq server ip address
-    type: string
-  ContrailConfigRedisServerIp:
-    description: Redis server ip address
-    type: string
-  ContrailConfigListenAddress:
-    default: '0.0.0.0'
-    description: IP address Config API is listening on
-    type: string
-  ContrailConfigListenPort:
-    default: 8082
-    description: Port Config API is listening on
-    type: number
+    default: 'api-server'
 
 resources:
   ContrailBase:
@@ -62,11 +47,10 @@ outputs:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
           - contrail::config::ifmap_password: {get_param: ContrailConfigIfmapUserPassword}
-            contrail::config::ifmap_server_ip: {get_param: ContrailConfigIfmapServerIp}
             contrail::config::ifmap_username: {get_param: ContrailConfigIfmapUserName}
-            contrail::config::listen_ip_address: {get_param: ContrailConfigListenAddress}
-            contrail::config::listen_port: {get_param: ContrailConfigListenPort}
-            contrail::config::rabbit_server: {get_param: ContrailConfigRabbitServerIp}
-            contrail::config::redis_server: {get_param: ContrailConfigRedisServerIp}
+            contrail::config::listen_ip_address: {get_param: [ServiceNetMap, ContrailConfigNetwork]}
+            contrail::config::listen_port: {get_param: [EndpointMap, ContrailConfigInternal, port] }
+            contrail::config::redis_server: '127.0.0.1'
+            contrail::config::host_ip: {get_param: [ServiceNetMap, ContrailConfigNetwork] }
       step_config: |
         include ::tripleo::network::contrail::config
index 7c28d28..0964989 100644 (file)
@@ -21,15 +21,14 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailControlHostIP:
-    description: host IP address of Analytics
-    type: string
-  ContrailControlIfmapUserName:
-    description: Ifmap user name
-    type: string
-  ContrailControlIfmapUserPassword:
-    description: Ifmap user password
+  ContrailControlASN:
+    description: Autonomous System Number
+    type: number
+    default: 64512
+  ContrailControlRNDCSecret:
+    description: sda1/256 hmac key, e.g. echo -n "values" | openssl dgst -sha256 -hmac key -binary | base64
     type: string
+    hidden: true
 
 resources:
   ContrailBase:
@@ -47,8 +46,8 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::control::host_ip: {get_param: ContrailControlHostIP}
-            contrail::control::ifmap_username: {get_param: ContrailControlIfmapUserName}
-            contrail::control::ifmap_password: {get_param: ContrailControlIfmapUserPassword}
+          - contrail::control::asn: {get_param: ContrailControlASN }
+            contrail::control::host_ip: {get_param: [ServiceNetMap, ContrailControlNetwork]}
+            contrail::control::rndc_secret: {get_param: ContrailControlRNDCSecret}
       step_config: |
         include ::tripleo::network::contrail::control
index c56b90a..b47c2c3 100644 (file)
@@ -21,13 +21,6 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailDatabaseHostIP:
-    description: host IP address of Database node
-    type: string
-  ContrailDatabaseMinDisk:
-    description: Minimum disk size for database
-    type: number
-    default: 64
 
 resources:
   ContrailBase:
@@ -45,7 +38,6 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::database::host_ip: {get_param: ContrailDatabaseHostIP}
-            contrail::database::minimum_diskGB: {get_param: ContrailDatabaseMinDisk}
+          - contrail::database::host_ip: {get_param: [ServiceNetMap, ContrailDatabaseNetwork]}
       step_config: |
-        include ::tripleo::profile::contrail::database
+        include ::tripleo::network::contrail::database
diff --git a/puppet/services/network/contrail-heat.yaml b/puppet/services/network/contrail-heat.yaml
new file mode 100644 (file)
index 0000000..4dfc657
--- /dev/null
@@ -0,0 +1,40 @@
+heat_template_version: ocata
+
+description: >
+  Contrail Heat plugin adds Contrail specific heat resources enabling heat
+  to orchestrate Contrail
+
+parameters:
+  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
+
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Contrail Heat plugin
+    value:
+      service_name: contrail_heat
+      config_settings:
+        map_merge:
+          - get_attr: [ContrailBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::network::contrail::heat
diff --git a/puppet/services/network/contrail-neutron-plugin.yaml b/puppet/services/network/contrail-neutron-plugin.yaml
new file mode 100644 (file)
index 0000000..2f2ceb3
--- /dev/null
@@ -0,0 +1,45 @@
+heat_template_version: ocata
+
+description: >
+  OpenStack Neutron Opencontrail plugin
+
+parameters:
+  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
+  ContrailExtensions:
+    description: List of OpenContrail extensions to be enabled
+    type: comma_delimited_list
+    default: ''
+
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Opencontrail plugin
+    value:
+      service_name: contrail_neutron_plugin
+      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
+            contrail::vrouter::contrail_extensions: {get_param: ContrailExtensions}
+      step_config: |
+        include tripleo::network::contrail::neutron_plugin
@@ -1,7 +1,7 @@
 heat_template_version: ocata
 
 description: >
-  OpenStack Neutron Compute OpenContrail plugin
+  Provision Contrail services after deployment
 
 parameters:
   ServiceNetMap:
@@ -19,11 +19,21 @@ parameters:
                  via parameter_defaults in the resource registry.
     type: json
 
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
 outputs:
   role_data:
-    description: Role data for the Neutron Compute OpenContrail plugin
+    description: Contrail provisioning role
     value:
-      service_name: neutron_compute_plugin_opencontrail
+      service_name: contrail_provision
       config_settings:
+        map_merge:
+          - get_attr: [ContrailBase, role_data, config_settings]
       step_config: |
-        include ::tripleo::profile::base::neutron::opencontrail::vrouter
+        include ::tripleo::network::contrail::provision
diff --git a/puppet/services/network/contrail-tsn.yaml b/puppet/services/network/contrail-tsn.yaml
new file mode 100644 (file)
index 0000000..88adc4a
--- /dev/null
@@ -0,0 +1,64 @@
+heat_template_version: ocata
+
+description: >
+  Contrail TSN Service
+
+parameters:
+  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
+  NeutronMetadataProxySharedSecret:
+    description: Metadata Secret
+    type: string
+  VrouterPhysicalInterface:
+    default: 'eth0'
+    description: vRouter physical interface
+    type: string
+  VrouterGateway:
+    default: '192.168.24.1'
+    description: vRouter default gateway
+    type: string
+  VrouterNetmask:
+    default: '255.255.255.0'
+    description: vRouter netmask
+    type: string
+
+resources:
+  ContrailBase:
+    type: ./contrail-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Contrail TSN Service
+    value:
+      service_name: contrail_tsn
+      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::metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+            contrail::vrouter::is_tsn: 'true'
+            tripleo.neutron_compute_plugin_opencontrail.firewall_rules:
+              '111 neutron_compute_plugin_opencontrail proxy':
+                dport: 8097
+                proto: tcp
+      step_config: |
+        include ::tripleo::network::contrail::vrouter
diff --git a/puppet/services/network/contrail-vrouter.yaml b/puppet/services/network/contrail-vrouter.yaml
new file mode 100644 (file)
index 0000000..db9f083
--- /dev/null
@@ -0,0 +1,64 @@
+heat_template_version: ocata
+
+description: >
+  OpenStack Neutron Compute OpenContrail plugin
+
+parameters:
+  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
+  NeutronMetadataProxySharedSecret:
+    description: Metadata Secret
+    type: string
+    hidden: true
+  ContrailVrouterPhysicalInterface:
+    default: 'eth0'
+    description: vRouter physical interface
+    type: string
+  ContrailVrouterGateway:
+    default: '192.0.2.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:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Compute OpenContrail plugin
+    value:
+      service_name: contrail_vrouter
+      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: 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
+                proto: tcp
+      step_config: |
+        include ::tripleo::network::contrail::vrouter
index 72cc6fa..3786cdd 100644 (file)
@@ -21,27 +21,6 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-  ContrailWebUiAnalyticsVip:
-    description: Contrail Analytics VIP
-    type: string
-  ContrailWebUiConfigVip:
-    description: Contrail Config VIP
-    type: string
-  ContrailWebUiNeutronVip:
-    description: Neutron VIP
-    type: string
-  ContrailWebuiHttpPort:
-    default: 8080
-    description: HTTP Port of Webui
-    type: number
-  ContrailWebuiHttpsPort:
-    default: 8143
-    description: HTTPS Port of Webui
-    type: number
-  ContrailWebUiRedisIp:
-    description: Redis IP
-    type: string
-    default: '127.0.0.1'
 
 resources:
   ContrailBase:
@@ -59,11 +38,8 @@ outputs:
       config_settings:
         map_merge:
           - get_attr: [ContrailBase, role_data, config_settings]
-          - contrail::webui::contrail_analytics_vip: {get_param: ContrailWebUiAnalyticsVip}
-            contrail::webui::contrail_config_vip: {get_param: ContrailWebUiConfigVip}
-            contrail::webui::contrail_webui_http_port: {get_param: ContrailWebuiHttpPort}
-            contrail::webui::contrail_webui_https_port: {get_param: ContrailWebuiHttpsPort}
-            contrail::webui::neutron_vip: {get_param: ContrailWebUiNeutronVip}
-            contrail::webui::redis_ip: {get_param: ContrailWebUiRedisIp}
+          - contrail::webui::http_port: {get_param: [EndpointMap, ContrailWebuiHttpInternal, port] }
+            contrail::webui::https_port: {get_param: [EndpointMap, ContrailWebuiHttpsInternal, port] }
+            contrail::webui::redis_ip: '127.0.0.1'
       step_config: |
         include ::tripleo::network::contrail::webui
diff --git a/puppet/services/neutron-plugin-opencontrail.yaml b/puppet/services/neutron-plugin-opencontrail.yaml
deleted file mode 100644 (file)
index 976e5f1..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-heat_template_version: ocata
-
-description: >
-  OpenStack Neutron Opencontrail plugin
-
-parameters:
-  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
-  AdminPassword:
-    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
-    type: string
-    hidden: true
-  AdminToken:
-    description: The keystone auth secret and db password.
-    type: string
-    hidden: true
-  ContrailApiServerIp:
-    description: IP address of the OpenContrail API server
-    type: string
-  ContrailApiServerPort:
-    description: Port of the OpenContrail API
-    type: string
-    default: 8082
-  ContrailMultiTenancy:
-    description: Whether to enable multi tenancy
-    type: boolean
-    default: false
-  ContrailExtensions:
-    description: List of OpenContrail extensions to be enabled
-    type: comma_delimited_list
-    default: ''
-
-resources:
-
-  NeutronBase:
-    type: ./neutron-base.yaml
-    properties:
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
-
-outputs:
-  role_data:
-    description: Role data for the Neutron Opencontrail plugin
-    value:
-      service_name: neutron_plugin_opencontrail
-      config_settings:
-        map_merge:
-          - get_attr: [NeutronBase, role_data, config_settings]
-          - neutron::api_extensions_path: /usr/lib/python2.7/site-packages/neutron_plugin_contrail/extensions,/usr/lib/python2.7/site-packages/neutron_lbaas/extensions
-
-            neutron::plugins::opencontrail::api_server_ip: {get_param: ContrailApiServerIp}
-            neutron::plugins::opencontrail::api_server_port: {get_param: ContrailApiServerPort}
-            neutron::plugins::opencontrail::multi_tenancy: {get_param: ContrailMultiTenancy}
-            neutron::plugins::opencontrail::contrail_extensions: {get_param: ContrailExtensions}
-            neutron::plugins::opencontrail::keystone_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri] }
-            neutron::plugins::opencontrail::keystone_admin_user: admin
-            neutron::plugins::opencontrail::keystone_admin_tenant_name: admin
-            neutron::plugins::opencontrail::keystone_admin_password: {get_param: AdminPassword}
-            neutron::plugins::opencontrail::keystone_admin_token: {get_param: AdminToken}
-      step_config: |
-        include tripleo::profile::base::neutron::plugins::opencontrail