def test_get_vm_netwokrs(self):
        vim_client = MagicMock()
        vim_client.get_networks.return_value = ["VM Network", "VM Network 2"]

        # Verify identical list works.
        network_manager = EsxNetworkManager(vim_client, ["VM Network",
                                                         "VM Network 2"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network", "VM Network 2"])

        # Verify strict subset works
        network_manager = EsxNetworkManager(vim_client, ["VM Network"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network"])

        # Verify we filter out invalid networks.
        network_manager = EsxNetworkManager(vim_client, ["FOOBAR",
                                                         "VM Network"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network"])

        # If no network is specified, return the actual network list.
        network_manager = EsxNetworkManager(vim_client, None)
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network", "VM Network 2"])
Esempio n. 2
0
    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)
Esempio n. 3
0
    def test_get_networks(self):
        """ Test normal get_network workflow:
        - call vim_client correctly.
        - collect network types and translate them to thrift representation
        correctly.
        """
        vim_client = MagicMock()
        vim_client.get_network_configs.return_value = [
            _net_config("faultToleranceLogging"),
            _net_config("management"),
            _net_config("vSphereReplication"),
            _net_config("vSphereReplicationNFC"),
            _net_config("vmotion"),
            _net_config("vsan"),
            _net_config("gandalfTheGray"),
        ]
        vim_client.get_networks.return_value = ["VM Network", "VM Network 2"]
        network_manager = EsxNetworkManager(vim_client, [])
        networks = network_manager.get_networks()

        assert_that(networks, has_length(3))
        # Verify 2 VM networks
        assert_that(networks, has_item(Network("VM Network",
                                               [NetworkType.VM])))
        assert_that(networks,
                    has_item(Network("VM Network 2", [NetworkType.VM])))
        # Verify management network
        mgmt_types = [
            NetworkType.FT_LOGGING,
            NetworkType.MANAGEMENT,
            NetworkType.VSPHERE_REPLICATION,
            NetworkType.VSPHERE_REPLICATION_NFC,
            NetworkType.VMOTION,
            NetworkType.VSAN,
            NetworkType.OTHER,
        ].sort()
        network = self._find(MGMT_NETWORK_NAME, networks)
        assert_that(network.types.sort(), is_(mgmt_types))
    def test_get_networks(self):
        """ Test normal get_network workflow:
        - call vim_client correctly.
        - collect network types and translate them to thrift representation
        correctly.
        """
        vim_client = MagicMock()
        vim_client.get_network_configs.return_value = [
            _net_config("faultToleranceLogging"),
            _net_config("management"),
            _net_config("vSphereReplication"),
            _net_config("vSphereReplicationNFC"),
            _net_config("vmotion"),
            _net_config("vsan"),
            _net_config("gandalfTheGray"),
        ]
        vim_client.get_networks.return_value = ["VM Network", "VM Network 2"]
        network_manager = EsxNetworkManager(vim_client, [])
        networks = network_manager.get_networks()

        assert_that(networks, has_length(3))
        # Verify 2 VM networks
        assert_that(networks, has_item(Network("VM Network",
                                               [NetworkType.VM])))
        assert_that(networks, has_item(Network("VM Network 2",
                                               [NetworkType.VM])))
        # Verify management network
        mgmt_types = [
            NetworkType.FT_LOGGING,
            NetworkType.MANAGEMENT,
            NetworkType.VSPHERE_REPLICATION,
            NetworkType.VSPHERE_REPLICATION_NFC,
            NetworkType.VMOTION,
            NetworkType.VSAN,
            NetworkType.OTHER,
        ].sort()
        network = self._find(MGMT_NETWORK_NAME, networks)
        assert_that(network.types.sort(), is_(mgmt_types))
Esempio n. 5
0
    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)
Esempio n. 6
0
    def test_get_vm_netwokrs(self):
        vim_client = MagicMock()
        vim_client.get_networks.return_value = ["VM Network", "VM Network 2"]

        # Verify identical list works.
        network_manager = EsxNetworkManager(vim_client,
                                            ["VM Network", "VM Network 2"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network", "VM Network 2"])

        # Verify strict subset works
        network_manager = EsxNetworkManager(vim_client, ["VM Network"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network"])

        # Verify we filter out invalid networks.
        network_manager = EsxNetworkManager(vim_client,
                                            ["FOOBAR", "VM Network"])
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network"])

        # If no network is specified, return the actual network list.
        network_manager = EsxNetworkManager(vim_client, None)
        networks = network_manager.get_vm_networks()
        self.assertEqual(networks, ["VM Network", "VM Network 2"])