예제 #1
0
    def test_parse_operating_system_repos(self, mock_init, mock_ub, mock_deb):
        mock_init.return_value = None
        data = {
            'repos': REPOS_SAMPLE,
            'codename': 'trusty'
        }
        driver = NailgunBuildImage()
        driver.data = data

        mock_deb_expected_calls = []
        repos = []
        for r in REPOS_SAMPLE:
            kwargs = {
                'name': r['name'],
                'uri': r['uri'],
                'suite': r['suite'],
                'section': r['section'],
                'priority': r['priority']
            }
            mock_deb_expected_calls.append(mock.call(**kwargs))
            repos.append(objects.DEBRepo(**kwargs))
        driver.parse_operating_system()
        mock_ub_instance = mock_ub.return_value
        mock_ub_instance.repos = repos
        mock_ub.assert_called_once_with(
            repos=repos, packages=NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES)
        self.assertEqual(mock_deb_expected_calls,
                         mock_deb.call_args_list[:len(REPOS_SAMPLE)])
        self.assertEqual(driver.operating_system.repos, repos)
예제 #2
0
    def test_parse_schemes(
            self, mock_init, mock_imgsch, mock_partsch,
            mock_fs, mock_img, mock_loop):
        mock_init.return_value = None
        data = {
            'image_data': IMAGE_DATA_SAMPLE,
            'output': '/some/local/path',
        }
        driver = NailgunBuildImage()
        driver.data = data
        driver.parse_schemes()

        mock_fs_expected_calls = []
        mock_img_expected_calls = []
        images = []
        fss = []
        data_length = len(data['image_data'].keys())
        for mount, image in six.iteritems(data['image_data']):
            filename = os.path.basename(urlsplit(image['uri']).path)
            img_kwargs = {
                'uri': 'file://' + os.path.join(data['output'], filename),
                'format': image['format'],
                'container': image['container'],
                'target_device': None
            }
            mock_img_expected_calls.append(mock.call(**img_kwargs))
            images.append(objects.Image(**img_kwargs))

            fs_kwargs = {
                'device': None,
                'mount': mount,
                'fs_type': image['format']
            }
            mock_fs_expected_calls.append(mock.call(**fs_kwargs))
            fss.append(objects.Fs(**fs_kwargs))

            if mount == '/':
                metadata_filename = filename.split('.', 1)[0] + '.yaml'

        mock_imgsch_instance = mock_imgsch.return_value
        mock_imgsch_instance.images = images
        mock_partsch_instance = mock_partsch.return_value
        mock_partsch_instance.fss = fss

        self.assertEqual(
            driver.metadata_uri, 'file://' + os.path.join(
                data['output'], metadata_filename))
        self.assertEqual(mock_img_expected_calls,
                         mock_img.call_args_list[:data_length])
        self.assertEqual(mock_fs_expected_calls,
                         mock_fs.call_args_list[:data_length])
        self.assertEqual(driver.image_scheme.images, images)
        self.assertEqual(driver.partition_scheme.fss, fss)
예제 #3
0
 def test_parse_operating_system_packages_given(self, mock_init, mock_ub):
     mock_init.return_value = None
     data = {
         'repos': [],
         'codename': 'trusty',
         'packages': ['pack']
     }
     driver = NailgunBuildImage()
     driver.data = data
     mock_ub_instance = mock_ub.return_value
     mock_ub_instance.packages = data['packages']
     driver.parse_operating_system()
     mock_ub.assert_called_once_with(repos=[], packages=data['packages'])
     self.assertEqual(driver.operating_system.packages, data['packages'])
예제 #4
0
 def test_parse_operating_system_packages_not_given(
         self, mock_init, mock_ub):
     mock_init.return_value = None
     data = {
         'repos': [],
         'codename': 'trusty'
     }
     driver = NailgunBuildImage()
     driver.data = data
     mock_ub_instance = mock_ub.return_value
     mock_ub_instance.packages = NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES
     driver.parse_operating_system()
     mock_ub.assert_called_once_with(
         repos=[], packages=NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES)
     self.assertEqual(driver.operating_system.packages,
                      NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES)
예제 #5
0
 def test_parse_operating_system_packages_given(self, mock_parse_schemes,
                                                mock_ub, mock_proxies):
     data = {'repos': [], 'codename': 'trusty', 'packages': ['pack']}
     mock_ub_instance = mock_ub.return_value
     mock_ub_instance.packages = data['packages']
     driver = NailgunBuildImage(data)
     mock_ub.assert_called_once_with(repos=[],
                                     packages=data['packages'],
                                     major=14,
                                     minor=4,
                                     proxies=mock_proxies.return_value)
     self.assertEqual(driver.operating_system.packages, data['packages'])
예제 #6
0
 def test_parse_operating_system_packages_not_given(
         self, mock_parse_schemes, mock_ub):
     data = {
         'repos': [],
         'codename': 'trusty'
     }
     mock_ub_instance = mock_ub.return_value
     mock_ub_instance.packages = NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES
     driver = NailgunBuildImage(data)
     mock_ub.assert_called_once_with(
         repos=[], packages=NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES,
         major=14, minor=4)
     self.assertEqual(driver.operating_system.packages,
                      NailgunBuildImage.DEFAULT_TRUSTY_PACKAGES)
예제 #7
0
 def test_parse_operating_system_error_bad_codename(self,
                                                    mock_parse_schemes):
     with self.assertRaises(errors.WrongInputDataError):
         data = {'codename': 'not-trusty'}
         NailgunBuildImage(data)
예제 #8
0
 def test_parse_operating_system_error_bad_codename(self, mock_init):
     mock_init.return_value = None
     driver = NailgunBuildImage()
     driver.data = {'codename': 'not-trusty'}
     self.assertRaises(errors.WrongInputDataError,
                       driver.parse_operating_system)