Bring in aarch64 support in apex
[apex.git] / apex / tests / test_apex_common_builder.py
index 09bd254..3ff95bb 100644 (file)
@@ -24,6 +24,8 @@ DOCKER_YAML = {
     }
 }
 
+a_mock_open = mock_open(read_data=None)
+
 
 class TestCommonBuilder(unittest.TestCase):
     @classmethod
@@ -55,7 +57,8 @@ class TestCommonBuilder(unittest.TestCase):
         dummy_change = {'submitted': '2017-06-05 20:23:09.000000000',
                         'status': 'MERGED'}
         self.assertTrue(c_builder.is_patch_promoted(dummy_change,
-                                                    'master'))
+                                                    'master',
+                                                    con.DOCKERHUB_OOO))
 
     def test_is_patch_promoted_docker(self):
         dummy_change = {'submitted': '2017-06-05 20:23:09.000000000',
@@ -63,13 +66,15 @@ class TestCommonBuilder(unittest.TestCase):
         dummy_image = 'centos-binary-opendaylight'
         self.assertTrue(c_builder.is_patch_promoted(dummy_change,
                                                     'master',
+                                                    con.DOCKERHUB_OOO,
                                                     docker_image=dummy_image))
 
     def test_patch_not_promoted(self):
         dummy_change = {'submitted': '2900-06-05 20:23:09.000000000',
                         'status': 'MERGED'}
         self.assertFalse(c_builder.is_patch_promoted(dummy_change,
-                                                     'master'))
+                                                     'master',
+                                                     con.DOCKERHUB_OOO))
 
     def test_patch_not_promoted_docker(self):
         dummy_change = {'submitted': '2900-06-05 20:23:09.000000000',
@@ -77,13 +82,15 @@ class TestCommonBuilder(unittest.TestCase):
         dummy_image = 'centos-binary-opendaylight'
         self.assertFalse(c_builder.is_patch_promoted(dummy_change,
                                                      'master',
+                                                     con.DOCKERHUB_OOO,
                                                      docker_image=dummy_image))
 
     def test_patch_not_promoted_and_not_merged(self):
         dummy_change = {'submitted': '2900-06-05 20:23:09.000000000',
                         'status': 'BLAH'}
         self.assertFalse(c_builder.is_patch_promoted(dummy_change,
-                                                     'master'))
+                                                     'master',
+                                                     con.DOCKERHUB_OOO))
 
     @patch('builtins.open', mock_open())
     @patch('apex.builders.common_builder.is_patch_promoted')
@@ -239,7 +246,8 @@ class TestCommonBuilder(unittest.TestCase):
                          '/dummytmp/dummyrepo.tar')
 
     def test_project_to_docker_image(self):
-        found_services = c_builder.project_to_docker_image(project='nova')
+        found_services = c_builder.project_to_docker_image('nova',
+                                                           con.DOCKERHUB_OOO)
         assert 'nova-api' in found_services
 
     @patch('apex.common.utils.open_webpage')
@@ -248,4 +256,55 @@ class TestCommonBuilder(unittest.TestCase):
         mock_open_web.return_value = b'{"blah": "blah"}'
         self.assertRaises(exceptions.ApexCommonBuilderException,
                           c_builder.project_to_docker_image,
-                          'nova')
+                          'nova',
+                          con.DOCKERHUB_OOO)
+
+    def test_get_neutron_driver(self):
+        ds_opts = {'dataplane': 'fdio',
+                   'sdn_controller': 'opendaylight',
+                   'odl_version': 'master',
+                   'vpn': False,
+                   'sriov': False}
+        self.assertEquals(c_builder.get_neutron_driver(ds_opts),
+                          'odl')
+        ds_opts['sdn_controller'] = None
+        ds_opts['vpp'] = True
+        self.assertEquals(c_builder.get_neutron_driver(ds_opts),
+                          'vpp')
+        ds_opts['sdn_controller'] = 'ovn'
+        self.assertEquals(c_builder.get_neutron_driver(ds_opts),
+                          'ovn')
+
+    @patch('apex.builders.common_builder.yaml')
+    @patch('apex.overcloud.deploy.os.path.isfile')
+    @patch('builtins.open', a_mock_open, create=True)
+    def test_prepare_container_images(self, mock_is_file, mock_yaml):
+        mock_yaml.safe_load.return_value = {
+            'parameter_defaults': {
+                'ContainerImagePrepare': [
+                    {'set':
+                        {'namespace': 'blah',
+                         'neutron_driver': 'null',
+                         }
+                     }
+                ]
+            }
+        }
+        expected_output = {
+            'parameter_defaults': {
+                'ContainerImagePrepare': [
+                    {'set':
+                        {'namespace': 'docker.io/tripleoqueens',
+                         'neutron_driver': 'odl',
+                         }
+                     }
+                ]
+            }
+        }
+
+        c_builder.prepare_container_images('dummy.yaml', 'queens',
+                                           'odl')
+        mock_yaml.safe_dump.assert_called_with(
+            expected_output,
+            a_mock_open.return_value,
+            default_flow_style=False)