Пример #1
0
 def test_apply_sw_update_strategy(self, mock_db_api, mock_context,
                                   mock_patch_orch_thread):
     mock_context.get_admin_context.return_value = self.ctxt
     fake_sw_update_strategy = SwUpdateStrategy(FAKE_ID,
                                                FAKE_SW_UPDATE_DATA)
     mock_db_api.sw_update_strategy_get.return_value = \
         fake_sw_update_strategy
     um = sw_update_manager.SwUpdateManager()
     um.apply_sw_update_strategy(self.ctxt)
     mock_db_api.sw_update_strategy_update.assert_called_with(
         mock.ANY, state=consts.SW_UPDATE_STATE_APPLYING)
Пример #2
0
 def test_abort_sw_update_strategy_invalid_state(self, mock_db_api,
                                                 mock_context,
                                                 mock_patch_orch_thread):
     data = copy.copy(FAKE_SW_UPDATE_DATA)
     data['state'] = consts.SW_UPDATE_STATE_COMPLETE
     mock_context.get_admin_context.return_value = self.ctxt
     fake_sw_update_strategy = SwUpdateStrategy(FAKE_ID, data)
     mock_db_api.sw_update_strategy_get.return_value = \
         fake_sw_update_strategy
     um = sw_update_manager.SwUpdateManager()
     self.assertRaises(exceptions.BadRequest, um.apply_sw_update_strategy,
                       self.ctxt)
Пример #3
0
 def test_abort_sw_update_strategy(self, mock_db_api, mock_context,
                                   mock_patch_orch_thread):
     data = copy.copy(FAKE_SW_UPDATE_DATA)
     data['state'] = consts.SW_UPDATE_STATE_APPLYING
     mock_context.get_admin_context.return_value = self.ctxt
     fake_sw_update_strategy = SwUpdateStrategy(FAKE_ID, data)
     mock_db_api.sw_update_strategy_get.return_value = \
         fake_sw_update_strategy
     um = sw_update_manager.SwUpdateManager()
     um.abort_sw_update_strategy(self.ctxt)
     mock_db_api.sw_update_strategy_update.assert_called_with(
         mock.ANY, state=consts.SW_UPDATE_STATE_ABORT_REQUESTED)
Пример #4
0
    def test_create_sw_update_strategy_no_subclouds(self, mock_db_api,
                                                    mock_context,
                                                    mock_patch_orch_thread):
        mock_context.get_admin_context.return_value = self.ctxt
        mock_db_api.sw_update_strategy_get.side_effect = \
            exceptions.NotFound()
        um = sw_update_manager.SwUpdateManager()
        um.create_sw_update_strategy(self.ctxt, payload=FAKE_SW_UPDATE_DATA)
        mock_db_api.sw_update_strategy_create.assert_called_once()

        expected_calls = [
            mock.call(mock.ANY,
                      None,
                      stage=1,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
        ]
        mock_db_api.strategy_step_create.assert_has_calls(expected_calls)
Пример #5
0
    def test_create_sw_update_strategy_unknown_sync_status(
            self, mock_db_api, mock_context, mock_patch_orch_thread):
        mock_context.get_admin_context.return_value = self.ctxt
        mock_db_api.sw_update_strategy_get.side_effect = \
            exceptions.NotFound()

        # Will be patched
        fake_subcloud1 = Subcloud(1,
                                  'subcloud1',
                                  is_managed=True,
                                  is_online=True)
        fake_status1 = SubcloudStatus()
        # Not patched because not managed
        fake_subcloud2 = Subcloud(2,
                                  'subcloud2',
                                  is_managed=False,
                                  is_online=True)
        fake_status2 = SubcloudStatus()
        # Will be patched
        fake_subcloud3 = Subcloud(3,
                                  'subcloud3',
                                  is_managed=True,
                                  is_online=True)
        fake_status3 = SubcloudStatus()
        # Will fail creation because sync status is unknown
        fake_subcloud4 = Subcloud(4,
                                  'subcloud4',
                                  is_managed=True,
                                  is_online=True)
        fake_status4 = SubcloudStatus(sync_status=consts.SYNC_STATUS_UNKNOWN)
        mock_db_api.subcloud_get_all_with_status.return_value = [
            (fake_subcloud1, fake_status1),
            (fake_subcloud2, fake_status2),
            (fake_subcloud3, fake_status3),
            (fake_subcloud4, fake_status4),
        ]

        um = sw_update_manager.SwUpdateManager()
        self.assertRaises(exceptions.BadRequest,
                          um.create_sw_update_strategy,
                          self.ctxt,
                          payload=FAKE_SW_UPDATE_DATA)
Пример #6
0
    def test_create_sw_update_strategy_serial(self, mock_db_api, mock_context,
                                              mock_patch_orch_thread):
        mock_context.get_admin_context.return_value = self.ctxt
        mock_db_api.sw_update_strategy_get.side_effect = \
            exceptions.NotFound()

        # Will be patched
        fake_subcloud1 = Subcloud(1,
                                  'subcloud1',
                                  is_managed=True,
                                  is_online=True)
        fake_status1 = SubcloudStatus()
        # Not patched because not managed
        fake_subcloud2 = Subcloud(2,
                                  'subcloud2',
                                  is_managed=False,
                                  is_online=True)
        fake_status2 = SubcloudStatus()
        # Will be patched
        fake_subcloud3 = Subcloud(3,
                                  'subcloud3',
                                  is_managed=True,
                                  is_online=True)
        fake_status3 = SubcloudStatus()
        # Not patched because patching is in sync
        fake_subcloud4 = Subcloud(4,
                                  'subcloud4',
                                  is_managed=True,
                                  is_online=True)
        fake_status4 = SubcloudStatus(sync_status=consts.SYNC_STATUS_IN_SYNC)
        # Will be patched
        fake_subcloud5 = Subcloud(5,
                                  'subcloud5',
                                  is_managed=True,
                                  is_online=True)
        fake_status5 = SubcloudStatus()
        # Will be patched
        fake_subcloud6 = Subcloud(6,
                                  'subcloud6',
                                  is_managed=True,
                                  is_online=True)
        fake_status6 = SubcloudStatus()

        mock_db_api.subcloud_get_all_with_status.return_value = [
            (fake_subcloud1, fake_status1),
            (fake_subcloud2, fake_status2),
            (fake_subcloud3, fake_status3),
            (fake_subcloud4, fake_status4),
            (fake_subcloud5, fake_status5),
            (fake_subcloud6, fake_status6),
        ]

        um = sw_update_manager.SwUpdateManager()
        data = copy.copy(FAKE_SW_UPDATE_DATA)
        data["subcloud-apply-type"] = consts.SUBCLOUD_APPLY_TYPE_SERIAL
        um.create_sw_update_strategy(self.ctxt, payload=data)
        mock_db_api.sw_update_strategy_create.assert_called_once()

        expected_calls = [
            mock.call(mock.ANY,
                      None,
                      stage=1,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
            mock.call(mock.ANY,
                      1,
                      stage=2,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
            mock.call(mock.ANY,
                      3,
                      stage=3,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
            mock.call(mock.ANY,
                      5,
                      stage=4,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
            mock.call(mock.ANY,
                      6,
                      stage=5,
                      state=consts.STRATEGY_STATE_INITIAL,
                      details=''),
        ]
        mock_db_api.strategy_step_create.assert_has_calls(expected_calls)
Пример #7
0
 def test_init(self, mock_context, mock_patch_orch_thread):
     mock_context.get_admin_context.return_value = self.ctxt
     um = sw_update_manager.SwUpdateManager()
     self.assertIsNotNone(um)
     self.assertEqual('sw_update_manager', um.service_name)
     self.assertEqual('localhost', um.host)