From ecb0296ad276418df3c742bdeb14b0698fbfa475 Mon Sep 17 00:00:00 2001
From: Deepika Khairnar <dkhairnar@vmware.com>
Date: Tue, 25 Sep 2018 12:27:13 +0000
Subject: [PATCH] Add config files/templates to integrate nsx plugin with
 container

Change-Id: I321d578a5947cbc69327841973924ef6cf4e4d5d
---
 docker/services/neutron-plugin-nsx.yaml       | 71 +++++++++++++++++++
 environments/neutron-nsx.yaml                 |  2 +
 environments/nsx-config.yaml                  | 22 ++++++
 .../services/neutron-nsx-lbaasv2.yaml         |  6 ++
 overcloud-resource-registry-puppet.j2.yaml    |  2 +-
 5 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 docker/services/neutron-plugin-nsx.yaml
 create mode 100644 environments/nsx-config.yaml
 create mode 100644 environments/services/neutron-nsx-lbaasv2.yaml

diff --git a/docker/services/neutron-plugin-nsx.yaml b/docker/services/neutron-plugin-nsx.yaml
new file mode 100644
index 0000000000..d6a87f2ce7
--- /dev/null
+++ b/docker/services/neutron-plugin-nsx.yaml
@@ -0,0 +1,71 @@
+heat_template_version: rocky
+
+description: >
+  OpenStack containerized Neutron NSX Plugin configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  ServiceData:
+    default: {}
+    description: Dictionary packing service data
+    type: json
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DockerNeutronConfigImage:
+    description: The container image to use for the neutron config_volume
+    type: string
+  DefaultPasswords:
+    type: json
+  RoleName:
+    default: ''
+    description: Role name on which the service is applied
+    type: string
+  RoleParameters:
+    default: {}
+    description: Parameters specific to the role
+    type: json
+  NeutronPluginNsxPuppetTags:
+    default: 'neutron_plugin_nsx'
+    description: Puppet resource tag names that are used to generate config files with puppet
+    type: string
+
+resources:
+
+  NeutronBase:
+    type: ../../puppet/services/neutron-plugin-nsx.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron NSX Plugin role.
+    value:
+      service_name: {get_attr: [NeutronBase, role_data, service_name]}
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronBase, role_data, config_settings]
+      service_config_settings: {get_attr: [NeutronBase, role_data, service_config_settings]}
+      metadata_settings:
+        get_attr: [NeutronBase, role_data, metadata_settings]
+      # BEGIN DOCKER SETTINGS
+      puppet_config:
+        config_volume: 'neutron'
+        puppet_tags: {get_param: NeutronPluginNsxPuppetTags}
+        step_config:
+          get_attr: [NeutronBase, role_data, step_config]
+        config_image: {get_param: DockerNeutronConfigImage}
+      kolla_config: {}
+      docker_config: {}
diff --git a/environments/neutron-nsx.yaml b/environments/neutron-nsx.yaml
index eb1dcec6e1..cd4835fb9d 100644
--- a/environments/neutron-nsx.yaml
+++ b/environments/neutron-nsx.yaml
@@ -13,3 +13,5 @@ resource_registry:
 
 parameter_defaults:
   NeutronCorePlugin: vmware_nsx.plugin.NsxV3Plugin
+  DhcpAgentNotification: false
+  NeutronServicePlugins: 'qos,neutron_lbaas.services.loadbalancer.plugin.LoadBalancerPluginv2'
diff --git a/environments/nsx-config.yaml b/environments/nsx-config.yaml
new file mode 100644
index 0000000000..c14a8994e7
--- /dev/null
+++ b/environments/nsx-config.yaml
@@ -0,0 +1,22 @@
+resource_registry:
+ OS::TripleO::Services::NeutronCorePluginNSX: /usr/share/openstack-tripleo-heat-templates/docker/services/neutron-plugin-nsx.yaml
+
+parameter_defaults:
+ # Default overlay tz uuid
+ DefaultOverlayTz: ''
+
+ DefaultVlanTz: ''
+ # Default tier0 router uuid
+ DefaultTier0Router: ''
+ # NSX API managers
+ NsxApiManagers: ''
+ # NSX API user
+ NsxApiUser: ''
+ # NSX API password
+ NsxApiPassword: ''
+ # Enable native DHCP and Metadata
+ NativeDhcpMetadata: True
+ # Default DHCP profile uuid
+ DhcpProfile: ''
+ # Default Metadata Proxy uuid
+ MetadataProxy: ''
diff --git a/environments/services/neutron-nsx-lbaasv2.yaml b/environments/services/neutron-nsx-lbaasv2.yaml
new file mode 100644
index 0000000000..72dc7d754b
--- /dev/null
+++ b/environments/services/neutron-nsx-lbaasv2.yaml
@@ -0,0 +1,6 @@
+# A Heat environment file that can be used to deploy Neutron LBaaSv2 service
+resource_registry:
+  OS::TripleO::Services::NeutronLbaasv2Api: ../../docker/services/neutron-lbaas-api.yaml
+
+parameter_defaults:
+  NeutronServiceProviders: ['LOADBALANCERV2:VMWareEdge:neutron_lbaas.drivers.vmware.edge_driver_v2.EdgeLoadBalancerDriverV2:default']
diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml
index 99bd7e6bf9..057f373283 100644
--- a/overcloud-resource-registry-puppet.j2.yaml
+++ b/overcloud-resource-registry-puppet.j2.yaml
@@ -157,7 +157,7 @@ resource_registry:
   OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml
   OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
   OS::TripleO::Services::NeutronCorePluginML2Nuage: puppet/services/neutron-plugin-ml2-nuage.yaml
-  OS::TripleO::Services::NeutronCorePluginNSX: puppet/services/neutron-plugin-nsx.yaml
+  OS::TripleO::Services::NeutronCorePluginNSX: docker/services/neutron-plugin-nsx.yaml
   OS::TripleO::Services::OVNDBs: OS::Heat::None
   OS::TripleO::Services::OVNController: OS::Heat::None