Exemple #1
0
    def test_probe_and_enlist_skips_pxe_config_if_create_node_failed(self):
        num_servers = 1
        self.configure_vmomi_api(servers=num_servers)
        mock_create_node = self.patch(vmware, "create_node")
        mock_create_node.side_effect = asynchronous(
            lambda *args, **kwargs: None)
        mock_reconfigure_vm = self.patch(FakeVmomiVM, "ReconfigVM_Task")

        # We need to not actually try to commission any nodes...
        self.patch(vmware, "commission_node")

        host = factory.make_hostname()
        username = factory.make_username()
        password = factory.make_username()

        yield deferToThread(
            vmware.probe_vmware_and_enlist,
            factory.make_username(),
            host,
            username,
            password,
            accept_all=True,
        )

        self.assertEqual(mock_reconfigure_vm.call_count, 0)
Exemple #2
0
    def test_probe_and_enlist(self):
        num_servers = 100
        self.configure_vmomi_api(servers=num_servers)
        mock_create_node = self.patch(vmware, "create_node")
        system_id = factory.make_name("system_id")
        mock_create_node.side_effect = asynchronous(
            lambda *args, **kwargs: system_id
        )
        mock_commission_node = self.patch(vmware, "commission_node")

        host = factory.make_hostname()
        username = factory.make_username()
        password = factory.make_username()

        yield deferToThread(
            vmware.probe_vmware_and_enlist,
            factory.make_username(),
            host,
            username,
            password,
            accept_all=True,
        )

        self.assertEqual(mock_create_node.call_count, num_servers)
        self.assertEqual(mock_commission_node.call_count, num_servers)
Exemple #3
0
 def test_get_vmware_servers(self):
     self.configure_vmomi_api(servers=10)
     servers = vmware.get_vmware_servers(
         factory.make_hostname(),
         factory.make_username(),
         factory.make_username(),
     )
     self.expectThat(servers, Not(Equals({})))
Exemple #4
0
 def test_get_vmware_servers_empty(self):
     self.configure_vmomi_api(servers=0)
     servers = vmware.get_vmware_servers(factory.make_hostname(),
                                         factory.make_username(),
                                         factory.make_username(),
                                         port=8443,
                                         protocol='https')
     self.expectThat(servers, Equals({}))
Exemple #5
0
 def test_power_query_missing_server_raises_VMwareVMNotFound(self):
     self.configure_vmomi_api(servers=1,
                              has_instance_uuid=True,
                              has_uuid=True)
     host = factory.make_hostname()
     username = factory.make_username()
     password = factory.make_username()
     with ExpectedException(VMwareVMNotFound):
         vmware.power_query_vmware(host, username, password, None, None)
Exemple #6
0
 def test_get_server_by_name(self):
     mock_vmomi_api = self.configure_vmomi_api(servers=1,
                                               has_instance_uuid=False,
                                               has_uuid=True)
     host = factory.make_hostname()
     username = factory.make_username()
     password = factory.make_username()
     servers = vmware.get_vmware_servers(host, username, password)
     for vm_name in servers.keys():
         vm = vmware._find_vm_by_uuid_or_name(mock_vmomi_api, None, vm_name)
         self.assertIsNotNone(vm)
Exemple #7
0
 def test_api_connection(self):
     mock_vmomi_api = self.configure_vmomi_api(servers=0)
     api = VMwarePyvmomiAPI(factory.make_hostname(),
                            factory.make_username(),
                            factory.make_username())
     api.connect()
     self.expectThat(api.service_instance,
                     IsInstance(FakeVmomiServiceInstance))
     self.expectThat(api.is_connected(), Equals(True))
     api.disconnect()
     self.expectThat(mock_vmomi_api.SmartConnect.called, Equals(True))
     self.expectThat(mock_vmomi_api.Disconnect.called, Equals(True))
Exemple #8
0
    def test_power_control(self):
        mock_vmomi_api = self.configure_vmomi_api(servers=100)

        host = factory.make_hostname()
        username = factory.make_username()
        password = factory.make_username()

        servers = vmware.get_vmware_servers(host, username, password)

        # here we're grabbing indexes only available in the private mock object
        search_index = (
            mock_vmomi_api.SmartConnect.return_value.content.searchIndex
        )

        bios_uuids = list(search_index.vms_by_uuid)
        instance_uuids = list(search_index.vms_by_instance_uuid)

        # at least one should have a randomly-invalid state (just checking
        # for coverage, but since it's random, don't want to assert)
        vm_name = None

        for uuid in bios_uuids:
            vmware.power_query_vmware(host, username, password, vm_name, uuid)
        for uuid in instance_uuids:
            vmware.power_query_vmware(host, username, password, vm_name, uuid)
        for vm_name in servers:
            vmware.power_query_vmware(host, username, password, vm_name, None)

        # turn on a set of VMs, then verify they are on
        for uuid in bios_uuids:
            vmware.power_control_vmware(
                host, username, password, vm_name, uuid, "on"
            )

        for uuid in bios_uuids:
            state = vmware.power_query_vmware(
                host, username, password, vm_name, uuid
            )
            self.expectThat(state, Equals("on"))

        # turn off a set of VMs, then verify they are off
        for uuid in instance_uuids:
            vmware.power_control_vmware(
                host, username, password, vm_name, uuid, "off"
            )
        for uuid in instance_uuids:
            state = vmware.power_query_vmware(
                host, username, password, vm_name, uuid
            )
            self.expectThat(state, Equals("off"))

        self.expectThat(servers, Not(Equals({})))
Exemple #9
0
 def test_api_failed_connection(self):
     mock_vmomi_api = self.patch(vmware, 'vmomi_api')
     mock_vmomi_api.SmartConnect.return_value = None
     api = VMwarePyvmomiAPI(factory.make_hostname(),
                            factory.make_username(),
                            factory.make_username())
     with ExpectedException(vmware.VMwareAPIConnectionFailed):
         api.connect()
     self.expectThat(api.service_instance, Is(None))
     self.expectThat(api.is_connected(), Equals(False))
     api.disconnect()
     self.expectThat(mock_vmomi_api.SmartConnect.called, Equals(True))
     self.expectThat(mock_vmomi_api.Disconnect.called, Equals(True))
Exemple #10
0
    def test_probe_and_enlist_reconfigures_boot_order_if_create_node_ok(self):
        num_servers = 1
        self.configure_vmomi_api(servers=num_servers)
        mock_create_node = self.patch(vmware, 'create_node')
        system_id = factory.make_name('system_id')
        mock_create_node.side_effect = asynchronous(
            lambda *args, **kwargs: system_id)
        mock_reconfigure_vm = self.patch(FakeVmomiVM, 'ReconfigVM_Task')

        # We need to not actually try to commission any nodes...
        self.patch(vmware, 'commission_node')

        host = factory.make_hostname()
        username = factory.make_username()
        password = factory.make_username()

        yield deferToThread(vmware.probe_vmware_and_enlist,
                            factory.make_username(),
                            host,
                            username,
                            password,
                            accept_all=True)

        self.assertEqual(mock_reconfigure_vm.call_count, num_servers)