def test_match_node_metadata_to_vcenter_multiple_node_matches(self): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") self.m_vim_cluster.name = "Fake Cluster" cluster_metadata = proto_patch_encryption_support(CurieSettings.Cluster)() cluster_metadata.cluster_name = "Fake Cluster" cluster_metadata.cluster_hypervisor_info.esx_info.SetInParent() for index in range(3): # Add first 3 nodes by hostname curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = "fake_host_%d" % index curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = '10.60.5.61' # Add last node by ip self.m_vim_cluster.host[0].config.network.vnic[0].spec.ip.ipAddress = '10.60.5.61' # Add repeated address vcenter_info = cluster_metadata.cluster_management_server_info.vcenter_info vcenter_info.vcenter_host = "fake_vmm_server_address" vcenter_info.vcenter_user = "******" vcenter_info.vcenter_password = "******" vcenter_info.vcenter_datacenter_name = "fake_datacenter" vcenter_info.vcenter_cluster_name = "fake_cluster" vcenter_info.vcenter_datastore_name = "fake_share_name" vcenter_info.vcenter_network_name = "fake_network" self.assertEqual(4, len(cluster_metadata.cluster_nodes)) with self.assertRaises(CurieTestException) as ar: vsphere.match_node_metadata_to_vcenter(self.m_vim_cluster, cluster_metadata) self.assertEqual(4, len(cluster_metadata.cluster_nodes)) self.assertEqual("More than one node in the vSphere cluster " "'Fake Cluster' matches node ID '10.60.5.61'. The " "matching nodes are: fake_host_0, fake_host_1.", str(ar.exception.cause))
def test_fill_cluster_metadata_do_not_include_reporting_fields(self): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") cluster_metadata = proto_patch_encryption_support(CurieSettings.Cluster)() cluster_metadata.cluster_name = "Fake Cluster" cluster_metadata.cluster_hypervisor_info.esx_info.SetInParent() for index in range(4): curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = "fake_host_%d" % index vcenter_info = cluster_metadata.cluster_management_server_info.vcenter_info vcenter_info.vcenter_host = "fake_vmm_server_address" vcenter_info.vcenter_user = "******" vcenter_info.vcenter_password = "******" vcenter_info.vcenter_datacenter_name = "fake_datacenter" vcenter_info.vcenter_cluster_name = "fake_cluster" vcenter_info.vcenter_datastore_name = "fake_share_name" vcenter_info.vcenter_network_name = "fake_network" for index, cluster_node in enumerate(cluster_metadata.cluster_nodes): self.assertEqual("fake_host_%d" % index, cluster_node.id) self.assertEqual(False, cluster_node.HasField("node_hardware")) vsphere.fill_cluster_metadata(self.m_vim_cluster, cluster_metadata, False) for index, cluster_node in enumerate(cluster_metadata.cluster_nodes): self.assertEqual("fake_host_%d" % index, cluster_node.id) self.assertEqual(False, cluster_node.HasField("node_hardware"))
def test_match_node_metadata_to_vcenter_node_does_not_match(self): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") self.m_vim_cluster.name = "Fake Cluster" cluster_metadata = proto_patch_encryption_support(CurieSettings.Cluster)() cluster_metadata.cluster_name = "Fake Cluster" cluster_metadata.cluster_hypervisor_info.esx_info.SetInParent() for index in range(3): # Add first 3 nodes by hostname curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = "fake_host_%d" % index curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = '10.60.5.222' # Add last node by ip vcenter_info = cluster_metadata.cluster_management_server_info.vcenter_info vcenter_info.vcenter_host = "fake_vmm_server_address" vcenter_info.vcenter_user = "******" vcenter_info.vcenter_password = "******" vcenter_info.vcenter_datacenter_name = "fake_datacenter" vcenter_info.vcenter_cluster_name = "fake_cluster" vcenter_info.vcenter_datastore_name = "fake_share_name" vcenter_info.vcenter_network_name = "fake_network" self.assertEqual(4, len(cluster_metadata.cluster_nodes)) with self.assertRaises(CurieTestException) as ar: vsphere.match_node_metadata_to_vcenter(self.m_vim_cluster, cluster_metadata) self.assertEqual(4, len(cluster_metadata.cluster_nodes)) self.assertEqual("Node with ID '10.60.5.222' is in the Curie cluster metadata, but not " "found in vSphere cluster 'Fake Cluster'.", str(ar.exception.cause))
def test_match_node_metadata_to_vcenter_one_node_added_by_ip(self): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") cluster_metadata = proto_patch_encryption_support(CurieSettings.Cluster)() cluster_metadata.cluster_name = "Fake Cluster" cluster_metadata.cluster_hypervisor_info.esx_info.SetInParent() for index in range(3): # Add first 3 nodes by hostname to curie metadata curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = "fake_host_%d" % index curr_node = cluster_metadata.cluster_nodes.add() curr_node.id = '10.60.5.63' # Add last node by ip vcenter_info = cluster_metadata.cluster_management_server_info.vcenter_info vcenter_info.vcenter_host = "fake_vmm_server_address" vcenter_info.vcenter_user = "******" vcenter_info.vcenter_password = "******" vcenter_info.vcenter_datacenter_name = "fake_datacenter" vcenter_info.vcenter_cluster_name = "fake_cluster" vcenter_info.vcenter_datastore_name = "fake_share_name" vcenter_info.vcenter_network_name = "fake_network" self.assertEqual(4, len(cluster_metadata.cluster_nodes)) vsphere.match_node_metadata_to_vcenter(self.m_vim_cluster, cluster_metadata) self.assertEqual(4, len(cluster_metadata.cluster_nodes)) for index, cluster_node in enumerate(cluster_metadata.cluster_nodes): self.assertEqual("fake_host_%d" % index, cluster_node.id)
def test_lookup_datastore_does_not_exist(self, m_SmartConnectNoSSL): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") with vsphere: datastore = vsphere.lookup_datastore(self.m_vim_cluster, "this_is_a_non_existent_datastore") self.assertIsNone(datastore)
def test_lookup_datastore_mounted_on_all_hosts(self, m_SmartConnectNoSSL): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") with vsphere: datastore = vsphere.lookup_datastore(self.m_vim_cluster, "fake_datastore") self.assertIsInstance(datastore, vim.Datastore) self.assertEqual(datastore.name, "fake_datastore")
def test_lookup_datastore_host_not_found(self, m_SmartConnectNoSSL): vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") with vsphere: with self.assertRaises(CurieTestException) as ar: vsphere.lookup_datastore(self.m_vim_cluster, "fake_datastore", "this_is_a_non_existent_host") self.assertEqual("Host 'this_is_a_non_existent_host' not found", str(ar.exception))
def test_lookup_datastore_not_on_all_hosts(self, m_SmartConnectNoSSL): m_some_other_datastore = mock.Mock(spec=vim.Datastore) m_some_other_datastore.name = "some_other_datastore" self.m_vim_cluster.host[0].datastore = [m_some_other_datastore] vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") with vsphere: datastore = vsphere.lookup_datastore(self.m_vim_cluster, "fake_datastore") self.assertIsNone(datastore)
def is_ready(self): """See 'NodeUtil.is_ready' documentation for further details. Confirms node is ready by requesting node's health info from Vsphere corresponding to the node. Raises: CurieTestException: If the VsanNodeUtil's node is not found (passed through from __get_vim_host). """ with VsphereVcenter( self.__vcenter_info.vcenter_host, self.__vcenter_info.decrypt_field("vcenter_user"), self.__vcenter_info.decrypt_field( "vcenter_password")) as vcenter: vim_host = self.__get_vim_host(vcenter) return self.__vim_host_is_ready(vim_host)
def test_find_datastore_paths_flat(self, m_WaitForTask, m_SmartConnectNoSSL): m_datastore = mock.Mock(spec=vim.Datastore) m_task = mock.Mock() m_search_result = mock.Mock() m_search_result.folderPath = "[rtptest1]" m_task.info.result = m_search_result m_fileinfo_1 = mock.Mock() m_fileinfo_1.path = "__curie_goldimage_1416468224265211271_ubuntu1604_DSS" m_fileinfo_2 = mock.Mock() m_fileinfo_2.path = "__curie_goldimage_1416468224265211271_ubuntu1604_OLTP" m_search_result.file = [m_fileinfo_1, m_fileinfo_2] m_datastore.browser.Search.return_value = m_task vsphere = VsphereVcenter(vcenter_host="fake_vcenter", vcenter_user="******", vcenter_password="******") with vsphere: paths = vsphere.find_datastore_paths("__curie_goldimage*", m_datastore) self.assertEqual([ "[rtptest1]__curie_goldimage_1416468224265211271_ubuntu1604_DSS", "[rtptest1]__curie_goldimage_1416468224265211271_ubuntu1604_OLTP"], paths)
def _open_vcenter_connection(self): return VsphereVcenter( self._vcenter_info.vcenter_host, self._vcenter_info.decrypt_field("vcenter_user"), self._vcenter_info.decrypt_field("vcenter_password"))