# Copyright (c) 2023-2024 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # import mock from oslo_utils import timeutils from dcmanagerclient.api.v1.subcloud_peer_group_manager import ( SubcloudPeerGroup as Peergroup, ) from dcmanagerclient.commands.v1 import ( subcloud_peer_group_manager as subcloud_peer_group_cmd, ) from dcmanagerclient.exceptions import DCManagerClientException from dcmanagerclient.tests import base FAKE_MANAGER = None PG_ID = "1" PG_NAME = "test-pg-name" PG_GROUP_PRIORITY = "0" PG_GROUP_STATE = "disabled" PG_MAX_SUBCLOUD_REHOMING = "10" PG_SYSTEM_LEADER_ID = "d9dea83f-f271-470d-9cce-44b0162a800b" PG_SYSTEM_LEADER_NAME = "dc-1" TIME_NOW = timeutils.utcnow().isoformat() PG_CREATED_AT = TIME_NOW PG_UPDATED_AT = TIME_NOW SubcloudPeerGroup = Peergroup( mock, PG_ID, PG_NAME, PG_GROUP_PRIORITY, PG_GROUP_STATE, PG_SYSTEM_LEADER_ID, PG_SYSTEM_LEADER_NAME, PG_MAX_SUBCLOUD_REHOMING, PG_CREATED_AT, PG_UPDATED_AT, ) PG_TUPLE = ( PG_ID, PG_NAME, PG_GROUP_PRIORITY, PG_GROUP_STATE, PG_SYSTEM_LEADER_ID, PG_SYSTEM_LEADER_NAME, PG_MAX_SUBCLOUD_REHOMING, ) PG_TUPLE_WITH_DATE = PG_TUPLE + (PG_CREATED_AT, PG_UPDATED_AT) class TestCLISubcloudPeerGroupManager(base.BaseCommandTest): def setUp(self): super().setUp() # The client is the subcloud_peer_group_manager self.client = self.app.client_manager.subcloud_peer_group_manager def test_list_subcloud_peer_groups(self): self.client.list_subcloud_peer_groups.return_value = [SubcloudPeerGroup] actual_call = self.call(subcloud_peer_group_cmd.ListSubcloudPeerGroup) self.assertEqual([PG_TUPLE_WITH_DATE], actual_call[1]) def test_show_subcloud_peer_group(self): self.client.subcloud_peer_group_detail.return_value = [SubcloudPeerGroup] actual_call = self.call( subcloud_peer_group_cmd.ShowSubcloudPeerGroup, app_args=[PG_ID] ) self.assertEqual(PG_TUPLE_WITH_DATE, actual_call[1]) def test_list_subcloud_peer_group_subclouds(self): self.client.subcloud_peer_group_list_subclouds.return_value = [ base.SUBCLOUD_RESOURCE_WITH_PEERID ] actual_call = self.call( subcloud_peer_group_cmd.ListSubcloudPeerGroupSubclouds, app_args=[base.ID], ) self.assertEqual( [base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID], actual_call[1] ) def test_add_subcloud_peer_group(self): self.client.add_subcloud_peer_group.return_value = [SubcloudPeerGroup] actual_call1 = self.call( subcloud_peer_group_cmd.AddSubcloudPeerGroup, app_args=["--peer-group-name", PG_NAME], ) actual_call2 = self.call( subcloud_peer_group_cmd.AddSubcloudPeerGroup, app_args=[ "--peer-group-name", PG_NAME, "--group-state", PG_GROUP_STATE, "--max-subcloud-rehoming", PG_MAX_SUBCLOUD_REHOMING, ], ) self.assertEqual(PG_TUPLE_WITH_DATE, actual_call1[1]) self.assertEqual(PG_TUPLE_WITH_DATE, actual_call2[1]) def test_delete_subcloud_peer_group(self): self.call(subcloud_peer_group_cmd.DeleteSubcloudPeerGroup, app_args=[PG_ID]) self.client.delete_subcloud_peer_group.assert_called_once_with(PG_ID) def test_update_subcloud_peer_group(self): self.client.update_subcloud_peer_group.return_value = [SubcloudPeerGroup] actual_call = self.call( subcloud_peer_group_cmd.UpdateSubcloudPeerGroup, app_args=[ base.ID, "--peer-group-name", PG_NAME, "--group-state", PG_GROUP_STATE, "--max-subcloud-rehoming", PG_MAX_SUBCLOUD_REHOMING, ], ) self.assertEqual((PG_TUPLE_WITH_DATE), actual_call[1]) e = self.assertRaises( DCManagerClientException, self.call, subcloud_peer_group_cmd.UpdateSubcloudPeerGroup, app_args=[base.ID], ) self.assertTrue("Nothing to update" in str(e))