[odl] Setup manager target after ovs host config 47/54547/2
authorMichael Polenchuk <mpolenchuk@mirantis.com>
Wed, 28 Mar 2018 09:50:33 +0000 (13:50 +0400)
committerMichael Polenchuk <mpolenchuk@mirantis.com>
Wed, 28 Mar 2018 11:50:31 +0000 (15:50 +0400)
Change-Id: Ia517b7cf1723a5afaf43cb0709716f3a67a29e9f
Signed-off-by: Michael Polenchuk <mpolenchuk@mirantis.com>
mcp/config/scenario/os-odl-nofeature-ha.yaml.j2
mcp/config/scenario/os-odl-nofeature-noha.yaml
mcp/config/states/opendaylight
mcp/patches/0001-Apply-opendaylight-client-state-on-compute-only.patch [deleted file]
mcp/patches/0001-Filter-out-OpenDaylight-client-on-computes.patch [new file with mode: 0644]
mcp/patches/patches.list
mcp/reclass/classes/cluster/mcp-pike-odl-noha/openstack/compute.yml

index 76b893e..0bd3a13 100644 (file)
@@ -23,8 +23,8 @@ cluster:
 {%- if conf.MCP_VCP %}
     - virtual_control_plane
 {%- endif %}
-    - openstack_ha
     - opendaylight
+    - openstack_ha
     - networks
 virtual:
   nodes:
index 96d4bcc..f52eaf5 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 2017 Mirantis Inc., Enea AB and others.
+# Copyright (c) 2018 Mirantis Inc., Enea AB and others.
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
@@ -9,9 +9,9 @@
 cluster:
   domain: mcp-pike-odl-noha.local
   states:
+    - opendaylight
     - openstack_noha
     - neutron_gateway
-    - opendaylight
     - networks
 virtual:
   nodes:
index 515420a..5bbf0d7 100755 (executable)
@@ -21,4 +21,4 @@ function odl() {
 salt -I 'opendaylight:server' service.mask opendaylight
 salt -I 'opendaylight:server' state.sls opendaylight
 
-wait_for 20 "salt --out yaml -C 'I@neutron:server and *01*' network.connect $(odl bind_ip) $(odl rest_port) | fgrep 'result: true'"
+wait_for 20 "salt --out yaml -C 'I@neutron:server and *01*' network.connect $(odl bind_ip) $(odl rest_port) | fgrep -q 'result: true'"
diff --git a/mcp/patches/0001-Apply-opendaylight-client-state-on-compute-only.patch b/mcp/patches/0001-Apply-opendaylight-client-state-on-compute-only.patch
deleted file mode 100644 (file)
index 4c1d2ce..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-: Copyright (c) 2018 Mirantis Inc., Enea AB and others.
-:
-: All rights reserved. This program and the accompanying materials
-: are made available under the terms of the Apache License, Version 2.0
-: which accompanies this distribution, and is available at
-: http://www.apache.org/licenses/LICENSE-2.0
-::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-From: Michael Polenchuk <mpolenchuk@mirantis.com>
-Date: Mon, 12 Mar 2018 16:32:50 +0400
-Subject: [PATCH] Apply opendaylight client state on compute only
-
-Change-Id: I07cd760fdb4ce84aba21450af9246c8c9128118f
-
-diff --git a/neutron/compute.sls b/neutron/compute.sls
-index 418282d..7ff136a 100644
---- a/neutron/compute.sls
-+++ b/neutron/compute.sls
-@@ -2,6 +2,10 @@
- {%- if compute.enabled %}
-
- {% if compute.backend.engine == "ml2" %}
-+{%- if compute.opendaylight is defined %}
-+include:
-+  - .opendaylight.client
-+{%- else %}
- neutron_compute_packages:
-   pkg.installed:
-   - names: {{ compute.pkgs }}
-@@ -243,9 +247,6 @@ rabbitmq_ca_neutron_compute:
- {%- endif %}
- {%- endif %}
-
--{%- if compute.opendaylight is defined %}
--include:
--  - .opendaylight.client
- {%- endif %}
-
- {%- elif compute.backend.engine == "ovn" %}
diff --git a/mcp/patches/0001-Filter-out-OpenDaylight-client-on-computes.patch b/mcp/patches/0001-Filter-out-OpenDaylight-client-on-computes.patch
new file mode 100644 (file)
index 0000000..be8ba1e
--- /dev/null
@@ -0,0 +1,145 @@
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+: Copyright (c) 2018 Mirantis Inc., Enea AB and others.
+:
+: All rights reserved. This program and the accompanying materials
+: are made available under the terms of the Apache License, Version 2.0
+: which accompanies this distribution, and is available at
+: http://www.apache.org/licenses/LICENSE-2.0
+::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+From: Michael Polenchuk <mpolenchuk@mirantis.com>
+Date: Mon, 12 Mar 2018 16:32:50 +0400
+Subject: [PATCH] Filter out OpenDaylight client on computes
+
+OpenDaylight uses pseudo agents to manage network ports,
+therefore detach unwanted ovs agent & etc. from compute state.
+Also swap the set-manager target with tunnel_ip/provider_mappings
+settings since ovs host config should be in place before manager setup.
+
+Change-Id: I07cd760fdb4ce84aba21450af9246c8c9128118f
+
+diff --git a/neutron/compute.sls b/neutron/compute.sls
+index 418282d..e83a5b7 100644
+--- a/neutron/compute.sls
++++ b/neutron/compute.sls
+@@ -2,6 +2,36 @@
+ {%- if compute.enabled %}
+
+ {% if compute.backend.engine == "ml2" %}
++
++{% if compute.get('dhcp_agent_enabled', False) %}
++neutron_dhcp_agent_packages:
++  pkg.installed:
++  - names:
++    - neutron-dhcp-agent
++
++neutron_dhcp_agent:
++  service.running:
++    - enable: true
++    - names:
++      - neutron-dhcp-agent
++    - watch:
++      - file: /etc/neutron/dhcp_agent.ini
++    - require:
++      - pkg: neutron_dhcp_agent_packages
++
++/etc/neutron/dhcp_agent.ini:
++  file.managed:
++  - source: salt://neutron/files/{{ compute.version }}/dhcp_agent.ini
++  - template: jinja
++  - require:
++    - pkg: neutron_dhcp_agent_packages
++
++{% endif %}
++
++{%- if compute.opendaylight is defined %}
++include:
++  - .opendaylight.client
++{%- else %}
+ neutron_compute_packages:
+   pkg.installed:
+   - names: {{ compute.pkgs }}
+@@ -53,31 +83,6 @@ neutron_sriov_service:
+
+ {% endif %}
+
+-{% if compute.get('dhcp_agent_enabled', False) %}
+-neutron_dhcp_agent_packages:
+-  pkg.installed:
+-  - names:
+-    - neutron-dhcp-agent
+-
+-neutron_dhcp_agent:
+-  service.running:
+-    - enable: true
+-    - names:
+-      - neutron-dhcp-agent
+-    - watch:
+-      - file: /etc/neutron/dhcp_agent.ini
+-    - require:
+-      - pkg: neutron_dhcp_agent_packages
+-
+-/etc/neutron/dhcp_agent.ini:
+-  file.managed:
+-  - source: salt://neutron/files/{{ compute.version }}/dhcp_agent.ini
+-  - template: jinja
+-  - require:
+-    - pkg: neutron_dhcp_agent_packages
+-
+-{% endif %}
+-
+ {% if compute.dvr %}
+
+ {%- if fwaas.get('enabled', False) %}
+@@ -243,10 +248,7 @@ rabbitmq_ca_neutron_compute:
+ {%- endif %}
+ {%- endif %}
+
+-{%- if compute.opendaylight is defined %}
+-include:
+-  - .opendaylight.client
+-{%- endif %}
++{%- endif %}{# !OpenDaylight #}
+
+ {%- elif compute.backend.engine == "ovn" %}
+
+diff --git a/neutron/opendaylight/client.sls b/neutron/opendaylight/client.sls
+index 57e6bcc..79ab0a2 100644
+--- a/neutron/opendaylight/client.sls
++++ b/neutron/opendaylight/client.sls
+@@ -9,27 +9,27 @@ python-networking-odl:
+
+ {%- if not grains.get('noservices', False) %}
+
+-ovs_set_manager:
++neutron_odl_ovs_hostconfig:
+   cmd.run:
+-  - name: 'ovs-vsctl set-manager {{ neutron.opendaylight.ovsdb_server_iface }} {{ neutron.opendaylight.ovsdb_odl_iface }}'
+-  - unless: 'ovs-vsctl get-manager | fgrep -x {{ neutron.opendaylight.ovsdb_odl_iface }}'
++  - name: 'neutron-odl-ovs-hostconfig --noovs_dpdk'
++  - require:
++    - pkg: python-networking-odl
+
+ ovs_set_tunnel_endpoint:
+   cmd.run:
+   - name: 'ovs-vsctl set Open_vSwitch . other_config:local_ip={{ neutron.opendaylight.tunnel_ip }}'
+-  - unless: 'ovs-vsctl get Open_vSwitch . other_config | fgrep local_ip="{{ neutron.opendaylight.tunnel_ip }}"'
++  - unless: 'ovs-vsctl get Open_vSwitch . other_config | fgrep -q local_ip=\"{{ neutron.opendaylight.tunnel_ip }}\"'
+
+ {%- if neutron.opendaylight.provider_mappings is defined %}
+ ovs_set_provider_mappings:
+   cmd.run:
+   - name: 'ovs-vsctl set Open_vSwitch . other_config:provider_mappings={{ neutron.opendaylight.provider_mappings }}'
+-  - unless: 'ovs-vsctl get Open_vSwitch . other_config | fgrep provider_mappings="{{ neutron.opendaylight.provider_mappings }}"'
++  - unless: 'ovs-vsctl get Open_vSwitch . other_config | fgrep -q provider_mappings=\"{{ neutron.opendaylight.provider_mappings }}\"'
+ {%- endif %}
+
+-neutron_odl_ovs_hostconfig:
++ovs_set_manager:
+   cmd.run:
+-  - name: 'neutron-odl-ovs-hostconfig --noovs_dpdk'
+-  - require:
+-    - pkg: python-networking-odl
++  - name: 'ovs-vsctl set-manager {{ neutron.opendaylight.ovsdb_server_iface }} {{ neutron.opendaylight.ovsdb_odl_iface }}'
++  - unless: 'ovs-vsctl get-manager | fgrep -qx {{ neutron.opendaylight.ovsdb_odl_iface }}'
+
+ {%- endif %}
index 711b0f3..b650ec8 100644 (file)
@@ -5,7 +5,7 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
-/usr/share/salt-formulas/env: 0001-Apply-opendaylight-client-state-on-compute-only.patch
+/usr/share/salt-formulas/env: 0001-Filter-out-OpenDaylight-client-on-computes.patch
 /usr/share/salt-formulas/env: 0002-maas-region-skip-credentials-update.patch
 /usr/share/salt-formulas/env: 0003-maas-region-force-artifact-download.patch
 /usr/share/salt-formulas/env: 0004-network.dpdk-Move-ifcfg-br-prv-to-interfaces.u.patch
index e7e06a6..b069016 100644 (file)
@@ -14,17 +14,13 @@ classes:
 parameters:
   linux:
     network:
-      gateway: ${_param:openstack_gateway_address}
       interface:
         external_interface:
           enabled: true
+          type: eth
           name: ${_param:external_interface}
           mtu: ${_param:interface_mtu}
           proto: manual
-          ovs_port_type: OVSPort
-          type: ovs_port
-          ovs_bridge: br-floating
-          bridge: br-floating
         br-mesh:
           enabled: true
           type: bridge
@@ -37,6 +33,18 @@ parameters:
           enabled: true
           type: ovs_bridge
           mtu: ${_param:interface_mtu}
-          proto: static
+        float-to-ex:
+          enabled: true
+          type: ovs_port
+          mtu: ${_param:interface_mtu}
+          bridge: br-floating
+        br-ex:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
           address: ${_param:external_address}
           netmask: ${_param:opnfv_net_public_mask}
+          use_interfaces:
+            - ${_param:external_interface}
+          use_ovs_ports:
+            - float-to-ex