Big Switch Neutron ML2 plugin integration
[apex-tripleo-heat-templates.git] / compute.yaml
index f7e434f..9a2c6f1 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2014-10-16
+heat_template_version: 2015-04-30
 
 description: >
   OpenStack hypervisor node. Can be wrapped in a ResourceGroup for scaling.
@@ -25,6 +25,10 @@ parameters:
     description: The password for the ceilometer service account.
     type: string
     hidden: true
+  CinderEnableNfsBackend:
+    default: false
+    description: Whether to enable or not the NFS backend for Cinder
+    type: boolean
   Debug:
     default: ''
     description: Set to True to enable debugging on all services.
@@ -98,7 +102,10 @@ parameters:
     default: default
     constraints:
       - custom_constraint: nova.keypair
-  KeystoneHost:
+  KeystoneAdminApiVirtualIP:
+    type: string
+    default: ''
+  KeystonePublicApiVirtualIP:
     type: string
     default: ''
   NeutronBridgeMappings:
@@ -125,14 +132,14 @@ parameters:
   NeutronNetworkType:
     type: string
     description: The tenant network type for Neutron, either gre or vxlan.
-    default: 'gre'
+    default: 'vxlan'
   NeutronNetworkVLANRanges:
     default: 'datacentre'
     description: >
       The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
       Neutron documentation for permitted values. Defaults to permitting any
       VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
-    type: string
+    type: comma_delimited_list
   NeutronPassword:
     default: unset
     description: The password for the neutron service account, used by neutron agents.
@@ -151,7 +158,19 @@ parameters:
     description: |
         The tunnel types for the Neutron tenant network. To specify multiple
         values, use a comma separated string, like so: 'gre,vxlan'
-    default: 'gre'
+    default: 'vxlan'
+  NeutronTunnelIdRanges:
+    description: |
+        Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
+        of GRE tunnel IDs that are available for tenant network allocation
+    default: ["1:1000", ]
+    type: comma_delimited_list
+  NeutronVniRanges:
+    description: |
+        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
+        of VXLAN VNI IDs that are available for tenant network allocation
+    default: ["1:1000", ]
+    type: comma_delimited_list
   NeutronPublicInterfaceRawDevice:
     default: ''
     type: string
@@ -243,7 +262,20 @@ parameters:
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
-
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  UpdateIdentifier:
+    default: ''
+    type: string
+    description: >
+      Setting to a previously unused value during stack-update will trigger
+      package update on all nodes
+  Hostname:
+    type: string
+    default: '' # Defaults to Heat created hostname
 
 resources:
 
@@ -260,18 +292,38 @@ resources:
         - network: ctlplane
       user_data_format: SOFTWARE_CONFIG
       user_data: {get_resource: NodeUserData}
+      name: {get_param: Hostname}
 
   NodeUserData:
     type: OS::TripleO::NodeUserData
 
+  InternalApiPort:
+    type: OS::TripleO::Compute::Ports::InternalApiPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+  StoragePort:
+    type: OS::TripleO::Compute::Ports::StoragePort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
+  TenantPort:
+    type: OS::TripleO::Compute::Ports::TenantPort
+    properties:
+      ControlPlaneIP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+
   NetworkConfig:
     type: OS::TripleO::Compute::Net::SoftwareConfig
+    properties:
+      InternalApiIpSubnet: {get_attr: [InternalApiPort, ip_subnet]}
+      StorageIpSubnet: {get_attr: [StoragePort, ip_subnet]}
+      TenantIpSubnet: {get_attr: [TenantPort, ip_subnet]}
 
   NetworkDeployment:
     type: OS::TripleO::SoftwareDeployment
     properties:
       signal_transport: NO_SIGNAL
-      config: {get_attr: [NetworkConfig, config_id]}
+      config: {get_resource: NetworkConfig}
       server: {get_resource: NovaCompute}
       input_values:
         bridge_name: {get_param: NeutronPhysicalBridge}
@@ -322,6 +374,8 @@ resources:
             tenant_network_type: {get_input: neutron_tenant_network_type}
             tunnel_types: {get_input: neutron_tunnel_types}
             network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
+            tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
+            vni_ranges: {get_input: neutron_vni_ranges}
             bridge_mappings: {get_input: neutron_bridge_mappings}
             enable_tunneling: {get_input: neutron_enable_tunneling}
             physical_bridge: {get_input: neutron_physical_bridge}
@@ -358,12 +412,28 @@ resources:
         glance_host: {get_param: GlanceHost}
         glance_port: {get_param: GlancePort}
         glance_protocol: {get_param: GlanceProtocol}
-        keystone_host: {get_param: KeystoneHost}
+        keystone_host: {get_param: KeystonePublicApiVirtualIP}
         neutron_flat_networks: {get_param: NeutronFlatNetworks}
         neutron_host: {get_param: NeutronHost}
         neutron_local_ip: {get_attr: [NovaCompute, networks, ctlplane, 0]}
         neutron_tenant_network_type: {get_param: NeutronNetworkType}
         neutron_tunnel_types: {get_param: NeutronTunnelTypes}
+        neutron_tunnel_id_ranges:
+          str_replace:
+            template: "['RANGES']"
+            params:
+              RANGES:
+                list_join:
+                - "','"
+                - {get_param: NeutronTunnelIdRanges}
+        neutron_vni_ranges:
+          str_replace:
+            template: "['RANGES']"
+            params:
+              RANGES:
+                list_join:
+                - "','"
+                - {get_param: NeutronVniRanges}
         neutron_network_vlan_ranges: {get_param: NeutronNetworkVLANRanges}
         neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
@@ -419,6 +489,15 @@ outputs:
   ip_address:
     description: IP address of the server in the ctlplane network
     value: {get_attr: [NovaCompute, networks, ctlplane, 0]}
+  internal_api_ip_address:
+    description: IP address of the server in the internal_api network
+    value: {get_attr: [InternalApiPort, ip_address]}
+  storage_ip_address:
+    description: IP address of the server in the storage network
+    value: {get_attr: [StoragePort, ip_address]}
+  tenant_ip_address:
+    description: IP address of the server in the tenant network
+    value: {get_attr: [TenantPort, ip_address]}
   hostname:
     description: Hostname of the server
     value: {get_attr: [NovaCompute, name]}
@@ -427,7 +506,7 @@ outputs:
       Server's IP address and hostname in the /etc/hosts format
     value:
       str_replace:
-        template: "IP HOST HOST.novalocal"
+        template: "IP HOST"
         params:
           IP: {get_attr: [NovaCompute, networks, ctlplane, 0]}
           HOST: {get_attr: [NovaCompute, name]}
@@ -435,3 +514,6 @@ outputs:
     description: Heat resource handle for the Nova compute server
     value:
       {get_resource: NovaCompute}
+  config_identifier:
+    description: identifier which changes if the node configuration may need re-applying
+    value: "None - NO_SIGNAL"