Recover fix to install custom OVS 01/61301/3
authorRicardo Noriega <rnoriega@redhat.com>
Thu, 23 Aug 2018 17:10:01 +0000 (19:10 +0200)
committerTim Rozet <trozet@redhat.com>
Thu, 23 Aug 2018 18:09:59 +0000 (14:09 -0400)
  Need this fix to make VLAN tenant networks
  to work.

Change-Id: Ie2dea9f0145c576e1b36280e6340ed2cc0460179
Signed-off-by: Ricardo Noriega <rnoriega@redhat.com>
apex/common/constants.py
apex/overcloud/deploy.py
apex/tests/test_apex_overcloud_deploy.py

index e9c99a3..0d71e6e 100644 (file)
@@ -70,6 +70,9 @@ VALID_DOCKER_SERVICES = {
 DOCKERHUB_OOO = 'https://registry.hub.docker.com/v2/repositories' \
                 '/tripleomaster/'
 KUBESPRAY_URL = 'https://github.com/kubernetes-incubator/kubespray.git'
+OPNFV_ARTIFACTS = 'http://artifacts.opnfv.org'
+CUSTOM_OVS = '{}/apex/random/openvswitch-2.9.0-9.el7fdn.x86_64.' \
+             'rpm'.format(OPNFV_ARTIFACTS)
 
 QUAGGA_URL = "http://artifacts.opnfv.org/sdnvpn/quagga/quagga-4.tar.gz"
 
index fcd7f0f..6e1d5bb 100644 (file)
@@ -360,6 +360,19 @@ def prep_image(ds, ns, img, tmp_dir, root_pw=None, docker_tag=None,
     if dataplane == 'ovs':
         if ds_opts['sfc']:
             oc_builder.inject_ovs_nsh(tmp_oc_image, tmp_dir)
+        elif sdn == 'opendaylight':
+            # FIXME(trozet) remove this after RDO is updated with fix for
+            # https://bugzilla.redhat.com/show_bug.cgi?id=1544892
+            ovs_file = os.path.basename(con.CUSTOM_OVS)
+            ovs_url = con.CUSTOM_OVS.replace(ovs_file, '')
+            utils.fetch_upstream_and_unpack(dest=tmp_dir, url=ovs_url,
+                                            targets=[ovs_file])
+            virt_cmds.extend([
+                {con.VIRT_UPLOAD: "{}:/root/".format(os.path.join(tmp_dir,
+                                                                  ovs_file))},
+                {con.VIRT_RUN_CMD: "yum downgrade -y /root/{}".format(
+                    ovs_file)}
+            ])
 
     if dataplane == 'fdio':
         # Patch neutron with using OVS external interface for router
index 71ef80b..a70057b 100644 (file)
@@ -197,10 +197,11 @@ class TestOvercloudDeploy(unittest.TestCase):
     @patch('apex.builders.overcloud_builder.inject_opendaylight')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image(self, mock_os_path, mock_shutil, mock_virt_utils,
+    def test_prep_image(self, mock_is_file, mock_shutil, mock_virt_utils,
                         mock_inject_odl):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'fdio',
                    'sdn_controller': 'opendaylight',
                    'odl_version': 'master',
@@ -217,10 +218,11 @@ class TestOvercloudDeploy(unittest.TestCase):
 
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image_sdn_false(self, mock_os_path, mock_shutil,
+    def test_prep_image_sdn_false(self, mock_is_file, mock_shutil,
                                   mock_virt_utils):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'fdio',
                    'vpn': False,
                    'sdn_controller': False}
@@ -232,13 +234,15 @@ class TestOvercloudDeploy(unittest.TestCase):
         prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
+    @patch('apex.overcloud.deploy.utils.fetch_upstream_and_unpack')
     @patch('apex.builders.overcloud_builder.inject_opendaylight')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image_sdn_odl(self, mock_os_path, mock_shutil,
-                                mock_virt_utils, mock_inject_odl):
+    def test_prep_image_sdn_odl(self, mock_is_file, mock_shutil,
+                                mock_virt_utils, mock_inject_odl, mock_fetch):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'sdn_controller': 'opendaylight',
                    'vpn': False,
@@ -260,11 +264,12 @@ class TestOvercloudDeploy(unittest.TestCase):
     @patch('apex.overcloud.deploy.oc_builder')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
     def test_prep_image_sdn_odl_upstream_containers_patches(
-            self, mock_os_path, mock_shutil, mock_virt_utils,
+            self, mock_is_file, mock_shutil, mock_virt_utils,
             mock_oc_builder, mock_c_builder):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'sdn_controller': 'opendaylight',
                    'odl_version': con.DEFAULT_ODL_VERSION,
@@ -289,11 +294,12 @@ class TestOvercloudDeploy(unittest.TestCase):
     @patch('apex.overcloud.deploy.oc_builder')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
     def test_prep_image_nosdn_upstream_containers_patches(
-            self, mock_os_path, mock_shutil, mock_virt_utils,
+            self, mock_is_file, mock_shutil, mock_virt_utils,
             mock_oc_builder, mock_c_builder):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'sdn_controller': False,
                    'odl_version': con.DEFAULT_ODL_VERSION,
@@ -316,11 +322,12 @@ class TestOvercloudDeploy(unittest.TestCase):
     @patch('apex.overcloud.deploy.oc_builder')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image_sdn_odl_not_def(self, mock_os_path,
+    def test_prep_image_sdn_odl_not_def(self, mock_is_file,
                                         mock_shutil, mock_virt_utils,
                                         mock_oc_builder):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'sdn_controller': 'opendaylight',
                    'odl_version': 'uncommon'}
@@ -335,10 +342,11 @@ class TestOvercloudDeploy(unittest.TestCase):
 
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image_sdn_ovn(self, mock_os_path, mock_shutil,
+    def test_prep_image_sdn_ovn(self, mock_is_file, mock_shutil,
                                 mock_virt_utils):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'vpn': False,
                    'sfc': False,
@@ -351,15 +359,17 @@ class TestOvercloudDeploy(unittest.TestCase):
         prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test')
         mock_virt_utils.virt_customize.assert_called()
 
+    @patch('apex.overcloud.deploy.utils.fetch_upstream_and_unpack')
     @patch('apex.builders.overcloud_builder.inject_quagga')
     @patch('apex.builders.overcloud_builder.inject_opendaylight')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
-    @patch('apex.overcloud.deploy.os.path')
+    @patch('apex.overcloud.deploy.os.path.isfile')
     @patch('builtins.open', mock_open())
-    def test_prep_image_sdn_odl_vpn(self, mock_os_path, mock_shutil,
+    def test_prep_image_sdn_odl_vpn(self, mock_is_file, mock_shutil,
                                     mock_virt_utils, mock_inject_odl,
-                                    mock_inject_quagga):
+                                    mock_inject_quagga, mock_fetch):
+        mock_is_file.return_value = True
         ds_opts = {'dataplane': 'ovs',
                    'sdn_controller': 'opendaylight',
                    'vpn': True,
@@ -382,11 +392,12 @@ class TestOvercloudDeploy(unittest.TestCase):
         @patch('apex.builders.overcloud_builder.inject_opendaylight')
         @patch('apex.overcloud.deploy.virt_utils')
         @patch('apex.overcloud.deploy.shutil')
-        @patch('apex.overcloud.deploy.os.path')
+        @patch('apex.overcloud.deploy.os.path.isfile')
         @patch('builtins.open', mock_open())
-        def test_prep_image_sdn_odl_sfc(self, mock_os_path, mock_shutil,
+        def test_prep_image_sdn_odl_sfc(self, mock_is_file, mock_shutil,
                                         mock_virt_utils, mock_inject_odl,
                                         mock_inject_ovs_nsh):
+            mock_is_file.return_value = True
             ds_opts = {'dataplane': 'ovs',
                        'sdn_controller': 'opendaylight',
                        'vpn': False,