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')
Example #2
0
    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)
Example #3
0
 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)