Modify common patches schema to per branch 65/60965/3
authorTim Rozet <trozet@redhat.com>
Wed, 15 Aug 2018 01:17:33 +0000 (21:17 -0400)
committerTim Rozet <trozet@redhat.com>
Wed, 15 Aug 2018 14:58:31 +0000 (10:58 -0400)
The common patch design doesn't really work across branches very well.
This patch makes it so the common patches are specified in the same
file, but on a per branch basis. Making it easier to manage common
patches per branch.

Also, includes a fix and adds test coverage to the prep_image method
where we were referencing 'undercloud_admin_ip' before assignment in a
case where we were not using ODL and had patches to overcloud.

Change-Id: I7672947afd826fdc0042361a0139e22d6d5dd864
Signed-off-by: Tim Rozet <trozet@redhat.com>
13 files changed:
apex/deployment/tripleo.py
apex/overcloud/deploy.py
apex/tests/config/common-patches.yaml
apex/tests/test_apex_overcloud_deploy.py
config/deploy/common-patches.yaml
config/deploy/os-nosdn-nofeature-ha.yaml
config/deploy/os-nosdn-nofeature-noha.yaml
config/deploy/os-odl-bgpvpn-ha.yaml
config/deploy/os-odl-bgpvpn-noha.yaml
config/deploy/os-odl-nofeature-ha.yaml
config/deploy/os-odl-nofeature-noha.yaml
config/deploy/os-odl-queens-ha.yaml
config/deploy/os-odl-queens-noha.yaml

index 0f85bba..c131e16 100644 (file)
@@ -46,12 +46,13 @@ class ApexDeployment:
         common_patches = utils.parse_yaml(self.p_file)
         logging.debug('Content from common patch file is: {}'.format(
             pprint.pformat(common_patches)))
-        if 'patches' not in common_patches.keys():
-            logging.error('Error parsing common patches file, wrong format. '
-                          'Missing "patches" dictionary')
+        os_version = self.ds['deploy_options']['os_version']
+        try:
+            common_patches = common_patches['patches'][os_version]
+        except KeyError:
+            logging.error('Error parsing common patches file, wrong format.')
             raise ApexDeployException('Invalid format of common patch file')
-        else:
-            common_patches = common_patches['patches']
+
         for ptype in ('undercloud', 'overcloud'):
             if ptype in common_patches:
                 patches[ptype] = utils.unique(patches[ptype] +
index dd476b6..e310fa2 100644 (file)
@@ -395,9 +395,9 @@ def prep_image(ds, ns, img, tmp_dir, root_pw=None, docker_tag=None,
                                    "/root/nosdn_vpp_rpms/*.rpm"}
             ])
 
+    undercloud_admin_ip = ns['networks'][con.ADMIN_NETWORK][
+        'installer_vm']['ip']
     if sdn == 'opendaylight':
-        undercloud_admin_ip = ns['networks'][con.ADMIN_NETWORK][
-            'installer_vm']['ip']
         oc_builder.inject_opendaylight(
             odl_version=ds_opts['odl_version'],
             image=tmp_oc_image,
index 35dbf44..fef8fcd 100644 (file)
@@ -1,5 +1,6 @@
 ---
 patches:
-  undercloud:
-    - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
-      project: openstack/tripleo-common
+  queens:
+    undercloud:
+      - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
+        project: openstack/tripleo-common
index a9e4bda..9dd5289 100644 (file)
@@ -284,6 +284,34 @@ class TestOvercloudDeploy(unittest.TestCase):
         mock_c_builder.add_upstream_patches.assert_called()
         self.assertListEqual(sorted(rv), ['nova-api', 'opendaylight'])
 
+    @patch('apex.overcloud.deploy.c_builder')
+    @patch('apex.overcloud.deploy.oc_builder')
+    @patch('apex.overcloud.deploy.virt_utils')
+    @patch('apex.overcloud.deploy.shutil')
+    @patch('apex.overcloud.deploy.os.path')
+    @patch('builtins.open', mock_open())
+    def test_prep_image_nosdn_upstream_containers_patches(
+            self, mock_os_path, mock_shutil, mock_virt_utils,
+            mock_oc_builder, mock_c_builder):
+        ds_opts = {'dataplane': 'ovs',
+                   'sdn_controller': False,
+                   'odl_version': con.DEFAULT_ODL_VERSION,
+                   'odl_vpp_netvirt': False}
+        ds = {'deploy_options': MagicMock(),
+              'global_params': MagicMock()}
+        ds['deploy_options'].__getitem__.side_effect = \
+            lambda i: ds_opts.get(i, MagicMock())
+        ds['deploy_options'].__contains__.side_effect = \
+            lambda i: True if i in ds_opts else MagicMock()
+        ns = MagicMock()
+        mock_c_builder.add_upstream_patches.return_value = ['nova-api']
+        patches = ['dummy_nova_patch']
+        rv = prep_image(ds, ns, 'undercloud.qcow2', '/tmp', root_pw='test',
+                        docker_tag='latest', patches=patches)
+        mock_virt_utils.virt_customize.assert_called()
+        mock_c_builder.add_upstream_patches.assert_called()
+        self.assertListEqual(sorted(rv), ['nova-api'])
+
     @patch('apex.overcloud.deploy.oc_builder')
     @patch('apex.overcloud.deploy.virt_utils')
     @patch('apex.overcloud.deploy.shutil')
index 7339e79..ac006bd 100644 (file)
@@ -1,8 +1,22 @@
 ---
 patches:
-  undercloud:
-    - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
-      project: openstack/tripleo-common
-    - change-id: Iaa2276aadae351fbc138de258c51d786f69e4395
-      project: openstack/tripleo-common
-      branch: master
+  master:
+    undercloud:
+      - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
+        project: openstack/tripleo-common
+      - change-id: Iaa2276aadae351fbc138de258c51d786f69e4395
+        project: openstack/tripleo-common
+    overcloud:
+      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
+        project: openstack/puppet-tripleo
+      - change-id: I93e3d355625508fdc42f44bdd358f3ba86fbd8d7
+        project: openstack/puppet-tripleo
+  queens:
+    undercloud:
+      - change-id: I966bf7f6f8d1cbc656abfad59e8bb927e1aa53c2
+        project: openstack/tripleo-common
+    overcloud:
+      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
+        project: openstack/puppet-tripleo
+      - change-id: I93e3d355625508fdc42f44bdd358f3ba86fbd8d7
+        project: openstack/puppet-tripleo
index 26d30e5..d896a67 100644 (file)
@@ -1,6 +1,7 @@
 ---
 global_params:
   ha_enabled: true
+
 deploy_options:
   containers: true
   os_version: master
index e775811..0725031 100644 (file)
@@ -1,6 +1,7 @@
 ---
 global_params:
   ha_enabled: false
+
 deploy_options:
   containers: true
   os_version: master
index 80b5b3b..f61e1a6 100644 (file)
@@ -1,10 +1,7 @@
 ---
 global_params:
   ha_enabled: true
-  patches:
-    undercloud:
-      - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
-        project: openstack/tripleo-common
+
 deploy_options:
   containers: true
   os_version: master
index 04dbaa8..4bf90aa 100644 (file)
@@ -1,10 +1,7 @@
 ---
 global_params:
   ha_enabled: false
-  patches:
-    undercloud:
-      - change-id: I2e0a40d7902f592e4b7bd727f57048111e0bea36
-        project: openstack/tripleo-common
+
 deploy_options:
   containers: true
   os_version: master
index a1f0d81..748da3c 100644 (file)
@@ -1,11 +1,7 @@
 ---
 global_params:
   ha_enabled: true
-  patches:
-    overcloud:
-      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
-        project: openstack/puppet-tripleo
-        branch: master
+
 deploy_options:
   containers: true
   os_version: master
index 55f1442..0767822 100644 (file)
@@ -1,11 +1,7 @@
 ---
 global_params:
   ha_enabled: false
-  patches:
-    overcloud:
-      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
-        project: openstack/puppet-tripleo
-        branch: master
+
 deploy_options:
   containers: true
   os_version: master
index 1295de0..9738be3 100644 (file)
@@ -1,11 +1,7 @@
 ---
 global_params:
   ha_enabled: true
-  patches:
-    overcloud:
-      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
-        project: openstack/puppet-tripleo
-        branch: stable/queens
+
 deploy_options:
   containers: true
   os_version: queens
index d3d4247..0500eec 100644 (file)
@@ -1,11 +1,7 @@
 ---
 global_params:
   ha_enabled: false
-  patches:
-    overcloud:
-      - change-id: Ie988ba6a2d444a614e97c0edf5fce24b23970310
-        project: openstack/puppet-tripleo
-        branch: stable/queens
+
 deploy_options:
   containers: true
   os_version: queens