Merge "Set default OSD pool size to 1 in scenario 001/004 containers"
authorJenkins <jenkins@review.openstack.org>
Thu, 17 Aug 2017 04:37:16 +0000 (04:37 +0000)
committerGerrit Code Review <review@openstack.org>
Thu, 17 Aug 2017 04:37:16 +0000 (04:37 +0000)
12 files changed:
docker/firstboot/setup_docker_host.sh
docker/services/nova-libvirt.yaml
environments/docker-centos-tripleoupstream.yaml [deleted file]
extraconfig/nova_metadata/krb-service-principals.j2.yaml [moved from extraconfig/nova_metadata/krb-service-principals.yaml with 65% similarity]
network/ports/net_vip_map_external.j2.yaml [new file with mode: 0644]
network/ports/net_vip_map_external.yaml [deleted file]
network/ports/net_vip_map_external_v6.j2.yaml [new file with mode: 0644]
network/ports/net_vip_map_external_v6.yaml [deleted file]
overcloud.j2.yaml
puppet/services/neutron-plugin-ml2.yaml
releasenotes/notes/neutron-ml2-overlay-ip-version-4f14932355847aa0.yaml [new file with mode: 0644]
tripleo_heat_templates/environment_generator.py

index 8b4c6a0..af213bb 100755 (executable)
@@ -6,3 +6,6 @@ set -eux
 # Disable libvirtd since it conflicts with nova_libvirt container
 /usr/bin/systemctl disable libvirtd.service
 /usr/bin/systemctl stop libvirtd.service
+# Disable virtlogd since it conflicts with nova_virtlogd container
+/usr/bin/systemctl disable virtlogd.service
+/usr/bin/systemctl stop virtlogd.service
index 916b057..7637e6e 100644 (file)
@@ -12,10 +12,6 @@ parameters:
   DockerNovaLibvirtConfigImage:
     description: The container image to use for the nova_libvirt config_volume
     type: string
-  EnablePackageInstall:
-    default: 'false'
-    description: Set to true to enable package installation at deploy time
-    type: boolean
   ServiceData:
     default: {}
     description: Dictionary packing service data
@@ -144,13 +140,45 @@ outputs:
               dest: "/etc/ceph/"
               merge: true
               preserve_properties: true
+        /var/lib/kolla/config_files/nova_virtlogd.json:
+          command: /usr/sbin/virtlogd --config /etc/libvirt/virtlogd.conf
+          config_files:
+            - source: "/var/lib/kolla/config_files/src/*"
+              dest: "/"
+              merge: true
+              preserve_properties: true
           permissions:
             - path: /var/log/nova
               owner: nova:nova
               recurse: true
       docker_config:
         step_3:
+          nova_virtlogd:
+            start_order: 0
+            image: {get_param: DockerNovaLibvirtImage}
+            net: host
+            pid: host
+            privileged: true
+            restart: always
+            volumes:
+              list_concat:
+                - {get_attr: [ContainersCommon, volumes]}
+                -
+                  - /var/lib/kolla/config_files/nova_virtlogd.json:/var/lib/kolla/config_files/config.json:ro
+                  - /var/lib/config-data/puppet-generated/nova_libvirt/:/var/lib/kolla/config_files/src:ro
+                  - /lib/modules:/lib/modules:ro
+                  - /dev:/dev
+                  - /run:/run
+                  - /sys/fs/cgroup:/sys/fs/cgroup
+                  - /var/lib/nova:/var/lib/nova
+                  - /var/run/libvirt:/var/run/libvirt
+                  - /var/lib/libvirt:/var/lib/libvirt
+                  - /etc/libvirt/qemu:/etc/libvirt/qemu:ro
+                  - /var/log/libvirt/qemu:/var/log/libvirt/qemu
+            environment:
+              - KOLLA_CONFIG_STRATEGY=COPY_ALWAYS
           nova_libvirt:
+            start_order: 1
             image: {get_param: DockerNovaLibvirtImage}
             net: host
             pid: host
@@ -169,7 +197,6 @@ outputs:
                   - /sys/fs/cgroup:/sys/fs/cgroup
                   - /var/lib/nova:/var/lib/nova
                   - /etc/libvirt:/etc/libvirt
-                  # Needed to use host's virtlogd
                   - /var/run/libvirt:/var/run/libvirt
                   - /var/lib/libvirt:/var/lib/libvirt
                   - /var/log/libvirt/qemu:/var/log/libvirt/qemu:ro
@@ -216,22 +243,6 @@ outputs:
           file:
             path: /etc/ceph
             state: directory
-        - name: set enable_package_install fact
-          set_fact:
-            enable_package_install: {get_param: EnablePackageInstall}
-        # We use virtlogd on host, so when using Deployed Server
-        # feature, we need to ensure libvirt is installed.
-        - name: install libvirt-daemon
-          package:
-            name: libvirt-daemon
-            state: present
-          when: enable_package_install
-        - name: start virtlogd socket
-          service:
-            name: virtlogd.socket
-            state: started
-            enabled: yes
-          when: enable_package_install
       upgrade_tasks:
         - name: Stop and disable libvirtd service
           tags: step2
diff --git a/environments/docker-centos-tripleoupstream.yaml b/environments/docker-centos-tripleoupstream.yaml
deleted file mode 100644 (file)
index 01a118e..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# Generated with the following on 2017-08-11T04:58:59.567629
-#
-#   openstack overcloud container image prepare --env-file environments/docker-centos-tripleoupstream.yaml
-#
-
-parameter_defaults:
-  DockerAodhApiImage: tripleoupstream/centos-binary-aodh-api:latest
-  DockerAodhConfigImage: tripleoupstream/centos-binary-aodh-api:latest
-  DockerAodhEvaluatorImage: tripleoupstream/centos-binary-aodh-evaluator:latest
-  DockerAodhListenerImage: tripleoupstream/centos-binary-aodh-listener:latest
-  DockerAodhNotifierImage: tripleoupstream/centos-binary-aodh-notifier:latest
-  DockerBarbicanApiImage: tripleoupstream/centos-binary-barbican-api:latest
-  DockerCeilometerCentralImage: tripleoupstream/centos-binary-ceilometer-central:latest
-  DockerCeilometerComputeImage: tripleoupstream/centos-binary-ceilometer-compute:latest
-  DockerCeilometerConfigImage: tripleoupstream/centos-binary-ceilometer-central:latest
-  DockerCeilometerIpmiImage: tripleoupstream/centos-binary-ceilometer-ipmi:latest
-  DockerCeilometerNotificationImage: tripleoupstream/centos-binary-ceilometer-notification:latest
-  DockerCinderApiImage: tripleoupstream/centos-binary-cinder-api:latest
-  DockerCinderBackupImage: tripleoupstream/centos-binary-cinder-backup:latest
-  DockerCinderConfigImage: tripleoupstream/centos-binary-cinder-api:latest
-  DockerCinderSchedulerImage: tripleoupstream/centos-binary-cinder-scheduler:latest
-  DockerCinderVolumeImage: tripleoupstream/centos-binary-cinder-volume:latest
-  DockerClustercheckConfigImage: tripleoupstream/centos-binary-mariadb:latest
-  DockerClustercheckImage: tripleoupstream/centos-binary-mariadb:latest
-  DockerCollectdConfigImage: tripleoupstream/centos-binary-collectd:latest
-  DockerCollectdImage: tripleoupstream/centos-binary-collectd:latest
-  DockerCongressApiImage: tripleoupstream/centos-binary-congress-api:latest
-  DockerCongressConfigImage: tripleoupstream/centos-binary-congress-api:latest
-  DockerEc2ApiConfigImage: tripleoupstream/centos-binary-ec2-api:latest
-  DockerEc2ApiImage: tripleoupstream/centos-binary-ec2-api:latest
-  DockerEtcdConfigImage: tripleoupstream/centos-binary-etcd:latest
-  DockerEtcdImage: tripleoupstream/centos-binary-etcd:latest
-  DockerGlanceApiConfigImage: tripleoupstream/centos-binary-glance-api:latest
-  DockerGlanceApiImage: tripleoupstream/centos-binary-glance-api:latest
-  DockerGnocchiApiImage: tripleoupstream/centos-binary-gnocchi-api:latest
-  DockerGnocchiConfigImage: tripleoupstream/centos-binary-gnocchi-api:latest
-  DockerGnocchiMetricdImage: tripleoupstream/centos-binary-gnocchi-metricd:latest
-  DockerGnocchiStatsdImage: tripleoupstream/centos-binary-gnocchi-statsd:latest
-  DockerHAProxyConfigImage: tripleoupstream/centos-binary-haproxy:latest
-  DockerHAProxyImage: tripleoupstream/centos-binary-haproxy:latest
-  DockerHeatApiCfnConfigImage: tripleoupstream/centos-binary-heat-api-cfn:latest
-  DockerHeatApiCfnImage: tripleoupstream/centos-binary-heat-api-cfn:latest
-  DockerHeatApiConfigImage: tripleoupstream/centos-binary-heat-api:latest
-  DockerHeatApiImage: tripleoupstream/centos-binary-heat-api:latest
-  DockerHeatConfigImage: tripleoupstream/centos-binary-heat-api:latest
-  DockerHeatEngineImage: tripleoupstream/centos-binary-heat-engine:latest
-  DockerHorizonConfigImage: tripleoupstream/centos-binary-horizon:latest
-  DockerHorizonImage: tripleoupstream/centos-binary-horizon:latest
-  DockerIronicApiConfigImage: tripleoupstream/centos-binary-ironic-api:latest
-  DockerIronicApiImage: tripleoupstream/centos-binary-ironic-api:latest
-  DockerIronicConductorImage: tripleoupstream/centos-binary-ironic-conductor:latest
-  DockerIronicConfigImage: tripleoupstream/centos-binary-ironic-pxe:latest
-  DockerIronicInspectorConfigImage: tripleoupstream/centos-binary-ironic-inspector:latest
-  DockerIronicInspectorImage: tripleoupstream/centos-binary-ironic-inspector:latest
-  DockerIronicPxeImage: tripleoupstream/centos-binary-ironic-pxe:latest
-  DockerIscsidConfigImage: tripleoupstream/centos-binary-iscsid:latest
-  DockerIscsidImage: tripleoupstream/centos-binary-iscsid:latest
-  DockerKeystoneConfigImage: tripleoupstream/centos-binary-keystone:latest
-  DockerKeystoneImage: tripleoupstream/centos-binary-keystone:latest
-  DockerManilaApiImage: tripleoupstream/centos-binary-manila-api:latest
-  DockerManilaConfigImage: tripleoupstream/centos-binary-manila-api:latest
-  DockerManilaSchedulerImage: tripleoupstream/centos-binary-manila-scheduler:latest
-  DockerManilaShareImage: tripleoupstream/centos-binary-manila-share:latest
-  DockerMemcachedConfigImage: tripleoupstream/centos-binary-memcached:latest
-  DockerMemcachedImage: tripleoupstream/centos-binary-memcached:latest
-  DockerMistralApiImage: tripleoupstream/centos-binary-mistral-api:latest
-  DockerMistralConfigImage: tripleoupstream/centos-binary-mistral-api:latest
-  DockerMistralEngineImage: tripleoupstream/centos-binary-mistral-engine:latest
-  DockerMistralExecutorImage: tripleoupstream/centos-binary-mistral-executor:latest
-  DockerMongodbConfigImage: tripleoupstream/centos-binary-mongodb:latest
-  DockerMongodbImage: tripleoupstream/centos-binary-mongodb:latest
-  DockerMultipathdConfigImage: tripleoupstream/centos-binary-multipathd:latest
-  DockerMultipathdImage: tripleoupstream/centos-binary-multipathd:latest
-  DockerMysqlClientConfigImage: tripleoupstream/centos-binary-mariadb:latest
-  DockerMysqlConfigImage: tripleoupstream/centos-binary-mariadb:latest
-  DockerMysqlImage: tripleoupstream/centos-binary-mariadb:latest
-  DockerNeutronApiImage: tripleoupstream/centos-binary-neutron-server:latest
-  DockerNeutronConfigImage: tripleoupstream/centos-binary-neutron-server:latest
-  DockerNeutronDHCPImage: tripleoupstream/centos-binary-neutron-dhcp-agent:latest
-  DockerNeutronL3AgentImage: tripleoupstream/centos-binary-neutron-l3-agent:latest
-  DockerNeutronMetadataImage: tripleoupstream/centos-binary-neutron-metadata-agent:latest
-  DockerNovaApiImage: tripleoupstream/centos-binary-nova-api:latest
-  DockerNovaComputeImage: tripleoupstream/centos-binary-nova-compute:latest
-  DockerNovaComputeIronicImage: tripleoupstream/centos-binary-nova-compute-ironic:latest
-  DockerNovaConductorImage: tripleoupstream/centos-binary-nova-conductor:latest
-  DockerNovaConfigImage: tripleoupstream/centos-binary-nova-api:latest
-  DockerNovaConsoleauthImage: tripleoupstream/centos-binary-nova-consoleauth:latest
-  DockerNovaLibvirtConfigImage: tripleoupstream/centos-binary-nova-compute:latest
-  DockerNovaLibvirtImage: tripleoupstream/centos-binary-nova-libvirt:latest
-  DockerNovaPlacementConfigImage: tripleoupstream/centos-binary-nova-placement-api:latest
-  DockerNovaPlacementImage: tripleoupstream/centos-binary-nova-placement-api:latest
-  DockerNovaSchedulerImage: tripleoupstream/centos-binary-nova-scheduler:latest
-  DockerNovaVncProxyImage: tripleoupstream/centos-binary-nova-novncproxy:latest
-  DockerOVNControllerConfigImage: tripleoupstream/centos-binary-ovn-controller:latest
-  DockerOVNControllerImage: tripleoupstream/centos-binary-ovn-controller:latest
-  DockerOVNNbDbImage: tripleoupstream/centos-binary-ovn-nb-db-server:latest
-  DockerOVNNorthdImage: tripleoupstream/centos-binary-ovn-northd:latest
-  DockerOVNSbDbImage: tripleoupstream/centos-binary-ovn-sb-db-server:latest
-  DockerOctaviaApiImage: tripleoupstream/centos-binary-octavia-api:latest
-  DockerOctaviaConfigImage: tripleoupstream/centos-binary-octavia-api:latest
-  DockerOctaviaHealthManagerImage: tripleoupstream/centos-binary-octavia-health-manager:latest
-  DockerOctaviaHousekeepingImage: tripleoupstream/centos-binary-octavia-housekeeping:latest
-  DockerOctaviaWorkerImage: tripleoupstream/centos-binary-octavia-worker:latest
-  DockerOpenvswitchImage: tripleoupstream/centos-binary-neutron-openvswitch-agent:latest
-  DockerPankoApiImage: tripleoupstream/centos-binary-panko-api:latest
-  DockerPankoConfigImage: tripleoupstream/centos-binary-panko-api:latest
-  DockerRabbitmqConfigImage: tripleoupstream/centos-binary-rabbitmq:latest
-  DockerRabbitmqImage: tripleoupstream/centos-binary-rabbitmq:latest
-  DockerRedisConfigImage: tripleoupstream/centos-binary-redis:latest
-  DockerRedisImage: tripleoupstream/centos-binary-redis:latest
-  DockerSaharaApiImage: tripleoupstream/centos-binary-sahara-api:latest
-  DockerSaharaConfigImage: tripleoupstream/centos-binary-sahara-api:latest
-  DockerSaharaEngineImage: tripleoupstream/centos-binary-sahara-engine:latest
-  DockerSensuClientImage: tripleoupstream/centos-binary-sensu-client:latest
-  DockerSensuConfigImage: tripleoupstream/centos-binary-sensu-client:latest
-  DockerSwiftAccountImage: tripleoupstream/centos-binary-swift-account:latest
-  DockerSwiftConfigImage: tripleoupstream/centos-binary-swift-proxy-server:latest
-  DockerSwiftContainerImage: tripleoupstream/centos-binary-swift-container:latest
-  DockerSwiftObjectImage: tripleoupstream/centos-binary-swift-object:latest
-  DockerSwiftProxyImage: tripleoupstream/centos-binary-swift-proxy-server:latest
-  DockerTackerConfigImage: tripleoupstream/centos-binary-tacker:latest
-  DockerTackerImage: tripleoupstream/centos-binary-tacker:latest
-  DockerZaqarConfigImage: tripleoupstream/centos-binary-zaqar:latest
-  DockerZaqarImage: tripleoupstream/centos-binary-zaqar:latest
@@ -5,30 +5,38 @@ parameters:
   RoleData:
      type: json
      description: the list containing the 'role_data' output for the ServiceChain
-
-  # Coming from parameter_defaults
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # Special case the External hostname param, which is CloudName
   CloudName:
     default: overcloud.localdomain
     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
     type: string
+{%- elif network.name == 'InternalApi' %}
+  # Special case the Internal API hostname param, which is CloudNameInternal
   CloudNameInternal:
-    default: overcloud.internalapi.localdomain
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's internal API endpoint. E.g.
-      'ci-overcloud.internalapi.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
-  CloudNameStorage:
-    default: overcloud.storage.localdomain
+{%- elif network.name == 'StorageMgmt' %}
+  # Special case StorageMgmt hostname param, which is CloudNameStorageManagement
+  CloudNameStorageManagement:
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's storage endpoint. E.g.
-      'ci-overcloud.storage.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
-  CloudNameStorageManagement:
-    default: overcloud.storagemgmt.localdomain
+{%- else %}
+  CloudName{{network.name}}:
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's storage management endpoint. E.g.
-      'ci-overcloud.storagemgmt.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
+{%- endif %}
+{%- endfor %}
   CloudNameCtlplane:
     default: overcloud.ctlplane.localdomain
     description: >
@@ -61,10 +69,17 @@ resources:
           data:
             metadata: {get_attr: [IncomingMetadataSettings, value]}
             fqdns:
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
               external: {get_param: CloudName}
+{%- elif network.name == 'InternalApi' %}
               internal_api: {get_param: CloudNameInternal}
-              storage: {get_param: CloudNameStorage}
+{%- elif network.name == 'StorageMgmt' %}
               storage_mgmt: {get_param: CloudNameStorageManagement}
+{%- else %}
+              {{network.name_lower}}: {get_param: CloudName{{network.name}}}
+{%- endif %}
+{%- endfor %}
               ctlplane: {get_param: CloudNameCtlplane}
 
   CompactServices:
@@ -82,3 +97,4 @@ outputs:
       map_merge:
         - {get_attr: [IndividualServices, value]}
         - compact_services: {get_attr: [CompactServices, value]}
+
diff --git a/network/ports/net_vip_map_external.j2.yaml b/network/ports/net_vip_map_external.j2.yaml
new file mode 100644 (file)
index 0000000..b17f48b
--- /dev/null
@@ -0,0 +1,40 @@
+heat_template_version: pike
+
+parameters:
+  # Set these via parameter defaults to configure external VIPs
+  ControlPlaneIP:
+    default: ''
+    type: string
+{%- for network in networks if network.vip|default(false) %}
+  {{network.name}}NetworkVip:
+    default: ''
+    type: string
+{%- endfor %}
+  # The following are unused in this template
+  ControlPlaneIp:
+    default: ''
+    type: string
+{%- for network in networks if network.vip|default(false) %}
+  {{network.name}}Ip:
+    default: ''
+    type: string
+  {{network.name}}IpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
+{%- endfor %}
+
+outputs:
+  net_ip_map:
+    description: >
+      A Hash containing a mapping of network names to assigned IPs
+      for a specific machine.
+    value:
+      ctlplane: {get_param: ControlPlaneIP}
+{%- for network in networks if network.vip|default(false) %}
+      {{network.name_lower}}: {get_param: {{network.name}}NetworkVip}
+{%- endfor %}
+      ctlplane_uri: {get_param: ControlPlaneIP}
+{%- for network in networks if network.vip|default(false) %}
+      {{network.name_lower}}_uri: {get_param: {{network.name}}NetworkVip}
+{%- endfor %}
diff --git a/network/ports/net_vip_map_external.yaml b/network/ports/net_vip_map_external.yaml
deleted file mode 100644 (file)
index d084788..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-heat_template_version: pike
-
-parameters:
-  # Set these via parameter defaults to configure external VIPs
-  ControlPlaneIP:
-    default: ''
-    type: string
-  ExternalNetworkVip:
-    default: ''
-    type: string
-  InternalApiNetworkVip:
-    default: ''
-    type: string
-  StorageNetworkVip:
-    default: ''
-    type: string
-  StorageMgmtNetworkVip:
-    default: ''
-    type: string
-  # The following are unused in this template
-  ControlPlaneIp:
-    default: ''
-    type: string
-  ExternalIp:
-    default: ''
-    type: string
-  ExternalIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  InternalApiIp:
-    default: ''
-    type: string
-  InternalApiIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  StorageIp:
-    default: ''
-    type: string
-  StorageIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  StorageMgmtIp:
-    default: ''
-    type: string
-  StorageMgmtIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-
-outputs:
-  net_ip_map:
-    description: >
-      A Hash containing a mapping of network names to assigned IPs
-      for a specific machine.
-    value:
-      ctlplane: {get_param: ControlPlaneIP}
-      external: {get_param: ExternalNetworkVip}
-      internal_api: {get_param: InternalApiNetworkVip}
-      storage: {get_param: StorageNetworkVip}
-      storage_mgmt: {get_param: StorageMgmtNetworkVip}
-      ctlplane_uri: {get_param: ControlPlaneIP}
-      external_uri: {get_param: ExternalNetworkVip}
-      internal_api_uri: {get_param: InternalApiNetworkVip}
-      storage_uri: {get_param: StorageNetworkVip}
-      storage_mgmt_uri: {get_param: StorageMgmtNetworkVip}
diff --git a/network/ports/net_vip_map_external_v6.j2.yaml b/network/ports/net_vip_map_external_v6.j2.yaml
new file mode 100644 (file)
index 0000000..5eff73c
--- /dev/null
@@ -0,0 +1,45 @@
+heat_template_version: pike
+
+parameters:
+  # Set these via parameter defaults to configure external VIPs
+  ControlPlaneIP:
+    default: ''
+    type: string
+{%- for network in networks if network.vip|default(false) %}
+  {{network.name}}NetworkVip:
+    default: ''
+    type: string
+{%- endfor %}
+  # The following are unused in this template
+  ControlPlaneIp:
+    default: ''
+    type: string
+{%- for network in networks if network.vip|default(false) %}
+  {{network.name}}Ip:
+    default: ''
+    type: string
+  {{network.name}}IpUri:
+    default: ''
+    type: string
+    description: IP address with brackets in case of IPv6
+{%- endfor %}
+
+outputs:
+  net_ip_map:
+    description: >
+      A Hash containing a mapping of network names to assigned IPs
+      for a specific machine.
+    value:
+      ctlplane: {get_param: ControlPlaneIP}
+{%- for network in networks if network.vip|default(false) %}
+      {{network.name_lower}}: {get_param: {{network.name}}NetworkVip}
+{%- endfor %}
+      ctlplane_uri: {get_param: ControlPlaneIP}
+{%- for network in networks if network.vip|default(false) %}
+      {{network.name_lower}}_uri:
+        list_join:
+          - ''
+          - - '['
+            - {get_param: {{network.name}}NetworkVip}
+            - ']'
+{%- endfor %}
diff --git a/network/ports/net_vip_map_external_v6.yaml b/network/ports/net_vip_map_external_v6.yaml
deleted file mode 100644 (file)
index 72e60cb..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-heat_template_version: pike
-
-parameters:
-  # Set these via parameter defaults to configure external VIPs
-  ControlPlaneIP:
-    default: ''
-    type: string
-  ExternalNetworkVip:
-    default: ''
-    type: string
-  InternalApiNetworkVip:
-    default: ''
-    type: string
-  StorageNetworkVip:
-    default: ''
-    type: string
-  StorageMgmtNetworkVip:
-    default: ''
-    type: string
-  # The following are unused in this template
-  ControlPlaneIp:
-    default: ''
-    type: string
-  ExternalIp:
-    default: ''
-    type: string
-  ExternalIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  InternalApiIp:
-    default: ''
-    type: string
-  InternalApiIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  StorageIp:
-    default: ''
-    type: string
-  StorageIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-  StorageMgmtIp:
-    default: ''
-    type: string
-  StorageMgmtIpUri:
-    default: ''
-    type: string
-    description: IP address with brackets in case of IPv6
-
-outputs:
-  net_ip_map:
-    description: >
-      A Hash containing a mapping of network names to assigned IPs
-      for a specific machine.
-    value:
-      ctlplane: {get_param: ControlPlaneIP}
-      external: {get_param: ExternalNetworkVip}
-      internal_api: {get_param: InternalApiNetworkVip}
-      storage: {get_param: StorageNetworkVip}
-      storage_mgmt: {get_param: StorageMgmtNetworkVip}
-      ctlplane_uri: {get_param: ControlPlaneIP}
-      external_uri:
-        list_join:
-          - ''
-          - - '['
-            - {get_param: ExternalNetworkVip}
-            - ']'
-      internal_api_uri:
-        list_join:
-          - ''
-          - - '['
-            - {get_param: InternalApiNetworkVip}
-            - ']'
-      storage_uri:
-        list_join:
-          - ''
-          - - '['
-            - {get_param: StorageNetworkVip}
-            - ']'
-      storage_mgmt_uri:
-        list_join:
-          - ''
-          - - '['
-            - {get_param: StorageMgmtNetworkVip}
-            - ']'
index a7a4fe2..2e39867 100644 (file)
@@ -21,40 +21,44 @@ description: >
 parameters:
 
   # Common parameters (not specific to a role)
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # Special case the External hostname param, which is CloudName
   CloudName:
     default: overcloud.localdomain
     description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
     type: string
+{%- elif network.name == 'InternalApi' %}
+  # Special case the Internal API hostname param, which is CloudNameInternal
   CloudNameInternal:
-    default: overcloud.internalapi.localdomain
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's internal API endpoint. E.g.
-      'ci-overcloud.internalapi.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
-  CloudNameStorage:
-    default: overcloud.storage.localdomain
+{%- elif network.name == 'StorageMgmt' %}
+  # Special case StorageMgmt hostname param, which is CloudNameStorageManagement
+  CloudNameStorageManagement:
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's storage endpoint. E.g.
-      'ci-overcloud.storage.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
-  CloudNameStorageManagement:
-    default: overcloud.storagemgmt.localdomain
+{%- else %}
+  CloudName{{network.name}}:
+    default: overcloud.{{network.name.lower()}}.localdomain
     description: >
-      The DNS name of this cloud's storage management endpoint. E.g.
-      'ci-overcloud.storagemgmt.tripleo.org'.
+      The DNS name of this cloud's {{network.name_lower}} endpoint. E.g.
+      'ci-overcloud.{{network.name.lower()}}.tripleo.org'.
     type: string
+{%- endif %}
+{%- endfor %}
   CloudNameCtlplane:
     default: overcloud.ctlplane.localdomain
     description: >
       The DNS name of this cloud's provisioning network endpoint. E.g.
       'ci-overcloud.ctlplane.tripleo.org'.
     type: string
-  ControlFixedIPs:
-    default: []
-    description: >
-        Control the IP allocation for the ControlVirtualIP port. E.g.
-        [{'ip_address':'1.2.3.4'}]
-    type: json
   ExtraConfig:
     default: {}
     description: |
@@ -77,12 +81,6 @@ parameters:
     description: |
       DEPRECATED use ComputeExtraConfig instead
     type: json
-  InternalApiVirtualFixedIPs:
-    default: []
-    description: >
-        Control the IP allocation for the InternalApiVirtualInterface port. E.g.
-        [{'ip_address':'1.2.3.4'}]
-    type: json
   NeutronControlPlaneID:
     default: 'ctlplane'
     type: string
@@ -91,28 +89,34 @@ parameters:
     default: nic1
     description: Which interface to add to the NeutronPhysicalBridge.
     type: string
-  PublicVirtualFixedIPs:
+  ControlFixedIPs:
     default: []
     description: >
-        Control the IP allocation for the PublicVirtualInterface port. E.g.
+        Control the IP allocation for the ControlVirtualIP port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
-  RabbitCookieSalt:
-    type: string
-    default: unset
-    description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
-  StorageVirtualFixedIPs:
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # TODO (dsneddon) Legacy name, eventually refactor to match network name
+  PublicVirtualFixedIPs:
     default: []
     description: >
-        Control the IP allocation for the StorageVirtualInterface port. E.g.
+        Control the IP allocation for the PublicVirtualInterface port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
-  StorageMgmtVirtualFixedIPs:
+{%- else %}
+  {{network.name}}VirtualFixedIPs:
     default: []
     description: >
-        Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
+        Control the IP allocation for the {{network.name}}VirtualInterface port. E.g.
         [{'ip_address':'1.2.3.4'}]
     type: json
+{%- endif %}
+{%- endfor %}
+  RabbitCookieSalt:
+    type: string
+    default: unset
+    description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
   RedisVirtualFixedIPs:
     default: []
     description: >
@@ -240,28 +244,38 @@ resources:
         - - str_replace:
               template: IP  HOST
               params:
-                IP: {get_attr: [VipMap, net_ip_map, external]}
-                HOST: {get_param: CloudName}
+                IP: {get_attr: [VipMap, net_ip_map, ctlplane]}
+                HOST: {get_param: CloudNameCtlplane}
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # Special case the External hostname param, which is CloudName
           - str_replace:
               template: IP  HOST
               params:
-                IP: {get_attr: [VipMap, net_ip_map, ctlplane]}
-                HOST: {get_param: CloudNameCtlplane}
+                IP: {get_attr: [VipMap, net_ip_map, {{network.name_lower}}]}
+                HOST: {get_param: CloudName}
+{%- elif network.name == 'InternalApi' %}
+  # Special case the Internal API hostname param, which is CloudNameInternal
           - str_replace:
               template: IP  HOST
               params:
-                IP: {get_attr: [VipMap, net_ip_map, internal_api]}
+                IP: {get_attr: [VipMap, net_ip_map, {{network.name_lower}}]}
                 HOST: {get_param: CloudNameInternal}
+{%- elif network.name == 'StorageMgmt' %}
+  # Special case StorageMgmt hostname param, which is CloudNameStorageManagement
           - str_replace:
               template: IP  HOST
               params:
-                IP: {get_attr: [VipMap, net_ip_map, storage]}
-                HOST: {get_param: CloudNameStorage}
+                IP: {get_attr: [VipMap, net_ip_map, {{network.name_lower}}]}
+                HOST: {get_param: CloudNameStorageManagement}
+{%- else %}
           - str_replace:
               template: IP  HOST
               params:
-                IP: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
-                HOST: {get_param: CloudNameStorageManagement}
+                IP: {get_attr: [VipMap, net_ip_map, {{network.name_lower}}]}
+                HOST: {get_param: CloudName{{network.name}}}
+{%- endif %}
+{%- endfor %}
 
   HeatAuthEncryptionKey:
     type: OS::TripleO::RandomString
@@ -297,11 +311,21 @@ resources:
     type: OS::TripleO::EndpointMap
     properties:
       CloudEndpoints:
-        external: {get_param: CloudName}
-        internal_api: {get_param: CloudNameInternal}
-        storage: {get_param: CloudNameStorage}
-        storage_mgmt: {get_param: CloudNameStorageManagement}
         ctlplane: {get_param: CloudNameCtlplane}
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # Special case the External hostname param, which is CloudName
+        {{network.name_lower}}: {get_param: CloudName}
+{%- elif network.name == 'InternalApi' %}
+  # Special case the Internal API hostname param, which is CloudNameInternal
+        {{network.name_lower}}: {get_param: CloudNameInternal}
+{%- elif network.name == 'StorageMgmt' %}
+  # Special case StorageMgmt hostname param, which is CloudNameStorageManagement
+        {{network.name_lower}}: {get_param: CloudNameStorageManagement}
+{%- else %}
+        {{network.name_lower}}: {get_param: CloudName{{network.name}}}
+{%- endif %}
+{%- endfor %}
       NetIpMap: {get_attr: [VipMap, net_ip_map]}
       ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
 
@@ -458,12 +482,9 @@ resources:
     type: OS::TripleO::Network::Ports::NetIpListMap
     properties:
       ControlPlaneIpList: {get_attr: [{{role.name}}, ip_address]}
-      ExternalIpList: {get_attr: [{{role.name}}, external_ip_address]}
-      InternalApiIpList: {get_attr: [{{role.name}}, internal_api_ip_address]}
-      StorageIpList: {get_attr: [{{role.name}}, storage_ip_address]}
-      StorageMgmtIpList: {get_attr: [{{role.name}}, storage_mgmt_ip_address]}
-      TenantIpList: {get_attr: [{{role.name}}, tenant_ip_address]}
-      ManagementIpList: {get_attr: [{{role.name}}, management_ip_address]}
+{%- for network in networks if network.enabled|default(true) %}
+      {{network.name}}IpList: {get_attr: [{{role.name}}, {{network.name_lower}}_ip_address]}
+{%- endfor %}
       EnabledServices: {get_attr: [{{role.name}}ServiceNames, value]}
       ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
       ServiceHostnameList: {get_attr: [{{role.name}}, hostname]}
@@ -582,10 +603,20 @@ resources:
   allNodesConfig:
     type: OS::TripleO::AllNodes::SoftwareConfig
     properties:
-      cloud_name_external: {get_param: CloudName}
-      cloud_name_internal_api: {get_param: CloudNameInternal}
-      cloud_name_storage: {get_param: CloudNameStorage}
-      cloud_name_storage_mgmt: {get_param: CloudNameStorageManagement}
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
+  # Special case the External hostname param, which is CloudName
+      cloud_name_{{network.name_lower}}: {get_param: CloudName}
+{%- elif network.name == 'InternalApi' %}
+  # Special case the Internal API hostname param, which is CloudNameInternal
+      cloud_name_{{network.name_lower}}: {get_param: CloudNameInternal}
+{%- elif network.name == 'StorageMgmt' %}
+  # Special case StorageMgmt hostname param, which is CloudNameStorageManagement
+      cloud_name_{{network.name_lower}}: {get_param: CloudNameStorageManagement}
+{%- else %}
+      cloud_name_{{network.name_lower}}: {get_param: CloudName{{network.name}}}
+{%- endif %}
+{%- endfor %}
       cloud_name_ctlplane: {get_param: CloudNameCtlplane}
       enabled_services:
         list_join:
@@ -699,6 +730,8 @@ resources:
       ServiceName: redis
       FixedIPs: {get_param: RedisVirtualFixedIPs}
 
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
   # The public VIP is on the External net, falls back to ctlplane
   PublicVirtualIP:
     depends_on: Networks
@@ -708,43 +741,38 @@ resources:
       ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
       PortName: public_virtual_ip
       FixedIPs: {get_param: PublicVirtualFixedIPs}
-
-  InternalApiVirtualIP:
+{%- elif network.name == 'StorageMgmt' %}
+  {{network.name}}VirtualIP:
     depends_on: Networks
-    type: OS::TripleO::Network::Ports::InternalApiVipPort
+    type: OS::TripleO::Network::Ports::{{network.name}}VipPort
     properties:
       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-      PortName: internal_api_virtual_ip
-      FixedIPs: {get_param: InternalApiVirtualFixedIPs}
-
-  StorageVirtualIP:
-    depends_on: Networks
-    type: OS::TripleO::Network::Ports::StorageVipPort
-    properties:
-      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-      PortName: storage_virtual_ip
-      FixedIPs: {get_param: StorageVirtualFixedIPs}
-
-  StorageMgmtVirtualIP:
+      PortName: storage_management_virtual_ip
+      FixedIPs: {get_param: {{network.name}}VirtualFixedIPs}
+{%- else %}
+  {{network.name}}VirtualIP:
     depends_on: Networks
-    type: OS::TripleO::Network::Ports::StorageMgmtVipPort
+    type: OS::TripleO::Network::Ports::{{network.name}}VipPort
     properties:
       ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
-      PortName: storage_management_virtual_ip
-      FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
+      PortName: {{network.name_lower}}_virtual_ip
+      FixedIPs: {get_param: {{network.name}}VirtualFixedIPs}
+{%- endif %}
+{%- endfor %}
 
   VipMap:
     type: OS::TripleO::Network::Ports::NetVipMap
     properties:
       ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+{%- for network in networks if network.vip|default(false) %}
+{%- if network.name == 'External' %}
       ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
       ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
-      InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
-      InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
-      StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
-      StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
-      StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
-      StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
+{%- else %}
+      {{network.name}}Ip: {get_attr: [{{network.name}}VirtualIP, ip_address]}
+      {{network.name}}IpUri: {get_attr: [{{network.name}}VirtualIP, ip_address_uri]}
+{%- endif %}
+{%- endfor %}
       # No tenant or management VIP required
     # Because of nested get_attr functions in the KeystoneAdminVip output, we
     # can't determine which attributes of VipMap are used until after
@@ -758,24 +786,12 @@ resources:
       PingTestIps:
         list_join:
         - ' '
-        - - yaql:
-              expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, external_ip_address]}
-          - yaql:
-              expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, internal_api_ip_address]}
-          - yaql:
-              expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, storage_ip_address]}
-          - yaql:
-              expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, storage_mgmt_ip_address]}
-          - yaql:
-              expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, tenant_ip_address]}
+        -
+{%- for network in networks if network.enabled|default(true) %}
           - yaql:
               expression: coalesce($.data, []).first(null)
-              data: {get_attr: [{{primary_role_name}}, management_ip_address]}
+              data: {get_attr: [{{primary_role_name}}, {{network.name_lower}}_ip_address]}
+{%- endfor %}
 
   UpdateWorkflow:
     type: OS::TripleO::Tasks::UpdateWorkflow
index bc91374..1ea6b1a 100644 (file)
@@ -76,6 +76,12 @@ parameters:
     description: Firewall driver for realizing neutron security group function
     type: string
     default: 'openvswitch'
+  NeutronOverlayIPVersion:
+    default: 4
+    description: IP version used for all overlay network endpoints.
+    type: number
+    constraints:
+    - allowed_values: [4,6]
 resources:
 
   NeutronBase:
@@ -105,6 +111,7 @@ outputs:
             neutron::plugins::ml2::vni_ranges: {get_param: NeutronVniRanges}
             neutron::plugins::ml2::tenant_network_types: {get_param: NeutronNetworkType}
             neutron::plugins::ml2::firewall_driver: {get_param: NeutronFirewallDriver}
+            neutron::plugins::ml2::overlay_ip_version: {get_param: NeutronOverlayIPVersion}
 
       step_config: |
         include ::tripleo::profile::base::neutron::plugins::ml2
diff --git a/releasenotes/notes/neutron-ml2-overlay-ip-version-4f14932355847aa0.yaml b/releasenotes/notes/neutron-ml2-overlay-ip-version-4f14932355847aa0.yaml
new file mode 100644 (file)
index 0000000..1c20b26
--- /dev/null
@@ -0,0 +1,5 @@
+---
+features:
+  - Add NeutronOverlayIPVersion parameter to congfigure neutron ML2
+    overlay_ip_version option. This parameter should be set to 6 when user
+    requires tenant vxlan tunnel endpoints to be IPv6.
index 876dd85..f146939 100755 (executable)
@@ -50,7 +50,7 @@ _PRIVATE_OVERRIDES = ['server', 'servers', 'NodeIndex', 'DefaultPasswords']
 # static.  This allows us to generate sample environments using them when
 # necessary, but they won't be improperly included by accident.
 _HIDDEN_PARAMS = ['EndpointMap', 'RoleName', 'RoleParameters',
-                  'ServiceNetMap',
+                  'ServiceNetMap', 'ServiceData',
                   ]