diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-02-17 12:56:45 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-02-17 12:56:45 +0000 |
commit | 2950541b3b95fc5af410f5857efb010590f52cd3 (patch) | |
tree | 57e7a8920dafc64cdca7066554b019950da2735a | |
parent | 8a7046945e668b3e829a46fb95e35b83f28dc0c2 (diff) | |
parent | 81ae4431cdd69c71b50388f1991e289395ba0b54 (diff) | |
download | oslo-vmware-2950541b3b95fc5af410f5857efb010590f52cd3.tar.gz |
Merge "PBM utility method to retrieve profiles of a VM"
-rw-r--r-- | oslo_vmware/pbm.py | 18 | ||||
-rw-r--r-- | oslo_vmware/tests/test_pbm.py | 23 |
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) |