Convert PublicVirtualIP to new port creation method
authorDan Sneddon <dsneddon@redhat.com>
Wed, 24 Jun 2015 21:25:08 +0000 (14:25 -0700)
committerDan Sneddon <dsneddon@redhat.com>
Wed, 22 Jul 2015 08:09:15 +0000 (01:09 -0700)
This change brings PublicVirtualIP in line with the rest of the
VIPs in how it is created. This allows the network where
PublicVirtualIP is instantiated to be on cltplane when network
isolation is not used, and on the external network when network
isolation is used. This change removes the PublicVirtualNetwork
parameter, since it is no longer used. In order to continue to
support the PublicVirtualFixedIPs parameter, which is used to
provide a specific IP for the PublicVirtualIP, the FixedIP
parameter was added to cltplane_vip.yaml, vip.yaml, and
noop.yaml. The value of PublicVirtualIP is passed to FixedIP
in the VIP templates. This change also moves the default
network for keystone public api to the external net (which will
fallback to ctlplane if network isolation isn't used).

Change-Id: I3f5d35cbe55d3a148e95cf49dfbaad4874df960b

network/ports/ctlplane_vip.yaml
network/ports/external.yaml
network/ports/noop.yaml
network/ports/vip.yaml
overcloud-resource-registry-puppet.yaml
overcloud-without-mergepy.yaml

index d5001e4..0d2945b 100644 (file)
@@ -2,6 +2,7 @@ heat_template_version: 2015-04-30
 
 description: >
   Creates a port for a VIP on the undercloud ctlplane network.
+  The IP address will be chosen automatically if FixedIPs is empty.
 
 parameters:
   NetworkName:
@@ -19,15 +20,20 @@ parameters:
     description: The name of the undercloud Neutron control plane
     default: ctlplane
     type: string
-
+  FixedIPs:
+    description: >
+        Control the IP allocation for the VIP port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    default: []
+    type: json
 
 resources:
-
   VipPort:
     type: OS::Neutron::Port
     properties:
       network: {get_param: ControlPlaneNetwork}
       name: {get_param: PortName}
+      fixed_ips: {get_param: FixedIPs}
       replacement_policy: AUTO
 
 outputs:
@@ -36,7 +42,7 @@ outputs:
     value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
   ip_subnet:
     # FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
-    description: IP/Subnet CIDR for the internal API network IP
+    description: IP/Subnet CIDR for the ctlplane network.
     value:
           list_join:
             - ''
index b5c1e5c..63e3eeb 100644 (file)
@@ -1,7 +1,8 @@
 heat_template_version: 2015-04-30
 
 description: >
-  Creates a port on the external network.
+  Creates a port on the external network. The IP address will be chosen
+  automatically if FixedIPs is empty.
 
 parameters:
   ExternalNetName:
@@ -15,6 +16,16 @@ parameters:
   ControlPlaneIP: # Here for compatability with noop.yaml
     description: IP address on the control plane
     type: string
+  ControlPlaneNetwork: # Here for compatibility with ctlplane_vip.yaml
+    description: The name of the undercloud Neutron control plane
+    default: ctlplane
+    type: string
+  FixedIPs:
+    description: >
+        Control the IP allocation for the VIP port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    default: []
+    type: json
 
 resources:
 
@@ -23,6 +34,7 @@ resources:
     properties:
       network: {get_param: ExternalNetName}
       name: {get_param: PortName}
+      fixed_ips: {get_param: FixedIPs}
       replacement_policy: AUTO
 
 outputs:
index 9e1a127..31ee6f3 100644 (file)
@@ -19,6 +19,10 @@ parameters:
     description: # Here for compatability with vip.yaml
     default: ''
     type: string
+  FixedIPs:
+    description: # Here for compatibility with vip.yaml
+    default: []
+    type: json
   ControlPlaneSubnetCidr: # Override this via parameter_defaults
     default: '24'
     description: The subnet CIDR of the control plane network.
index ab72083..299579d 100644 (file)
@@ -2,6 +2,7 @@ heat_template_version: 2015-04-30
 
 description: >
   Creates a port for a VIP on the isolated network NetworkName.
+  The IP address will be chosen automatically if FixedIPs is empty.
 
 parameters:
   NetworkName:
@@ -19,14 +20,20 @@ parameters:
     description: The name of the undercloud Neutron control plane
     default: ctlplane
     type: string
+  FixedIPs:
+    description: >
+        Control the IP allocation for the VIP port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    default: []
+    type: json
 
 resources:
-
   VipPort:
     type: OS::Neutron::Port
     properties:
       network: {get_param: NetworkName}
       name: {get_param: PortName}
+      fixed_ips: {get_param: FixedIPs}
       replacement_policy: AUTO
 
 outputs:
@@ -35,7 +42,7 @@ outputs:
     value: {get_attr: [VipPort, fixed_ips, 0, ip_address]}
   ip_subnet:
     # FIXME: this assumes a 2 digit subnet CIDR (need more heat functions?)
-    description: IP/Subnet CIDR for the internal API network IP
+    description: IP/Subnet CIDR for the network associated with this IP
     value:
           list_join:
             - ''
index 17c1470..75e5322 100644 (file)
@@ -46,7 +46,7 @@ resource_registry:
   OS::TripleO::Network::Ports::NetIpListMap: network/ports/net_ip_list_map.yaml
 
   # Port assignments for the controller role
-  OS::TripleO::Controller::Ports::ExternalPort: network/ports/noop.yaml
+  OS::TripleO::Controller::Ports::ExternalPort: network/ports/ctlplane_vip.yaml
   OS::TripleO::Controller::Ports::InternalApiPort: network/ports/noop.yaml
   OS::TripleO::Controller::Ports::StoragePort: network/ports/noop.yaml
   OS::TripleO::Controller::Ports::StorageMgmtPort: network/ports/noop.yaml
index e1f2405..d9190ea 100644 (file)
@@ -180,11 +180,6 @@ parameters:
         Control the IP allocation for the PublicVirtualInterface port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
-  PublicVirtualNetwork:
-    default: 'ctlplane'
-    type: string
-    description: >
-        Neutron network to allocate public virtual IP port on.
   RabbitCookieSalt:
     type: string
     default: unset
@@ -782,7 +777,7 @@ resources:
           SwiftPassword: {get_param: SwiftPassword}
           SwiftReplicas: { get_param: SwiftReplicas}
           VirtualIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
-          PublicVirtualIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]} # deprecated. Use per service VIP settings instead now.
+          PublicVirtualIP: {get_attr: [PublicVirtualIP, ip_address]}
           ServiceNetMap: {get_param: ServiceNetMap}
           HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
           GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
@@ -842,7 +837,7 @@ resources:
           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
           NovaComputeLibvirtType: {get_param: NovaComputeLibvirtType}
           NovaEnableRbdBackend: {get_param: NovaEnableRbdBackend}
-          NovaPublicIP: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+          NovaPublicIP: {get_attr: [PublicVirtualIP, ip_address]}
           NovaPassword: {get_param: NovaPassword}
           NtpServer: {get_param: NtpServer}
           RabbitHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
@@ -1018,15 +1013,15 @@ resources:
       PortName: redis_virtual_ip
       NetworkName: {get_param: [ServiceNetMap, RedisNetwork]}
 
-  # same as external
+  # The public VIP is on the External net, falls back to ctlplane
   PublicVirtualIP:
-    type: OS::Neutron::Port
     depends_on: Networks
+    type: OS::TripleO::Controller::Ports::ExternalPort
     properties:
-      name: public_virtual_ip
-      network: {get_param: PublicVirtualNetwork}
-      fixed_ips: {get_param: PublicVirtualFixedIPs}
-      replacement_policy: AUTO
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
+      PortName: public_virtual_ip
+      FixedIPs: {get_param: PublicVirtualFixedIPs}
 
   InternalApiVirtualIP:
     depends_on: Networks
@@ -1052,7 +1047,7 @@ resources:
   VipMap:
     type: OS::TripleO::Network::Ports::NetIpMap
     properties:
-      ExternalIp: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+      ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
       InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
       StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
       StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
@@ -1085,7 +1080,7 @@ resources:
         rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, RabbitMqNetwork]}]}
         # direct configuration of Virtual IPs for each network
         control_virtual_ip: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-        public_virtual_ip: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+        public_virtual_ip: {get_attr: [PublicVirtualIP, ip_address]}
         internal_api_virtual_ip: {get_attr: [InternalApiVirtualIP, ip_address]}
         storage_virtual_ip: {get_attr: [StorageVirtualIP, ip_address]}
         storage_mgmt_virtual_ip: {get_attr: [StorageMgmtVirtualIP, ip_address]}
@@ -1244,11 +1239,11 @@ outputs:
       list_join:
       - ''
       - - http://
-        - {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+        - {get_attr: [PublicVirtualIP, ip_address]}
         - :5000/v2.0/
   PublicVip:
     description: Controller VIP for public API endpoints
-    value: {get_attr: [PublicVirtualIP, fixed_ips, 0, ip_address]}
+    value: {get_attr: [PublicVirtualIP, ip_address]}
   CeilometerInternalVip:
     description: VIP for Ceilometer API internal endpoint
     value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}