summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-02-17 12:56:45 +0000
committerGerrit Code Review <review@openstack.org>2015-02-17 12:56:45 +0000
commit2950541b3b95fc5af410f5857efb010590f52cd3 (patch)
tree57e7a8920dafc64cdca7066554b019950da2735a
parent8a7046945e668b3e829a46fb95e35b83f28dc0c2 (diff)
parent81ae4431cdd69c71b50388f1991e289395ba0b54 (diff)
downloadoslo-vmware-2950541b3b95fc5af410f5857efb010590f52cd3.tar.gz
Merge "PBM utility method to retrieve profiles of a VM"
-rw-r--r--oslo_vmware/pbm.py18
-rw-r--r--oslo_vmware/tests/test_pbm.py23
2 files changed, 41 insertions, 0 deletions
diff --git a/oslo_vmware/pbm.py b/oslo_vmware/pbm.py
index 99abb61..1ca55bc 100644
--- a/oslo_vmware/pbm.py
+++ b/oslo_vmware/pbm.py
@@ -198,3 +198,21 @@ def get_pbm_wsdl_location(vc_version):
pbm_wsdl = urlparse.urljoin('file:', urllib.pathname2url(pbm_service_wsdl))
LOG.debug("Using PBM WSDL location: %s.", pbm_wsdl)
return pbm_wsdl
+
+
+def get_profiles(session, vm):
+ """Query storage profiles associated with the given vm.
+
+ :param session: VMwareAPISession instance
+ :param vm: vm reference
+ :return: profile IDs
+ """
+ pbm = session.pbm
+ profile_manager = pbm.service_content.profileManager
+
+ object_ref = pbm.client.factory.create('ns0:PbmServerObjectRef')
+ object_ref.key = vm.value
+ object_ref.objectType = 'virtualMachine'
+
+ return session.invoke_api(pbm, 'PbmQueryAssociatedProfile',
+ profile_manager, entity=object_ref)
diff --git a/oslo_vmware/tests/test_pbm.py b/oslo_vmware/tests/test_pbm.py
index 2894e5d..09fd8c1 100644
--- a/oslo_vmware/tests/test_pbm.py
+++ b/oslo_vmware/tests/test_pbm.py
@@ -171,3 +171,26 @@ class PBMUtilityTest(base.TestCase):
path_exists.return_value = False
wsdl = pbm.get_pbm_wsdl_location('5.5')
self.assertIsNone(wsdl)
+
+ def test_get_profiles(self):
+ pbm_service = mock.Mock()
+ session = mock.Mock(pbm=pbm_service)
+
+ object_ref = mock.Mock()
+ pbm_service.client.factory.create.return_value = object_ref
+
+ profile_id = mock.sentinel.profile_id
+ session.invoke_api.return_value = profile_id
+
+ value = 'vm-1'
+ vm = mock.Mock(value=value)
+ ret = pbm.get_profiles(session, vm)
+
+ self.assertEqual(profile_id, ret)
+ session.invoke_api.assert_called_once_with(
+ pbm_service,
+ 'PbmQueryAssociatedProfile',
+ pbm_service.service_content.profileManager,
+ entity=object_ref)
+ self.assertEqual(value, object_ref.key)
+ self.assertEqual('virtualMachine', object_ref.objectType)