def test_constructor_without_orchestration_data_in_releases(self): releases_sample = ''' [{ "pk": 1, "fields": { "name": "releases name", "version": "2014.1", "operating_system": "CentOS" } }, { "pk": 2, "fields": { "name": "Ubuntu", "version": "2014.1", "operating_system": "Ubuntu" } }] ''' with mock.patch('fuel_upgrade.engines.openstack.io.open', self.mock_open(releases_sample)): self.upgrader = OpenStackUpgrader(self.fake_config) orchestrator_data = self.upgrader.releases[0]['orchestrator_data'] self.assertEqual(orchestrator_data['repo_metadata']['nailgun'], 'http://0.0.0.0:8080/9999/centos/x86_64') self.assertEqual(orchestrator_data['puppet_manifests_source'], 'rsync://0.0.0.0:/puppet/9999/manifests/') self.assertEqual(orchestrator_data['puppet_modules_source'], 'rsync://0.0.0.0:/puppet/9999/modules/') orchestrator_data = self.upgrader.releases[1]['orchestrator_data'] self.assertEqual( orchestrator_data['repo_metadata']['nailgun'], 'http://0.0.0.0:8080/9999/ubuntu/x86_64 precise main')
def test_install_releases_is_not_deployable(self, _, mock_cr, mock_cn, mock_pd, mock_files, gl): # use already parsed text, because mock_open returns input without any # changes, but we expect yaml parsed json releases_raw = ''' [ { "pk": 1, "fields": { "name": "releases name", "version": "2014.1", "operating_system": "CentOS", } }, { "pk": 2, "fields": { "name": "Undeployable releases name", "version": "2014.1", "operating_system": "CentOS", "is_deployable": False, } } ] ''' with mock.patch('fuel_upgrade.engines.openstack.io.open', self.mock_open(releases_raw)): upgrader = OpenStackUpgrader(self.fake_config) # test one release release_response = [{ 'id': '1', 'version': '111' }, { 'id': '2', 'version': '222' }] mock_cr.side_effect = release_response mock_cn.return_value = {'id': '100'} with mock.patch('fuel_upgrade.engines.openstack.utils.read_from_yaml', return_value=self.tasks): upgrader.install_releases() self.called_times(mock_files, 2) self.called_times(mock_cr, 2) # notification should be called only once self.called_once(mock_cn) msg = 'New release available: releases name (2014.1)' mock_cn.assert_called_with({'topic': 'release', 'message': msg}) self.called_times(mock_pd, 2) self.assertEqual(len(upgrader._rollback_ids['release']), 2) # notification should be called only once self.assertEqual(len(upgrader._rollback_ids['notification']), 1)
def setUp(self, _): """Create upgrader with mocked data. """ with mock.patch('fuel_upgrade.engines.openstack.io.open', self.mock_open(self.releases_raw)): self.upgrader = OpenStackUpgrader(self.fake_config)