Disables port status updates with ODL in HA
authorTim Rozet <trozet@redhat.com>
Wed, 20 Sep 2017 19:49:50 +0000 (15:49 -0400)
committerTim Rozet <trozet@redhat.com>
Thu, 28 Sep 2017 02:53:15 +0000 (02:53 +0000)
ODL enables a feature by default to communicate port state to Neutron
via a websocket connection.  The current implementation does not work in
HA, but does work with a noHA deployment.  Therefore this patch disables
port status for HA deployments only until there is proper support.

Depends-On: I7eb752ad692e5522051f8393376890fcac9a09fe

Closes-Bug: 1718508

Change-Id: I13b5b72285d3c70cdee4d81678470d52be385aaf
Signed-off-by: Tim Rozet <trozet@redhat.com>
(cherry picked from commit 228d7b456c6d5c4958c9add8f9021a83a4360510)

manifests/profile/base/neutron/plugins/ml2/opendaylight.pp
releasenotes/notes/disable-opendaylight-ha-port-status-0a97e10e6456661c.yaml [new file with mode: 0644]

index bffcb39..c98f555 100644 (file)
 #   (Optional) Virtual IP address for ODL Api Service
 #   Defaults to hiera('opendaylight_api_vip')
 #
+# [*odl_api_ips*]
+#   (Optional) List of OpenStack Controller IPs for ODL API
+#   Defaults to hiera('opendaylight_api_node_ips')
+#
 # [*conn_proto*]
 #   (Optional) Protocol to use to for ODL REST access
 #   Defaults to hiera('opendaylight::nb_connection_protocol')
@@ -48,6 +52,7 @@ class tripleo::profile::base::neutron::plugins::ml2::opendaylight (
   $odl_username = hiera('opendaylight::username'),
   $odl_password = hiera('opendaylight::password'),
   $odl_url_ip   = hiera('opendaylight_api_vip'),
+  $odl_api_ips  = hiera('opendaylight_api_node_ips'),
   $conn_proto   = hiera('opendaylight::nb_connection_protocol'),
   $step         = Integer(hiera('step')),
 ) {
@@ -55,10 +60,24 @@ class tripleo::profile::base::neutron::plugins::ml2::opendaylight (
   if $step >= 4 {
     if ! $odl_url_ip { fail('OpenDaylight API VIP is Empty') }
 
+    $ml2_odl_params = {
+      'odl_username' => $odl_username,
+      'odl_password' => $odl_password,
+      'odl_url'      => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron",
+    }
+
+    validate_array($odl_api_ips)
+    if size($odl_api_ips) > 2 {
+      $odl_features = 'False'
+    } else {
+      $odl_features = $::os_service_default
+    }
+
     class { '::neutron::plugins::ml2::opendaylight':
       odl_username => $odl_username,
       odl_password => $odl_password,
-      odl_url      => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron";
+      odl_url      => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron",
+      odl_features => $odl_features;
     }
   }
 }
diff --git a/releasenotes/notes/disable-opendaylight-ha-port-status-0a97e10e6456661c.yaml b/releasenotes/notes/disable-opendaylight-ha-port-status-0a97e10e6456661c.yaml
new file mode 100644 (file)
index 0000000..9206b0d
--- /dev/null
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Disables port status feature with OpenDaylight when deployed as HA until
+    it can be properly supported in an HA environment.