Merge "Add management network to list of networks to ping"
authorJenkins <jenkins@review.openstack.org>
Thu, 18 Aug 2016 16:13:16 +0000 (16:13 +0000)
committerGerrit Code Review <review@openstack.org>
Thu, 18 Aug 2016 16:13:16 +0000 (16:13 +0000)
1  2 
overcloud.yaml

diff --combined overcloud.yaml
@@@ -12,6 -12,22 +12,6 @@@ description: 
  parameters:
  
    # Common parameters (not specific to a role)
 -  AdminPassword:
 -    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
 -    type: string
 -    hidden: true
 -  AodhPassword:
 -    description: The password for the aodh services.
 -    type: string
 -    hidden: true
 -  CinderEnableNfsBackend:
 -    default: false
 -    description: Whether to enable or not the NFS backend for Cinder
 -    type: boolean
 -  CinderEnableRbdBackend:
 -    default: false
 -    description: Whether to enable or not the Rbd backend for Cinder
 -    type: boolean
    CloudName:
      default: overcloud
      description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
      default: []
      description: Should be used for arbitrary ips.
      type: json
 -  CorosyncIPv6:
 -    default: false
 -    description: Enable IPv6 in Corosync
 -    type: boolean
 -  Debug:
 -    default: ''
 -    description: Set to True to enable debugging on all services.
 -    type: string
 -  HAProxySyslogAddress:
 -    default: /dev/log
 -    description: Syslog address where HAproxy will send its log
 -    type: string
 -  ImageUpdatePolicy:
 -    default: 'REBUILD_PRESERVE_EPHEMERAL'
 -    description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
 -    type: string
    InternalApiVirtualFixedIPs:
      default: []
      description: >
          Control the IP allocation for the InternalApiVirtualInterface port. E.g.
          [{'ip_address':'1.2.3.4'}]
      type: json
 -  KeyName:
 -    default: default
 -    description: Name of an existing Nova key pair to enable SSH access to the instances
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.keypair
 -  MemcachedIPv6:
 -    default: false
 -    description: Enable IPv6 features in Memcached.
 -    type: boolean
    NeutronControlPlaneID:
      default: 'ctlplane'
      type: string
      description: Neutron ID or name for ctlplane network.
 -  NeutronPassword:
 -    description: The password for the neutron service account, used by neutron agents.
 -    type: string
 -    hidden: true
    NeutronPublicInterface:
      default: nic1
      description: What interface to bridge onto br-ex for network nodes.
      type: string
 -  NovaIPv6:
 -    default: false
 -    description: Enable IPv6 features in Nova
 -    type: boolean
 -  NovaPassword:
 -    description: The password for the nova service account, used by nova-api.
 -    type: string
 -    hidden: true
    PublicVirtualFixedIPs:
      default: []
      description: >
      type: string
      default: unset
      description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
 -  RabbitUserName:
 -    default: guest
 -    description: The username for RabbitMQ
 -    type: string
 -  RabbitPassword:
 -    description: The password for RabbitMQ
 -    type: string
 -    hidden: true
 -  RabbitClientUseSSL:
 -    default: false
 -    description: >
 -        Rabbit client subscriber parameter to specify
 -        an SSL connection to the RabbitMQ host.
 -    type: string
 -  RabbitClientPort:
 -    default: 5672
 -    description: Set rabbit subscriber port, change this if using SSL
 -    type: number
 -  RedisPassword:
 -    description: The password for Redis
 -    type: string
 -    hidden: true
    StorageVirtualFixedIPs:
      default: []
      description: >
      description: |
        Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
      type: json
 -  controllerImage:
 -    type: string
 -    default: overcloud-full
 -    constraints:
 -      - custom_constraint: glance.image
 -  OvercloudControlFlavor:
 -    description: Flavor for control nodes to request when deploying.
 -    default: baremetal
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.flavor
 -  ControlVirtualInterface:
 -    default: 'br-ex'
 -    description: Interface where virtual ip will be assigned.
 -    type: string
 -  EnableFencing:
 -    default: false
 -    description: Whether to enable fencing in Pacemaker or not.
 -    type: boolean
 -  EnableGalera:
 -    default: true
 -    description: Whether to use Galera instead of regular MariaDB.
 -    type: boolean
 -  ControllerSchedulerHints:
 -    type: json
 -    description: Optional scheduler hints to pass to nova
 -    default: {}
    ExtraConfig:
      default: {}
      description: |
        may be implementation specific, e.g puppet hieradata.  Any role specific
        ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
      type: json
 -  FencingConfig:
 -    default: {}
 -    description: |
 -      Pacemaker fencing configuration. The JSON should have
 -      the following structure:
 -        {
 -          "devices": [
 -            {
 -              "agent": "AGENT_NAME",
 -              "host_mac": "HOST_MAC_ADDRESS",
 -              "params": {"PARAM_NAME": "PARAM_VALUE"}
 -            }
 -          ]
 -        }
 -      For instance:
 -        {
 -          "devices": [
 -            {
 -              "agent": "fence_xvm",
 -              "host_mac": "52:54:00:aa:bb:cc",
 -              "params": {
 -                "multicast_address": "225.0.0.12",
 -                "port": "baremetal_0",
 -                "manage_fw": true,
 -                "manage_key_file": true,
 -                "key_file": "/etc/fence_xvm.key",
 -                "key_file_password": "abcdef"
 -              }
 -            }
 -          ]
 -        }
 -    type: json
 -    type: string
 -    hidden: true
 -  InstanceNameTemplate:
 -    default: 'instance-%08x'
 -    description: Template string to be used to generate instance names
 -    type: string
 -  ManageFirewall:
 -    default: true
 -    description: Whether to manage IPtables rules.
 -    type: boolean
 -  PurgeFirewallRules:
 -    default: false
 -    description: Whether IPtables rules should be purged before setting up the ones.
 -    type: boolean
 -  MysqlInnodbBufferPoolSize:
 -    description: >
 -        Specifies the size of the buffer pool in megabytes. Setting to
 -        zero should be interpreted as "no value" and will defer to the
 -        lower level default.
 -    type: number
 -    default: 0
 -  MysqlMaxConnections:
 -    description: Configures MySQL max_connections config setting
 -    type: number
 -    default: 4096
 -  PublicVirtualInterface:
 -    default: 'br-ex'
 -    description: >
 -        Specifies the interface where the public-facing virtual ip will be assigned.
 -        This should be int_public when a VLAN is being used.
 -    type: string
    SwiftHashSuffix:
      description: A random string to be used as a salt when hashing to determine mappings in the ring.
      type: string
      hidden: true
  
 +
  # Compute-specific params
    ComputeCount:
      type: number
      default: nic1
      description: What interface to add to the HypervisorNeutronPhysicalBridge.
      type: string
 -  NovaComputeDriver:
 -    type: string
 -    default: libvirt.LibvirtDriver
 -  NovaComputeExtraConfig:
 -    default: {}
 -    description: |
 -      NovaCompute specific configuration to inject into the cluster. Same
 -      structure as ExtraConfig.
 -    type: json
 -  NovaComputeLibvirtType:
 -    default: kvm
 -    type: string
 -  NovaComputeLibvirtVifDriver:
 -    default: ''
 -    description: Libvirt VIF driver configuration for the network
 -    type: string
 -  NovaComputeSchedulerHints:
 -    type: json
 -    description: Optional scheduler hints to pass to nova
 -    default: {}
 -  NovaEnableRbdBackend:
 -    default: false
 -    description: Whether to enable or not the Rbd backend for Nova
 -    type: boolean
 -  NovaImage:
 -    type: string
 -    default: overcloud-full
 -    constraints:
 -      - custom_constraint: glance.image
 -  NovaOVSBridge:
 -    default: 'br-int'
 -    description: Name of integration bridge used by Open vSwitch
 -    type: string
 -  NovaSecurityGroupAPI:
 -    default: 'neutron'
 -    description: The full class name of the security API class
 -    type: string
 -  OvercloudComputeFlavor:
 -    description: Use this flavor
 -    default: baremetal
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.flavor
 -  ServiceNetMap:
 -    default:
 -      NeutronTenantNetwork: tenant
 -      CeilometerApiNetwork: internal_api
 -      AodhApiNetwork: internal_api
 -      GnocchiApiNetwork: internal_api
 -      MongoDbNetwork: internal_api
 -      CinderApiNetwork: internal_api
 -      CinderIscsiNetwork: storage
 -      GlanceApiNetwork: storage
 -      GlanceRegistryNetwork: internal_api
 -      IronicApiNetwork: internal_api
 -      KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
 -      KeystonePublicApiNetwork: internal_api
 -      ManilaApiNetwork: internal_api
 -      NeutronApiNetwork: internal_api
 -      HeatApiNetwork: internal_api
 -      NovaApiNetwork: internal_api
 -      NovaMetadataNetwork: internal_api
 -      NovaVncProxyNetwork: internal_api
 -      SwiftMgmtNetwork: storage_mgmt
 -      SwiftProxyNetwork: storage
 -      SaharaApiNetwork: internal_api
 -      HorizonNetwork: internal_api
 -      MemcachedNetwork: internal_api
 -      RabbitMqNetwork: internal_api
 -      RedisNetwork: internal_api
 -      MysqlNetwork: internal_api
 -      CephClusterNetwork: storage_mgmt
 -      CephPublicNetwork: storage
 -      ControllerHostnameResolveNetwork: internal_api
 -      ComputeHostnameResolveNetwork: internal_api
 -      BlockStorageHostnameResolveNetwork: internal_api
 -      ObjectStorageHostnameResolveNetwork: internal_api
 -      CephStorageHostnameResolveNetwork: storage
 -    description: Mapping of service_name -> network name. Typically set
 -                 via parameter_defaults in the resource registry.
 -    type: json
  
    ControllerServices:
      default:
        - OS::TripleO::Services::CephMon
        - OS::TripleO::Services::CephExternal
        - OS::TripleO::Services::CinderApi
 +      - OS::TripleO::Services::CinderBackup
        - OS::TripleO::Services::CinderScheduler
        - OS::TripleO::Services::CinderVolume
        - OS::TripleO::Services::Core
        - OS::TripleO::Services::NeutronDhcpAgent
        - OS::TripleO::Services::NeutronL3Agent
        - OS::TripleO::Services::NeutronMetadataAgent
 -      - OS::TripleO::Services::NeutronServer
 +      - OS::TripleO::Services::NeutronApi
        - OS::TripleO::Services::NeutronCorePlugin
        - OS::TripleO::Services::NeutronOvsAgent
        - OS::TripleO::Services::RabbitMQ
        - OS::Tripleo::Services::ManilaApi
        - OS::Tripleo::Services::ManilaScheduler
        - 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
      description: A list of service resources (configured in the Heat
                   resource_registry) which represent nested stacks
                   for each service that should get installed on the Controllers.
        - 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
      description: A list of service resources (configured in the Heat
                   resource_registry) which represent nested stacks
                   for each service that should get installed on the Compute Nodes.
    BlockStorageCount:
      type: number
      default: 0
 -  BlockStorageImage:
 -    default: overcloud-full
 -    type: string
 -  OvercloudBlockStorageFlavor:
 -    description: Flavor for block storage nodes to request when deploying.
 -    default: baremetal
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.flavor
    BlockStorageExtraConfig:
      default: {}
      description: |
        BlockStorage specific configuration to inject into the cluster. Same
        structure as ExtraConfig.
      type: json
 -  BlockStorageSchedulerHints:
 -    type: json
 -    description: Optional scheduler hints to pass to nova
 -    default: {}
    BlockStorageServices:
      default:
        - OS::TripleO::Services::CinderVolume
        - OS::TripleO::Services::Ntp
        - OS::TripleO::Services::Timezone
        - OS::TripleO::Services::Snmp
 +      - OS::TripleO::Services::TripleoPackages
 +      - OS::TripleO::Services::TripleoFirewall
      description: A list of service resources (configured in the Heat
                   resource_registry) which represent nested stacks
                   for each service that should get installed on the BlockStorage nodes.
    ObjectStorageCount:
      type: number
      default: 0
 -  OvercloudSwiftStorageFlavor:
 -    description: Flavor for Swift storage nodes to request when deploying.
 -    default: baremetal
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.flavor
 -  SwiftStorageImage:
 -    default: overcloud-full
 -    type: string
    ObjectStorageExtraConfig:
      default: {}
      description: |
        ObjectStorage specific configuration to inject into the cluster. Same
        structure as ExtraConfig.
      type: json
 -  ObjectStorageSchedulerHints:
 -    type: json
 -    description: Optional scheduler hints to pass to nova
 -    default: {}
    ObjectStorageServices:
      default:
        - OS::TripleO::Services::Kernel
        - OS::TripleO::Services::SwiftRingBuilder
        - OS::TripleO::Services::Snmp
        - OS::TripleO::Services::Timezone
 +      - OS::TripleO::Services::TripleoPackages
 +      - OS::TripleO::Services::TripleoFirewall
      description: A list of service resources (configured in the Heat
                   resource_registry) which represent nested stacks
                   for each service that should get installed on the ObjectStorage nodes.
    CephStorageCount:
      type: number
      default: 0
 -  CephStorageImage:
 -    default: overcloud-full
 -    type: string
 -  OvercloudCephStorageFlavor:
 -    default: baremetal
 -    description: Flavor for Ceph storage nodes to request when deploying.
 -    type: string
 -    constraints:
 -      - custom_constraint: nova.flavor
    CephStorageExtraConfig:
      default: {}
      description: |
        CephStorage specific configuration to inject into the cluster. Same
        structure as ExtraConfig.
      type: json
 -  CephStorageSchedulerHints:
 -    type: json
 -    description: Optional scheduler hints to pass to nova
 -    default: {}
    CephStorageServices:
      default:
        - OS::TripleO::Services::CephOSD
        - OS::TripleO::Services::Kernel
        - OS::TripleO::Services::Ntp
        - OS::TripleO::Services::Timezone
 +      - OS::TripleO::Services::TripleoPackages
 +      - OS::TripleO::Services::TripleoFirewall
      description: A list of service resources (configured in the Heat
                   resource_registry) which represent nested stacks
                   for each service that should get installed on the CephStorage nodes.
@@@ -368,15 -631,28 +368,15 @@@ resources
      properties:
        length: 10
  
 +  ServiceNetMap:
 +    type: OS::TripleO::ServiceNetMap
 +
    EndpointMap:
      type: OS::TripleO::EndpointMap
      properties:
        CloudName: {get_param: CloudName}
 -      CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
 -      AodhApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
 -      CinderApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
 -      GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
 -      GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
 -      GnocchiApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
 -      HeatApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
 -      IronicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
 -      KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
 -      KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
 -      ManilaApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
 -      MysqlVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 -      MysqlNoBracketsVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 -      NeutronApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
 -      NovaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
 -      SaharaApiVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
 -      SwiftProxyVirtualIP: {get_attr: [VipMap, net_ip_uri_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
 -      PublicVirtualIP: {get_attr: [VipMap, net_ip_uri_map, external]}
 +      NetIpMap: {get_attr: [VipMap, net_ip_map]}
 +      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
  
    ControllerServiceChain:
      type: OS::TripleO::Services
        resource_def:
          type: OS::TripleO::Controller
          properties:
 -          AdminPassword: {get_param: AdminPassword}
 -          AodhPassword: {get_param: AodhPassword}
            CloudDomain: {get_param: CloudDomain}
 -          ControlVirtualInterface: {get_param: ControlVirtualInterface}
            controllerExtraConfig: {get_param: controllerExtraConfig}
 -          CorosyncIPv6: {get_param: CorosyncIPv6}
 -          Debug: {get_param: Debug}
 -          EnableFencing: {get_param: EnableFencing}
 -          ManageFirewall: {get_param: ManageFirewall}
 -          PurgeFirewallRules: {get_param: PurgeFirewallRules}
 -          EnableGalera: {get_param: EnableGalera}
 -          ExtraConfig: {get_param: ExtraConfig}
 -          FencingConfig: {get_param: FencingConfig}
 -          Flavor: {get_param: OvercloudControlFlavor}
 -          HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
            HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
            HorizonSecret: {get_resource: HorizonSecret}
 -          Image: {get_param: controllerImage}
 -          ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
 -          InstanceNameTemplate: {get_param: InstanceNameTemplate}
 -          KeyName: {get_param: KeyName}
 -          MemcachedIPv6: {get_param: MemcachedIPv6}
            MysqlClusterUniquePart: {get_attr: [MysqlClusterUniquePart, value]}
 -          MysqlInnodbBufferPoolSize: {get_param: MysqlInnodbBufferPoolSize}
 -          MysqlMaxConnections: {get_param: MysqlMaxConnections}
            MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
 -          NeutronPublicInterface: {get_param: NeutronPublicInterface}
 -          NeutronPassword: {get_param: NeutronPassword}
 -          NovaIPv6: {get_param: NovaIPv6}
 -          NovaPassword: {get_param: NovaPassword}
            PcsdPassword: {get_resource: PcsdPassword}
 -          PublicVirtualInterface: {get_param: PublicVirtualInterface}
 -          RabbitPassword: {get_param: RabbitPassword}
 -          RabbitUserName: {get_param: RabbitUserName}
            RabbitCookie: {get_attr: [RabbitCookie, value]}
 -          RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
 -          RabbitClientPort: {get_param: RabbitClientPort}
 -          RedisPassword: {get_param: RedisPassword}
            RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
            RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
 -          SwiftHashSuffix: {get_param: SwiftHashSuffix}
 -          ServiceNetMap: {get_param: ServiceNetMap}
 +          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
            EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
 -          MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 -          UpdateIdentifier: {get_param: UpdateIdentifier}
 +          MysqlVirtualIP: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
            Hostname:
              str_replace:
                template: {get_param: ControllerHostnameFormat}
                params:
                  '%stackname%': {get_param: 'OS::stack_name'}
            NodeIndex: '%index%'
 -          ServerMetadata: {get_param: ServerMetadata}
 -          SchedulerHints: {get_param: ControllerSchedulerHints}
            ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
            ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
  
        resource_def:
          type: OS::TripleO::Compute
          properties:
 -          AdminPassword: {get_param: AdminPassword}
 -          CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
 -          CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
 -          Debug: {get_param: Debug}
 -          ExtraConfig: {get_param: ExtraConfig}
 -          Flavor: {get_param: OvercloudComputeFlavor}
 -          GlanceHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
 -          Image: {get_param: NovaImage}
 -          ImageUpdatePolicy: {get_param: ImageUpdatePolicy}
 -          KeyName: {get_param: KeyName}
 -          KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
 -          KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
 -          NeutronPassword: {get_param: NeutronPassword}
 +          CloudDomain: {get_param: CloudDomain}
            NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
            NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
            # L3 HA and Failover is not relevant for Computes, should be removed
 -          NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
 -          NovaComputeDriver: {get_param: NovaComputeDriver}
 -          NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
 -          NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
 -          NovaComputeLibvirtVifDriver: {get_param: NovaComputeLibvirtVifDriver}
 -          NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
 -          NovaIPv6: {get_param: NovaIPv6}
 +          NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
            NovaPublicIP: {get_attr: [VipMap, net_ip_map, external]}
 -          NovaPassword: {get_param: NovaPassword}
 -          NovaOVSBridge: {get_param: NovaOVSBridge}
 -          NovaSecurityGroupAPI: {get_param: NovaSecurityGroupAPI}
 -          RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
 -          RabbitPassword: {get_param: RabbitPassword}
 -          RabbitUserName: {get_param: RabbitUserName}
 -          RabbitClientUseSSL: {get_param: RabbitClientUseSSL}
 -          RabbitClientPort: {get_param: RabbitClientPort}
 -          ServiceNetMap: {get_param: ServiceNetMap}
 +          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
            EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
 -          UpdateIdentifier: {get_param: UpdateIdentifier}
            Hostname:
              str_replace:
                template: {get_param: ComputeHostnameFormat}
                params:
                  '%stackname%': {get_param: 'OS::stack_name'}
 -          CloudDomain: {get_param: CloudDomain}
 -          ServerMetadata: {get_param: ServerMetadata}
 -          SchedulerHints: {get_param: NovaComputeSchedulerHints}
            NodeIndex: '%index%'
            ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
            ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
        resource_def:
          type: OS::TripleO::BlockStorage
          properties:
 -          Image: {get_param: BlockStorageImage}
 -          KeyName: {get_param: KeyName}
 -          Flavor: {get_param: OvercloudBlockStorageFlavor}
            UpdateIdentifier: {get_param: UpdateIdentifier}
            Hostname:
              str_replace:
                template: {get_param: BlockStorageHostnameFormat}
                params:
                  '%stackname%': {get_param: 'OS::stack_name'}
 -          ServiceNetMap: {get_param: ServiceNetMap}
 +          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
            ExtraConfig: {get_param: ExtraConfig}
            BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
            CloudDomain: {get_param: CloudDomain}
            ServerMetadata: {get_param: ServerMetadata}
 -          SchedulerHints: {get_param: BlockStorageSchedulerHints}
            NodeIndex: '%index%'
            ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
            ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
        resource_def:
          type: OS::TripleO::ObjectStorage
          properties:
 -          KeyName: {get_param: KeyName}
 -          Flavor: {get_param: OvercloudSwiftStorageFlavor}
            HashSuffix: {get_param: SwiftHashSuffix}
 -          Image: {get_param: SwiftStorageImage}
            UpdateIdentifier: {get_param: UpdateIdentifier}
 -          ServiceNetMap: {get_param: ServiceNetMap}
 +          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
            Hostname:
              str_replace:
                template: {get_param: ObjectStorageHostnameFormat}
            ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
            CloudDomain: {get_param: CloudDomain}
            ServerMetadata: {get_param: ServerMetadata}
 -          SchedulerHints: {get_param: ObjectStorageSchedulerHints}
            NodeIndex: '%index%'
            ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
            ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
        resource_def:
          type: OS::TripleO::CephStorage
          properties:
 -          Image: {get_param: CephStorageImage}
 -          KeyName: {get_param: KeyName}
 -          Flavor: {get_param: OvercloudCephStorageFlavor}
 -          ServiceNetMap: {get_param: ServiceNetMap}
 +          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
            UpdateIdentifier: {get_param: UpdateIdentifier}
            Hostname:
              str_replace:
            CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
            CloudDomain: {get_param: CloudDomain}
            ServerMetadata: {get_param: ServerMetadata}
 -          SchedulerHints: {get_param: CephStorageSchedulerHints}
            NodeIndex: '%index%'
            ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
            ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
    allNodesConfig:
      type: OS::TripleO::AllNodes::SoftwareConfig
      properties:
 -      compute_hosts: {get_attr: [Compute, hosts_entry]}
 -      controller_hosts: {get_attr: [Controller, hosts_entry]}
 +      hosts:
 +        - list_join:
 +            - '\n'
 +            - {get_attr: [Compute, hosts_entry]}
 +        - list_join:
 +            - '\n'
 +            - {get_attr: [Controller, hosts_entry]}
 +        - list_join:
 +            - '\n'
 +            - {get_attr: [BlockStorage, hosts_entry]}
 +        - list_join:
 +            - '\n'
 +            - {get_attr: [ObjectStorage, hosts_entry]}
 +        - list_join:
 +            - '\n'
 +            - {get_attr: [CephStorage, hosts_entry]}
        controller_ips: {get_attr: [Controller, ip_address]}
 -      block_storage_hosts: {get_attr: [BlockStorage, hosts_entry]}
 -      object_storage_hosts: {get_attr: [ObjectStorage, hosts_entry]}
 -      ceph_storage_hosts: {get_attr: [CephStorage, hosts_entry]}
        controller_names: {get_attr: [Controller, hostname]}
 -      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
 -      mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MongoDbNetwork]}]}
 -      redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, RedisNetwork]}]}
 -      memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MemcachedNetwork]}]}
 -      mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 -      horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
 -      heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
 -      swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
 -      ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
 -      aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
 -      gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
 -      nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
 -      nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
 -      glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
 -      glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
 -      cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
 -      manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
 -      neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
 -      keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
 -      keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
 -      sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
 -      ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
 -      ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
 +      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
 +      mongo_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MongodbNetwork]}]}
 +      redis_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}]}
 +      memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
 +      mysql_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
 +      horizon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
 +      heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
 +      swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
 +      ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
 +      aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
 +      gnocchi_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
 +      nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
 +      nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
 +      glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
 +      glance_registry_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
 +      cinder_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
 +      manila_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
 +      neutron_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
 +      keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
 +      keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
 +      sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
 +      ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
 +      ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CephPublicNetwork]}]}
        ceph_mon_node_names: {get_attr: [Controller, hostname]}
        DeployIdentifier: {get_param: DeployIdentifier}
        UpdateIdentifier: {get_param: UpdateIdentifier}
        ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
        ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
        PortName: redis_virtual_ip
 -      NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
 +      NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
        ServiceName: redis
  
    # The public VIP is on the External net, falls back to ctlplane
        servers: {get_attr: [Controller, attributes, nova_server_resource]}
        input_values:
          # service VIP mappings
 -        keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
 -        keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
 -        neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
 -        cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
 -        glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
 -        glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
 -        swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
 -        nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
 -        nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
 -        ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
 -        aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
 -        gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
 -        heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
 -        horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
 +        keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
 +        keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
 +        neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
 +        cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
 +        glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
 +        glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
 +        swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
 +        nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
 +        nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
 +        ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
 +        aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
 +        gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
 +        heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
 +        horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
          redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
 -        manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
 -        mysql_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, MysqlNetwork]}]}
 -        rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
 +        manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
 +        mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
 +        rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
          # direct configuration of Virtual IPs for each network
          control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
          public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
          internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
 -        sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
 -        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
 +        sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
 +        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
          storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
          storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
  
            - {get_attr: [Controller, resource.0.storage_ip_address]}
            - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
            - {get_attr: [Controller, resource.0.tenant_ip_address]}
+           - {get_attr: [Controller, resource.0.management_ip_address]}
  
    ControllerAllNodesValidationDeployment:
      type: OS::Heat::StructuredDeployments
@@@ -919,49 -1261,49 +920,49 @@@ outputs
      value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
    KeystoneAdminVip:
      description: Keystone Admin VIP endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
    PublicVip:
      description: Controller VIP for public API endpoints
      value: {get_attr: [VipMap, net_ip_map, external]}
    AodhInternalVip:
      description: VIP for Aodh API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
    CeilometerInternalVip:
      description: VIP for Ceilometer API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
    CinderInternalVip:
      description: VIP for Cinder API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
    GlanceInternalVip:
      description: VIP for Glance API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
    GnocchiInternalVip:
      description: VIP for Gnocchi API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GnocchiApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
    HeatInternalVip:
      description: VIP for Heat API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
    IronicInternalVip:
      description: VIP for Ironic API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
    KeystoneInternalVip:
      description: VIP for Keystone API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
    ManilaInternalVip:
      description: VIP for Manila API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, ManilaApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
    NeutronInternalVip:
      description: VIP for Neutron API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
    NovaInternalVip:
      description: VIP for Nova API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
    SaharaInternalVip:
      description: VIP for Sahara API internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
    SwiftInternalVip:
      description: VIP for Swift Proxy internal endpoint
 -    value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
 +    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
    EndpointMap:
      description: |
        Mapping of the resources with the needed info for their endpoints.
        hostname-based access to the deployed nodes (useful for testing without
        setting up a DNS).
      value: {get_attr: [allNodesConfig, hosts_entries]}
 +  EnabledServices:
 +    description: The services enabled on each role
 +    value:
 +      Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
 +      Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
 +      BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
 +      ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
 +      CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}