Merge "Optimize Nova disk_cachemodes and hw_disk_discard options for RBD"
[apex-tripleo-heat-templates.git] / puppet / compute.yaml
index e56c376..e56deef 100644 (file)
@@ -195,6 +195,9 @@ parameters:
     default: 'dvr_snat'
     description: Agent mode for the neutron-l3-agent on the controller hosts
     type: string
+  NodeIndex:
+    type: number
+    default: 0
   NovaApiHost:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
@@ -207,6 +210,9 @@ parameters:
       NovaCompute specific configuration to inject into the cluster. Same
       structure as ExtraConfig.
     type: json
+  NovaComputeIPs:
+    default: {}
+    type: json
   NovaComputeLibvirtType:
     type: string
     default: kvm
@@ -218,6 +224,10 @@ parameters:
     default: false
     description: Whether to enable or not the Rbd backend for Nova
     type: boolean
+  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
@@ -241,7 +251,6 @@ parameters:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
   RabbitPassword:
-    default: guest
     description: The password for RabbitMQ
     type: string
     hidden: true
@@ -267,6 +276,10 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
+  UpgradeLevelNovaCompute:
+    type: string
+    description: Nova Compute upgrade level
+    default: ''
   EnablePackageInstall:
     default: 'false'
     description: Set to true to enable package installation via Puppet
@@ -294,6 +307,10 @@ parameters:
   Hostname:
     type: string
     default: '' # Defaults to Heat created hostname
+  HostnameMap:
+    type: json
+    default: {}
+    description: Optional mapping to override hostnames
   NetworkDeploymentActions:
     type: comma_delimited_list
     description: >
@@ -338,7 +355,10 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: UserData}
-      name: {get_param: Hostname}
+      name:
+        str_replace:
+            template: {get_param: Hostname}
+            params: {get_param: HostnameMap}
       software_config_transport: {get_param: SoftwareConfigTransport}
       metadata: {get_param: ServerMetadata}
       scheduler_hints: {get_param: SchedulerHints}
@@ -367,42 +387,66 @@ resources:
     type: OS::TripleO::Compute::Ports::ExternalPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   InternalApiPort:
     type: OS::TripleO::Compute::Ports::InternalApiPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   StoragePort:
     type: OS::TripleO::Compute::Ports::StoragePort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   StorageMgmtPort:
     type: OS::TripleO::Compute::Ports::StorageMgmtPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   TenantPort:
     type: OS::TripleO::Compute::Ports::TenantPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   ManagementPort:
     type: OS::TripleO::Compute::Ports::ManagementPort
     properties:
       ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+      IPPool: {get_param: NovaComputeIPs}
+      NodeIndex: {get_param: NodeIndex}
 
   NetIpMap:
     type: OS::TripleO::Network::Ports::NetIpMap
     properties:
       ControlPlaneIp: {get_attr: [NovaCompute, networks, ctlplane, 0]}
       ExternalIp: {get_attr: [ExternalPort, ip_address]}
+      ExternalIpSubnet: {get_attr: [ExternalPort, ip_subnet]}
+      ExternalIpUri: {get_attr: [ExternalPort, ip_address_uri]}
       InternalApiIp: {get_attr: [InternalApiPort, ip_address]}
+      InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+      InternalApiIpUri: {get_attr: [InternalApiPort, ip_address_uri]}
       StorageIp: {get_attr: [StoragePort, ip_address]}
+      StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+      StorageIpUri: {get_attr: [StoragePort, ip_address_uri]}
       StorageMgmtIp: {get_attr: [StorageMgmtPort, ip_address]}
+      StorageMgmtIpSubnet: {get_attr: [StorageMgmtPort, ip_subnet]}
+      StorageMgmtIpUri: {get_attr: [StorageMgmtPort, ip_address_uri]}
       TenantIp: {get_attr: [TenantPort, ip_address]}
+      TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
+      TenantIpUri: {get_attr: [TenantPort, ip_address_uri]}
       ManagementIp: {get_attr: [ManagementPort, ip_address]}
+      ManagementIpSubnet: {get_attr: [ManagementPort, ip_subnet]}
+      ManagementIpUri: {get_attr: [ManagementPort, ip_address_uri]}
 
   NetworkConfig:
     type: OS::TripleO::Compute::Net::SoftwareConfig
@@ -443,9 +487,13 @@ resources:
             - all_nodes # provided by allNodesConfig
             - '"%{::osfamily}"'
             - common
+            - network
+            - neutron_bigswitch_data # Optionally provided by ComputeExtraConfigPre
             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
             - nova_nuage_data  # Optionally provided by ComputeExtraConfigPre
             - midonet_data # Optionally provided by AllNodesExtraConfig
+            - neutron_opencontrail_data  # Optionally provided by ComputeExtraConfigPre
+          merge_behavior: deeper
           datafiles:
             compute_extraconfig:
               mapped_data: {get_param: NovaComputeExtraConfig}
@@ -453,17 +501,24 @@ resources:
               mapped_data: {get_param: ExtraConfig}
             common:
               raw_data: {get_file: hieradata/common.yaml}
+            network:
+              mapped_data:
+                net_ip_map: {get_attr: [NetIpMap, net_ip_map]}
+                net_ip_subnet_map: {get_attr: [NetIpMap, net_ip_subnet_map]}
+                net_ip_uri_map: {get_attr: [NetIpMap, net_ip_uri_map]}
             ceph:
               raw_data: {get_file: hieradata/ceph.yaml}
             compute:
               raw_data: {get_file: hieradata/compute.yaml}
               mapped_data:
                 cinder_enable_nfs_backend: {get_input: cinder_enable_nfs_backend}
+                nova::use_ipv6: {get_input: nova_ipv6}
                 nova::debug: {get_input: debug}
                 nova::rabbit_userid: {get_input: rabbit_username}
                 nova::rabbit_password: {get_input: rabbit_password}
                 nova::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
                 nova::rabbit_port: {get_input: rabbit_client_port}
+                nova::upgrade_level_compute: {get_input: upgrade_level_nova_compute}
                 nova_compute_driver: {get_input: nova_compute_driver}
                 nova::compute::libvirt::libvirt_virt_type: {get_input: nova_compute_libvirt_type}
                 nova::compute::neutron::libvirt_vif_driver: {get_input: nova_compute_libvirt_vif_driver}
@@ -474,6 +529,9 @@ resources:
                 nova_password: {get_input: nova_password}
                 nova::compute::network_device_mtu: {get_input: neutron_tenant_mtu}
                 nova::compute::vncserver_proxyclient_address: {get_input: nova_vnc_proxyclient_address}
+                nova::vncproxy::common::vncproxy_protocol: {get_input: nova_vncproxy_protocol}
+                nova::vncproxy::common::vncproxy_host: {get_input: nova_vncproxy_host}
+                nova::vncproxy::common::vncproxy_port: {get_input: nova_vncproxy_port}
                 nova::network::neutron::neutron_ovs_bridge: {get_input: nova_ovs_bridge}
                 nova::network::neutron::security_group_api: {get_input: nova_security_group_api}
                 ceilometer::debug: {get_input: debug}
@@ -509,9 +567,9 @@ resources:
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
                 neutron_public_interface: {get_input: neutron_public_interface}
-                nova::network::neutron::neutron_admin_password: {get_input: neutron_password}
+                nova::network::neutron::neutron_password: {get_input: neutron_password}
                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
-                nova::network::neutron::neutron_admin_auth_url: {get_input: neutron_admin_auth_url}
+                nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
                 neutron_router_distributed: {get_input: neutron_router_distributed}
                 neutron_agent_mode: {get_input: neutron_agent_mode}
                 neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
@@ -544,10 +602,22 @@ resources:
         nova_api_host: {get_param: NovaApiHost}
         nova_password: {get_param: NovaPassword}
         nova_enable_rbd_backend: {get_param: NovaEnableRbdBackend}
+        nova_ipv6: {get_param: NovaIPv6}
         cinder_enable_rbd_backend: {get_param: CinderEnableRbdBackend}
         nova_vnc_proxyclient_address: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaVncProxyNetwork]}]}
+        nova_vncproxy_protocol: {get_param: [EndpointMap, NovaVNCProxyPublic, protocol]}
+        # Remove brackets that may come if the IP address is IPv6.
+        # For DNS names and IPv4, this will just get the NovaVNCProxyPublic value
+        nova_vncproxy_host:
+          str_replace:
+            template: {get_param: [EndpointMap, NovaVNCProxyPublic, host]}
+            params:
+              '[': ''
+              ']': ''
+        nova_vncproxy_port: {get_param: [EndpointMap, NovaVNCProxyPublic, port]}
         nova_ovs_bridge: {get_param: NovaOVSBridge}
         nova_security_group_api: {get_param: NovaSecurityGroupAPI}
+        upgrade_level_nova_compute: {get_param: UpgradeLevelNovaCompute}
         ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
         ceilometer_password: {get_param: CeilometerPassword}
         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
@@ -624,7 +694,7 @@ resources:
               AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
-        neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
+        neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
         keystone_vip: {get_param: KeystonePublicApiVirtualIP}
         admin_password: {get_param: AdminPassword}
         rabbit_username: {get_param: RabbitUserName}
@@ -701,11 +771,54 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: "IP HOST.DOMAIN HOST"
+        template: |
+          PRIMARYIP PRIMARYHOST.DOMAIN PRIMARYHOST
+          EXTERNALIP EXTERNALHOST.DOMAIN EXTERNALHOST
+          INTERNAL_APIIP INTERNAL_APIHOST.DOMAIN INTERNAL_APIHOST
+          STORAGEIP STORAGEHOST.DOMAIN STORAGEHOST
+          STORAGE_MGMTIP STORAGE_MGMTHOST.DOMAIN STORAGE_MGMTHOST
+          TENANTIP TENANTHOST.DOMAIN TENANTHOST
+          MANAGEMENTIP MANAGEMENTHOST.DOMAIN MANAGEMENTHOST
         params:
-          IP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
+          PRIMARYIP: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, ComputeHostnameResolveNetwork]}]}
           DOMAIN: {get_param: CloudDomain}
-          HOST: {get_attr: [NovaCompute, name]}
+          PRIMARYHOST: {get_attr: [NovaCompute, name]}
+          EXTERNALIP: {get_attr: [ExternalPort, ip_address]}
+          EXTERNALHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - external
+          INTERNAL_APIIP: {get_attr: [InternalApiPort, ip_address]}
+          INTERNAL_APIHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - internalapi
+          STORAGEIP: {get_attr: [StoragePort, ip_address]}
+          STORAGEHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storage
+          STORAGE_MGMTIP: {get_attr: [StorageMgmtPort, ip_address]}
+          STORAGE_MGMTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - storagemgmt
+          TENANTIP: {get_attr: [TenantPort, ip_address]}
+          TENANTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - tenant
+          MANAGEMENTIP: {get_attr: [ManagementPort, ip_address]}
+          MANAGEMENTHOST:
+            list_join:
+            - '.'
+            - - {get_attr: [NovaCompute, name]}
+              - management
   nova_server_resource:
     description: Heat resource handle for the Nova compute server
     value: