summaryrefslogtreecommitdiffstats
path: root/apex
diff options
context:
space:
mode:
authorTim Rozet <trozet@redhat.com>2018-08-21 09:19:57 -0400
committerTim Rozet <trozet@redhat.com>2018-09-27 22:03:57 -0400
commitee58a24647df8eec2418735b038e5035bdffe10d (patch)
treee54a9a9293f94c1fc185d33554a3328068f23fae /apex
parent82bf9da27ea0c973068720d440e3391084e8a9d9 (diff)
Enable OVN scenarios
As of Queens only HA OVN deployments are supported. Change-Id: I184c5a096fec9cbc3cf2ec06218700138ea3ed57 Signed-off-by: Tim Rozet <trozet@redhat.com>
Diffstat (limited to 'apex')
-rw-r--r--apex/build_utils.py13
-rw-r--r--apex/builders/common_builder.py14
-rw-r--r--apex/common/constants.py2
-rw-r--r--apex/tests/test_apex_build_utils.py6
4 files changed, 32 insertions, 3 deletions
diff --git a/apex/build_utils.py b/apex/build_utils.py
index 78467875..7457e561 100644
--- a/apex/build_utils.py
+++ b/apex/build_utils.py
@@ -111,6 +111,19 @@ def strip_patch_sections(patch, sections=['releasenotes', 'tests']):
return '\n'.join(tmp_patch)
+def is_path_in_patch(patch, path):
+ """
+ Checks if a particular path is modified in a patch diff
+ :param patch: patch diff
+ :param path: path to check for in diff
+ :return: Boolean
+ """
+ for line in patch.split("\n"):
+ if re.match('^diff.*{}'.format(path), line):
+ return True
+ return False
+
+
def get_patch(change_id, repo, branch, url=con.OPENSTACK_GERRIT):
logging.info("Fetching patch for change id {}".format(change_id))
change = get_change(url, repo, branch, change_id)
diff --git a/apex/builders/common_builder.py b/apex/builders/common_builder.py
index a5f301b8..b8894ec1 100644
--- a/apex/builders/common_builder.py
+++ b/apex/builders/common_builder.py
@@ -25,10 +25,11 @@ from apex.common import utils
from apex.virtual import utils as virt_utils
-def project_to_path(project):
+def project_to_path(project, patch=None):
"""
Translates project to absolute file path to use in patching
:param project: name of project
+ :param patch: the patch to applied to the project
:return: File path
"""
if project.startswith('openstack/'):
@@ -37,6 +38,15 @@ def project_to_path(project):
return "/etc/puppet/modules/{}".format(project.replace('puppet-', ''))
elif 'tripleo-heat-templates' in project:
return "/usr/share/openstack-tripleo-heat-templates"
+ elif ('tripleo-common' in project and
+ build_utils.is_path_in_patch(patch, 'container-images/')):
+ # tripleo-common has python and another component to it
+ # here we detect if there is a change to the yaml component and if so
+ # treat it like it is not python. This has the caveat of if there
+ # is a patch to both python and yaml this will not work
+ # FIXME(trozet): add ability to split tripleo-common patches that
+ # modify both python and yaml
+ return "/usr/share/openstack-tripleo-common-containers/"
else:
# assume python. python patches will apply to a project name subdir.
# For example, python-tripleoclient patch will apply to the
@@ -157,7 +167,7 @@ def add_upstream_patches(patches, image, tmp_dir,
branch = default_branch
patch_diff = build_utils.get_patch(patch['change-id'],
patch['project'], branch)
- project_path = project_to_path(patch['project'])
+ project_path = project_to_path(patch['project'], patch_diff)
# If docker tag and python we know this patch belongs on docker
# container for a docker service. Therefore we build the dockerfile
# and move the patch into the containers directory. We also assume
diff --git a/apex/common/constants.py b/apex/common/constants.py
index 0475615a..c3e3f5a0 100644
--- a/apex/common/constants.py
+++ b/apex/common/constants.py
@@ -65,7 +65,7 @@ VALID_DOCKER_SERVICES = {
'neutron-opendaylight-sriov.yaml': None,
'neutron-bgpvpn-opendaylight.yaml': None,
'neutron-sfc-opendaylight.yaml': None,
- 'neutron-ml2-ovn.yaml': 'neutron-ovn.yaml'
+ 'neutron-ml2-ovn.yaml': 'neutron-ovn-ha.yaml'
}
DOCKERHUB_OOO = 'https://registry.hub.docker.com/v2/repositories' \
'/tripleomaster/'
diff --git a/apex/tests/test_apex_build_utils.py b/apex/tests/test_apex_build_utils.py
index f18103c8..36caaf1f 100644
--- a/apex/tests/test_apex_build_utils.py
+++ b/apex/tests/test_apex_build_utils.py
@@ -178,6 +178,12 @@ class TestBuildUtils(unittest.TestCase):
self.assertNotRegex(tmp_patch, 'Steps of upgrade are as follows')
self.assertNotRegex(tmp_patch, 'Steps invlolved in level 2 update')
+ def test_is_path_in_patch(self):
+ with open(os.path.join(con.TEST_DUMMY_CONFIG, '98faaca.diff')) as fh:
+ dummy_patch = fh.read()
+ self.assertTrue(build_utils.is_path_in_patch(dummy_patch,
+ 'releasenotes/'))
+
def test_strip_no_patch_sections(self):
with open(os.path.join(con.TEST_DUMMY_CONFIG, '98faaca.diff')) as fh:
dummy_patch = fh.read()