def setUp(self, connect, update, creds): creds.return_value = ["username", "password"] self.vim_client = VimClient(auto_sync=False) self.vim_client.wait_for_task = MagicMock() self.disk_manager = EsxDiskManager(self.vim_client, []) self.disk_manager._vmdk_mkdir = MagicMock() self.disk_manager._vmdk_rmdir = MagicMock()
def __init__(self, agent_config): self.logger = logging.getLogger(__name__) # If VimClient's housekeeping thread failed to update its own cache, # call errback to commit suicide. Watchdog will bring up the agent # again. self.vim_client = VimClient(wait_timeout=agent_config.wait_timeout, errback=lambda: suicide()) atexit.register(lambda client: client.disconnect(), self.vim_client) self._uuid = self.vim_client.host_uuid self.set_memory_overcommit(agent_config.memory_overcommit) self.datastore_manager = EsxDatastoreManager( self, agent_config.datastores, agent_config.image_datastores) # datastore manager needs to update the cache when there is a change. self.vim_client.add_update_listener(self.datastore_manager) self.vm_manager = EsxVmManager(self.vim_client, self.datastore_manager) self.disk_manager = EsxDiskManager(self.vim_client, self.datastore_manager) self.image_manager = EsxImageManager(self.vim_client, self.datastore_manager) self.network_manager = EsxNetworkManager(self.vim_client, agent_config.networks) self.system = EsxSystem(self.vim_client) self.image_manager.monitor_for_cleanup() self.image_transferer = HttpNfcTransferer( self.vim_client, self.datastore_manager.image_datastores()) atexit.register(self.image_manager.cleanup)
class TestEsxDiskManager(unittest.TestCase): @patch.object(VimClient, "acquire_credentials") @patch.object(VimClient, "update_cache") @patch("pysdk.connect.Connect") def setUp(self, connect, update, creds): creds.return_value = ["username", "password"] self.vim_client = VimClient(auto_sync=False) self.vim_client.wait_for_task = MagicMock() self.disk_manager = EsxDiskManager(self.vim_client, []) self.disk_manager._vmdk_mkdir = MagicMock() self.disk_manager._vmdk_rmdir = MagicMock() def tearDown(self): self.vim_client.disconnect(wait=True) def test_create_spec(self): """Test that we create a valid disk spec.""" capacity = 2 spec = self.disk_manager._create_spec(capacity) assert_that(spec.capacityKb, equal_to(capacity * (1024 ** 2))) assert_that(spec.adapterType, equal_to(DEFAULT_DISK_ADAPTER_TYPE)) def test_invalid_datastore_path(self): """Test that we propagate InvalidDatastorePath.""" self.vim_client.wait_for_task.side_effect = \ vim.fault.InvalidDatastorePath self.assertRaises(DiskPathException, self.disk_manager.create_disk, "ds1", "foo", 101) def test_disk_not_found(self): """Test that we propagate FileNotFound.""" self.vim_client.wait_for_task.side_effect = vim.fault.FileNotFound self.assertRaises(DiskFileException, self.disk_manager.delete_disk, "ds1", "bar") def test_general_fault(self): """Test general Exception propagation.""" self.vim_client.wait_for_task.side_effect = vim.fault.TaskInProgress self.assertRaises(vim.fault.TaskInProgress, self.disk_manager.move_disk, "ds1", "biz", "ds1", "baz")
class TestEsxDiskManager(unittest.TestCase): @patch.object(VimClient, "acquire_credentials") @patch.object(VimClient, "update_cache") @patch("pysdk.connect.Connect") def setUp(self, connect, update, creds): creds.return_value = ["username", "password"] self.vim_client = VimClient(auto_sync=False) self.vim_client.wait_for_task = MagicMock() self.disk_manager = EsxDiskManager(self.vim_client, []) self.disk_manager._vmdk_mkdir = MagicMock() self.disk_manager._vmdk_rmdir = MagicMock() def tearDown(self): self.vim_client.disconnect(wait=True) def test_create_spec(self): """Test that we create a valid disk spec.""" capacity = 2 spec = self.disk_manager._create_spec(capacity) assert_that(spec.capacityKb, equal_to(capacity * (1024**2))) assert_that(spec.adapterType, equal_to(DEFAULT_DISK_ADAPTER_TYPE)) def test_invalid_datastore_path(self): """Test that we propagate InvalidDatastorePath.""" self.vim_client.wait_for_task.side_effect = \ vim.fault.InvalidDatastorePath self.assertRaises(DiskPathException, self.disk_manager.create_disk, "ds1", "foo", 101) def test_disk_not_found(self): """Test that we propagate FileNotFound.""" self.vim_client.wait_for_task.side_effect = vim.fault.FileNotFound self.assertRaises(DiskFileException, self.disk_manager.delete_disk, "ds1", "bar") def test_general_fault(self): """Test general Exception propagation.""" self.vim_client.wait_for_task.side_effect = vim.fault.TaskInProgress self.assertRaises(vim.fault.TaskInProgress, self.disk_manager.move_disk, "ds1", "biz", "ds1", "baz")
def __init__(self, agent_config): self.logger = logging.getLogger(__name__) # If VimClient's housekeeping thread failed to update its own cache, # call errback to commit suicide. Watchdog will bring up the agent # again. errback = lambda: suicide() self.vim_client = VimClient(wait_timeout=agent_config.wait_timeout, errback=errback) atexit.register(lambda client: client.disconnect(), self.vim_client) self._uuid = self.vim_client.host_uuid # Enable/Disable large page support. If this host is removed # from the deployment, large page support will need to be # explicitly updated by the user. disable_large_pages = agent_config.memory_overcommit > 1.0 self.vim_client.set_large_page_support(disable=disable_large_pages) image_datastores = [ds["name"] for ds in agent_config.image_datastores] self.datastore_manager = EsxDatastoreManager(self, agent_config.datastores, image_datastores) # datastore manager needs to update the cache when there is a change. self.vim_client.add_update_listener(self.datastore_manager) self.vm_manager = EsxVmManager(self.vim_client, self.datastore_manager) self.disk_manager = EsxDiskManager(self.vim_client, self.datastore_manager) self.image_manager = EsxImageManager(self.vim_client, self.datastore_manager) self.network_manager = EsxNetworkManager(self.vim_client, agent_config.networks) self.system = EsxSystem(self.vim_client) self.image_manager.monitor_for_cleanup() self.image_transferer = HttpNfcTransferer(self.vim_client, image_datastores) atexit.register(self.image_manager.cleanup)