From 26e0ce7702fe0b5379b181ad8726dc1f0d2bdbb2 Mon Sep 17 00:00:00 2001
From: rabi <ramishra@redhat.com>
Date: Tue, 24 Jul 2018 15:51:27 +0530
Subject: [PATCH] Add support for containerized networking-ansible ML2 plugin

Co-Authored-By: Derek Higgins <derekh@redhat.com>
Change-Id: I8500de7ec71a8efa567a0b3aa29725ef235795bc
---
 .../services/neutron-plugin-ml2-ansible.yaml  | 71 +++++++++++++++++++
 environments/neutron-ml2-ansible.yaml         |  2 +-
 .../services/neutron-ml2-ansible.yaml         |  7 ++
 overcloud-resource-registry-puppet.j2.yaml    |  2 +-
 ...nsible-containerized-de68f6c2fd6e05fc.yaml |  3 +
 5 files changed, 83 insertions(+), 2 deletions(-)
 create mode 100644 docker/services/neutron-plugin-ml2-ansible.yaml
 create mode 100644 environments/services/neutron-ml2-ansible.yaml
 create mode 100644 releasenotes/notes/add-networking-ansible-containerized-de68f6c2fd6e05fc.yaml

diff --git a/docker/services/neutron-plugin-ml2-ansible.yaml b/docker/services/neutron-plugin-ml2-ansible.yaml
new file mode 100644
index 0000000000..af211a5410
--- /dev/null
+++ b/docker/services/neutron-plugin-ml2-ansible.yaml
@@ -0,0 +1,71 @@
+heat_template_version: rocky
+
+description: >
+  Neutron ML2 networking-ansible Plugin (Docker)
+
+parameters:
+  ML2HostConfigs:
+    description: ML2 config for switches
+    default: {}
+    type: json
+  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
+resources:
+
+  NeutronML2AnsibleBase:
+    type: ../../puppet/services/neutron-plugin-ml2-ansible.yaml
+    properties:
+      ML2HostConfigs: {get_param: ML2HostConfigs}
+      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 ML2 ansible Plugin role.
+    value:
+      service_name: {get_attr: [NeutronML2AnsibleBase, role_data, service_name]}
+      config_settings: {get_attr: [NeutronML2AnsibleBase, role_data, config_settings]}
+      logging_source: {get_attr: [NeutronML2AnsibleBase, role_data, logging_source]}
+      logging_groups: {get_attr: [NeutronML2AnsibleBase, role_data, logging_groups]}
+      service_config_settings: {get_attr: [NeutronML2AnsibleBase, role_data, service_config_settings]}
+      metadata_settings:
+        get_attr: [NeutronML2AnsibleBase, role_data, metadata_settings]
+      # BEGIN DOCKER SETTINGS
+      puppet_config:
+        config_volume: 'neutron'
+        puppet_tags: neutron_plugin_ml2
+        step_config:
+          get_attr: [NeutronML2AnsibleBase, role_data, step_config]
+        config_image: {get_param: DockerNeutronConfigImage}
+      kolla_config: {}
+      docker_config: {}
diff --git a/environments/neutron-ml2-ansible.yaml b/environments/neutron-ml2-ansible.yaml
index 321e1627f3..57de0a869c 100644
--- a/environments/neutron-ml2-ansible.yaml
+++ b/environments/neutron-ml2-ansible.yaml
@@ -1,6 +1,6 @@
 # A Heat environment file which can be used to enable network-ansible ML2 mechanism driver
 resource_registry:
-  OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2Ansible
+  OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/neutron-plugin-ml2-ansible.yaml
 
 parameter_defaults:
   NeutronMechanismDrivers: openvswitch,ansible
diff --git a/environments/services/neutron-ml2-ansible.yaml b/environments/services/neutron-ml2-ansible.yaml
new file mode 100644
index 0000000000..0f91faa121
--- /dev/null
+++ b/environments/services/neutron-ml2-ansible.yaml
@@ -0,0 +1,7 @@
+# A Heat environment file which can be used to enable network-ansible ML2 mechanism driver
+resource_registry:
+  OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginML2Ansible
+parameter_defaults:
+  NeutronMechanismDrivers: openvswitch,ansible
+  NeutronTypeDrivers: local,vlan,flat
+  NeutronNetworkType: vlan
diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml
index fc6f44b557..e713ce05e3 100644
--- a/overcloud-resource-registry-puppet.j2.yaml
+++ b/overcloud-resource-registry-puppet.j2.yaml
@@ -164,7 +164,7 @@ resource_registry:
   OS::TripleO::Services::NeutronCorePluginMLNXSDN: puppet/services/neutron-plugin-ml2-mlnx-sdn-assist.yaml
   OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml
   OS::TripleO::Services::NeutronCorePluginVTS: docker/services/neutron-plugin-ml2-cisco-vts.yaml
-  OS::TripleO::Services::NeutronCorePluginML2Ansible: puppet/services/neutron-plugin-ml2-ansible.yaml
+  OS::TripleO::Services::NeutronCorePluginML2Ansible: docker/services/neutron-plugin-ml2-ansible.yaml
   OS::TripleO::Services::NeutronOvsAgent: docker/services/neutron-ovs-agent.yaml
   OS::TripleO::Services::NeutronLinuxbridgeAgent: OS::Heat::None
   OS::TripleO::Services::ComputeNeutronOvsAgent: docker/services/neutron-ovs-agent.yaml
diff --git a/releasenotes/notes/add-networking-ansible-containerized-de68f6c2fd6e05fc.yaml b/releasenotes/notes/add-networking-ansible-containerized-de68f6c2fd6e05fc.yaml
new file mode 100644
index 0000000000..a35c68d71c
--- /dev/null
+++ b/releasenotes/notes/add-networking-ansible-containerized-de68f6c2fd6e05fc.yaml
@@ -0,0 +1,3 @@
+---
+features:
+  - Added support for containerized networking-ansible Ml2 plugin.