Add ML2/OVN support for neutron profile
authorBabu Shanmugam <bschanmu@redhat.com>
Wed, 11 May 2016 06:17:50 +0000 (06:17 +0000)
committerBabu Shanmugam <bschanmu@redhat.com>
Mon, 29 Aug 2016 13:18:40 +0000 (13:18 +0000)
Partially-Implements: blueprint refactor-puppet-manifests
Depends-on: https://review.openstack.org/#/c/340343

Add OVN plugin for non-ha profiles of neutron

Change-Id: I3850a8b5584eaf14a656b547f6a47008a2d1289e

manifests/profile/base/neutron/agents/ovn.pp [new file with mode: 0644]
manifests/profile/base/neutron/plugins/ml2.pp
manifests/profile/base/neutron/plugins/ml2/ovn.pp [new file with mode: 0644]

diff --git a/manifests/profile/base/neutron/agents/ovn.pp b/manifests/profile/base/neutron/agents/ovn.pp
new file mode 100644 (file)
index 0000000..443b164
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::neutron::agents::ovn
+#
+# OVN Neutron agent profile for tripleo
+#
+# [*ovn_db_host*]
+#   The IP-Address/Hostname where OVN DBs are deployed
+#
+# [*step*]
+#   (Optional) The current step in deployment. See tripleo-heat-templates
+#   for more details.
+#   Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::agents::ovn (
+  $ovn_db_host,
+  $step = hiera('step')
+) {
+  if $step >= 4 {
+    $ovn_sbdb_port = hiera('ovn::southbound::port')
+    class { '::ovn::controller':
+      ovn_remote     => "tcp:${ovn_db_host}:${ovn_sbdb_port}",
+      ovn_encap_type => hiera('ovn::southboud::encap_type')
+    }
+  }
+}
index 401e627..4f4de0b 100644 (file)
@@ -68,5 +68,8 @@ class tripleo::profile::base::neutron::plugins::ml2 (
       include ::tripleo::profile::base::neutron::plugins::ml2::opendaylight
     }
 
+    if 'ovn' in $mechanism_drivers {
+      include ::tripleo::profile::base::neutron::plugins::ml2::ovn
+    }
   }
 }
diff --git a/manifests/profile/base/neutron/plugins/ml2/ovn.pp b/manifests/profile/base/neutron/plugins/ml2/ovn.pp
new file mode 100644 (file)
index 0000000..46477a7
--- /dev/null
@@ -0,0 +1,46 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::neutron::plugins::ml2::ovn
+#
+# OVN Neutron ML2 profile for tripleo
+#
+# [*ovn_db_host*]
+#   The IP-Address/Hostname where OVN DBs are deployed
+#
+# [*step*]
+#   (Optional) The current step in deployment. See tripleo-heat-templates
+#   for more details.
+#   Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::plugins::ml2::ovn (
+  $ovn_db_host,
+  $step = hiera('step')
+) {
+  if $step >= 4 {
+    if $::hostname == $ovn_db_host {
+      # NOTE: we might split northd from plugin later, in the case of
+      # micro-services, where neutron-server & northd are not in the same
+      # containers
+      include ::ovn::northd
+    }
+    $ovn_nb_port = hiera('ovn::northbound::port')
+    $ovn_sb_port = hiera('ovn::southbound::port')
+    class { '::neutron::plugins::ml2::ovn':
+      ovn_nb_connection => "tcp:${ovn_db_host}:${ovn_nb_port}",
+      ovn_sb_connection => "tcp:${ovn_db_host}:${ovn_sb_port}",
+    }
+  }
+}
+