summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRicardo Noriega <rnoriega@redhat.com>2018-08-23 19:10:01 +0200
committerTim Rozet <trozet@redhat.com>2018-08-23 14:09:59 -0400
commitdc83fb1667a1a65ad333a3aab1c2843601180b23 (patch)
tree179489f3a5fe4a2b7538fd2ed99976375c26b7ad
parent85a3c2e347c1555bf589a7574abd0b651196952f (diff)
Recover fix to install custom OVS
Need this fix to make VLAN tenant networks to work. Change-Id: Ie2dea9f0145c576e1b36280e6340ed2cc0460179 Signed-off-by: Ricardo Noriega <rnoriega@redhat.com>
-rw-r--r--apex/common/constants.py3
-rw-r--r--apex/overcloud/deploy.py13
-rw-r--r--apex/tests/test_apex_overcloud_deploy.py51
3 files changed, 47 insertions, 20 deletions
diff --git a/apex/common/constants.py b/apex/common/constants.py
index e9c99a3..0d71e6e 100644
--- a/apex/common/constants.py
+++ b/apex/common/constants.py
@@ -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"
diff --git a/apex/overcloud/deploy.py b/apex/overcloud/deploy.py
index fcd7f0f..6e1d5bb 100644
--- a/apex/overcloud/deploy.py
+++ b/apex/overcloud/deploy.py
@@ -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
diff --git a/apex/tests/test_apex_overcloud_deploy.py b/apex/tests/test_apex_overcloud_deploy.py
index 71ef80b..a70057b 100644
--- a/apex/tests/test_apex_overcloud_deploy.py
+++ b/apex/tests/test_apex_overcloud_deploy.py
@@ -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,