vmware: PBM wsdl file configuration

Currently the PBM wsdl files have to be downloaded to the local file
system and needs to be configured in 'pbm_wsdl_location'. If it is
manually configured then PBM feature is enabled.

This patch does away with the manual configuration of
'pbm_wsdl_location'. PBM wsdl files are now shipped with the driver.
VC version is fetched from the backend server and the corresponding
wsdl file is used. If the backend is a VC version that is less than
5.5 then PBM feature is turned off.

Implements: blueprint vmdk-storage-policy-volume-type
Change-Id: I559006b532fa39aab6d54cb0b21d5f7afba62af3
This commit is contained in:
Subramanian Neelakantan 2013-12-11 19:19:37 +05:30
parent 07ad47ef80
commit 10c5c93925
8 changed files with 2204 additions and 46 deletions

View File

@ -17,6 +17,9 @@
Test suite for VMware VMDK driver.
"""
from distutils.version import LooseVersion
import os
import mock
import mox
@ -1053,34 +1056,88 @@ class VMwareEsxVmdkDriverTestCase(test.TestCase):
class VMwareVcVmdkDriverTestCase(VMwareEsxVmdkDriverTestCase):
"""Test class for VMwareVcVmdkDriver."""
PBM_WSDL = '/fake/wsdl/path'
DEFAULT_PROFILE = 'fakeProfile'
DEFAULT_VC_VERSION = '5.5'
def setUp(self):
super(VMwareVcVmdkDriverTestCase, self).setUp()
self._config.pbm_wsdl_location = self.PBM_WSDL
self._config.pbm_default_policy = self.DEFAULT_PROFILE
self._config.vmware_host_version = self.DEFAULT_VC_VERSION
self._driver = vmdk.VMwareVcVmdkDriver(configuration=self._config)
def test_get_pbm_wsdl_location(self):
# no version returns None
wsdl = self._driver._get_pbm_wsdl_location(None)
self.assertIsNone(wsdl)
def expected_wsdl(version):
driver_dir = os.path.join(os.path.dirname(__file__), '..',
'volume', 'drivers', 'vmware')
driver_abs_dir = os.path.abspath(driver_dir)
return 'file://' + os.path.join(driver_abs_dir, 'wsdl', version,
'pbmService.wsdl')
# verify wsdl path for different version strings
with mock.patch('os.path.exists') as path_exists:
path_exists.return_value = True
wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5'))
self.assertEqual(expected_wsdl('5'), wsdl)
wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5'))
self.assertEqual(expected_wsdl('5.5'), wsdl)
wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5.1'))
self.assertEqual(expected_wsdl('5.5'), wsdl)
# if wsdl path does not exist, then it returns None
path_exists.return_value = False
wsdl = self._driver._get_pbm_wsdl_location(LooseVersion('5.5'))
self.assertIsNone(wsdl)
@mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.'
'session', new_callable=mock.PropertyMock)
def test_get_vc_version(self, session):
# test config overrides fetching from VC server
version = self._driver._get_vc_version()
self.assertEqual(self.DEFAULT_VC_VERSION, version)
# explicitly remove config entry
self._driver.configuration.vmware_host_version = None
session.return_value.vim.service_content.about.version = '6.0.1'
version = self._driver._get_vc_version()
self.assertEqual(LooseVersion('6.0.1'), version)
@mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.'
'_get_pbm_wsdl_location')
@mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.'
'_get_vc_version')
@mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.'
'session', new_callable=mock.PropertyMock)
@mock.patch('cinder.volume.drivers.vmware.vmdk.VMwareVcVmdkDriver.'
'volumeops', new_callable=mock.PropertyMock)
def test_do_setup(self, vol_ops, session):
"""Test do_setup."""
def test_do_setup(self, vol_ops, session, _get_vc_version,
_get_pbm_wsdl_location):
vol_ops = vol_ops.return_value
session = session.return_value
# pbm_wsdl_location is set and pbm_default_policy is used
# pbm is enabled and pbm_default_policy is used
_get_vc_version.return_value = LooseVersion('5.5')
_get_pbm_wsdl_location.return_value = 'fake_pbm_location'
self._driver.do_setup(mock.ANY)
default = self.DEFAULT_PROFILE
vol_ops.retrieve_profile_id.assert_called_once_with(default)
# pbm_wsdl_location is set and pbm_default_policy is wrong
self.assertTrue(self._driver._storage_policy_enabled)
# pbm is enabled and pbm_default_policy is wrong
self._driver._storage_policy_enabled = False
vol_ops.retrieve_profile_id.reset_mock()
vol_ops.retrieve_profile_id.return_value = None
self.assertRaises(error_util.PbmDefaultPolicyDoesNotExist,
self._driver.do_setup, mock.ANY)
# pbm_wsdl_location is not set
self._driver.configuration.pbm_wsdl_location = None
vol_ops.retrieve_profile_id.assert_called_once_with(default)
# pbm is disabled
self._driver._storage_policy_enabled = False
vol_ops.retrieve_profile_id.reset_mock()
_get_vc_version.return_value = LooseVersion('5.0')
self._driver.do_setup(mock.ANY)
self.assertFalse(self._driver._storage_policy_enabled)
self.assertFalse(vol_ops.retrieve_profile_id.called)
def test_init_conn_with_instance_and_backing(self):
"""Test initialize_connection with instance and backing."""

View File

@ -22,9 +22,13 @@ driver creates a virtual machine for each of the volumes. This virtual
machine is never powered on and is often referred as the shadow VM.
"""
import distutils.version as dist_version # pylint: disable=E0611
import os
from oslo.config import cfg
from cinder import exception
from cinder.openstack.common import excutils
from cinder.openstack.common import log as logging
from cinder import units
from cinder.volume import driver
@ -80,18 +84,18 @@ vmdk_opts = [
'Query results will be obtained in batches from the '
'server and not in one shot. Server may still limit the '
'count to something less than the configured value.'),
cfg.StrOpt('vmware_host_version',
help='Optional string specifying the VMware VC server version. '
'The driver attempts to retrieve the version from VMware '
'VC server. Set this configuration only if you want to '
'override the VC server version.'),
]
spbm_opts = [
cfg.StrOpt('pbm_wsdl_location',
help='PBM service WSDL file location URL. '
'e.g. file:///opt/SDK/spbm/wsdl/pbmService.wsdl. '
'Not setting this will disable storage policy based '
'placement of volumes.'),
cfg.StrOpt('pbm_default_policy',
help='The PBM default policy. If pbm_wsdl_location is set and '
'there is no defined storage policy for the specific '
'request then this policy will be used.'),
help='The PBM default policy. If using VC server version 5.5 '
'or above and there is no defined storage policy for the '
'specific request then this policy will be used.'),
]
CONF = cfg.CONF
@ -193,13 +197,16 @@ class VMwareEsxVmdkDriver(driver.VolumeDriver):
if not getattr(self.configuration, param, None):
raise exception.InvalidInput(_("%s not set.") % param)
# Create the session object for the first time
max_objects = self.configuration.vmware_max_objects_retrieval
self._volumeops = volumeops.VMwareVolumeOps(self.session, max_objects)
LOG.info(_("Successfully setup driver: %(driver)s for "
"server: %(ip)s.") %
{'driver': self.__class__.__name__,
'ip': self.configuration.vmware_host_ip})
# Create the session object for the first time for ESX driver
driver = self.__class__.__name__
if driver == 'VMwareEsxVmdkDriver':
max_objects = self.configuration.vmware_max_objects_retrieval
self._volumeops = volumeops.VMwareVolumeOps(self.session,
max_objects)
LOG.info(_("Successfully setup driver: %(driver)s for "
"server: %(ip)s.") %
{'driver': driver,
'ip': self.configuration.vmware_host_ip})
def check_for_setup_error(self):
pass
@ -960,6 +967,9 @@ class VMwareEsxVmdkDriver(driver.VolumeDriver):
class VMwareVcVmdkDriver(VMwareEsxVmdkDriver):
"""Manage volumes on VMware VC server."""
# PBM is enabled only for VC versions 5.5 and above
PBM_ENABLED_VC_VERSION = dist_version.LooseVersion('5.5')
def __init__(self, *args, **kwargs):
super(VMwareVcVmdkDriver, self).__init__(*args, **kwargs)
self.configuration.append_config_values(spbm_opts)
@ -974,7 +984,7 @@ class VMwareVcVmdkDriver(VMwareEsxVmdkDriver):
api_retry_count = self.configuration.vmware_api_retry_count
task_poll_interval = self.configuration.vmware_task_poll_interval
wsdl_loc = self.configuration.safe_get('vmware_wsdl_location')
pbm_wsdl = self.configuration.pbm_wsdl_location
pbm_wsdl = self.pbm_wsdl if hasattr(self, 'pbm_wsdl') else None
self._session = api.VMwareAPISession(ip, username,
password, api_retry_count,
task_poll_interval,
@ -982,29 +992,88 @@ class VMwareVcVmdkDriver(VMwareEsxVmdkDriver):
pbm_wsdl=pbm_wsdl)
return self._session
def _get_pbm_wsdl_location(self, vc_version):
"""Return PBM WSDL file location corresponding to VC version."""
if not vc_version:
return
ver = str(vc_version).split('.')
major_minor = ver[0]
if len(ver) >= 2:
major_minor = major_minor + '.' + ver[1]
curr_dir = os.path.abspath(os.path.dirname(__file__))
pbm_service_wsdl = os.path.join(curr_dir, 'wsdl', major_minor,
'pbmService.wsdl')
if not os.path.exists(pbm_service_wsdl):
LOG.warn(_("PBM WSDL file %s is missing!"), pbm_service_wsdl)
return
pbm_wsdl = 'file://' + pbm_service_wsdl
LOG.info(_("Using PBM WSDL location: %s"), pbm_wsdl)
return pbm_wsdl
def _get_vc_version(self):
"""Connect to VC server and fetch version.
Can be over-ridden by setting 'vmware_host_version' config.
:returns: VC version as a LooseVersion object
"""
version_str = self.configuration.vmware_host_version
if version_str:
LOG.info(_("Using overridden vmware_host_version from config: "
"%s"), version_str)
else:
version_str = self.session.vim.service_content.about.version
LOG.info(_("Fetched VC server version: %s"), version_str)
# convert version_str to LooseVersion and return
version = None
try:
version = dist_version.LooseVersion(version_str)
except Exception:
with excutils.save_and_reraise_exception():
LOG.exception(_("Version string '%s' is not parseable"),
version_str)
return version
def do_setup(self, context):
"""Any initialization the volume driver does while starting."""
super(VMwareVcVmdkDriver, self).do_setup(context)
# VC specific setup is done here
pbm_wsdl = self.configuration.pbm_wsdl_location
# Enable pbm only if VC version is greater than 5.5
vc_version = self._get_vc_version()
if vc_version and vc_version >= self.PBM_ENABLED_VC_VERSION:
self.pbm_wsdl = self._get_pbm_wsdl_location(vc_version)
if not self.pbm_wsdl:
LOG.error(_("Not able to configure PBM for VC server: %s"),
vc_version)
raise error_util.VMwareDriverException()
self._storage_policy_enabled = True
# Destroy current session so that it is recreated with pbm enabled
self._session = None
# recreate session and initialize volumeops
max_objects = self.configuration.vmware_max_objects_retrieval
self._volumeops = volumeops.VMwareVolumeOps(self.session, max_objects)
# if default policy is configured verify it exists in VC
default_policy = self.configuration.pbm_default_policy
if not pbm_wsdl:
if default_policy:
LOG.warn(_("Ignoring %s since pbm_wsdl_location is not "
"set."), default_policy)
return
# pbm_wsdl is set, so storage policy should be enabled
self._storage_policy_enabled = True
# now verify the default policy exists in VC
if default_policy:
if not self.volumeops.retrieve_profile_id(default_policy):
msg = _("The configured default PBM policy '%s' is not "
"defined on vCenter Server.") % default_policy
raise error_util.PbmDefaultPolicyDoesNotExist(message=msg)
if not self._storage_policy_enabled:
LOG.warn(_("Ignoring default policy '%(policy)s' since "
"Storage Policy Based Management is not "
"enabled on VC version %(ver)s") %
{'policy': default_policy, 'ver': vc_version})
else:
if not self.volumeops.retrieve_profile_id(default_policy):
msg = _("The configured default PBM policy '%s' is not "
"defined on vCenter Server.") % default_policy
raise error_util.PbmDefaultPolicyDoesNotExist(message=msg)
LOG.info(_("Successfully verified existence of "
"pbm_default_policy: %s."), default_policy)
LOG.info(_("Successfully setup driver: %(driver)s for server: "
"%(ip)s.") % {'driver': self.__class__.__name__,
'ip': self.configuration.vmware_host_ip})
def _get_volume_group_folder(self, datacenter):
"""Get volume group folder.

View File

@ -0,0 +1,242 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright 2005-2013 VMware, Inc. All rights reserved.
-->
<schema
targetNamespace="urn:vim25"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:vim25="urn:vim25"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
>
<complexType name="DynamicArray">
<sequence>
<element name="dynamicType" type="xsd:string" minOccurs="0" />
<element name="val" type="xsd:anyType" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="DynamicData">
<sequence>
<element name="dynamicType" type="xsd:string" minOccurs="0" />
<element name="dynamicProperty" type="vim25:DynamicProperty" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="DynamicProperty">
<sequence>
<element name="name" type="xsd:string" />
<element name="val" type="xsd:anyType" />
</sequence>
</complexType>
<complexType name="ArrayOfDynamicProperty">
<sequence>
<element name="DynamicProperty" type="vim25:DynamicProperty" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="KeyAnyValue">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="key" type="xsd:string" />
<element name="value" type="xsd:anyType" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfKeyAnyValue">
<sequence>
<element name="KeyAnyValue" type="vim25:KeyAnyValue" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="LocalizableMessage">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="key" type="xsd:string" />
<element name="arg" type="vim25:KeyAnyValue" minOccurs="0" maxOccurs="unbounded" />
<element name="message" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfLocalizableMessage">
<sequence>
<element name="LocalizableMessage" type="vim25:LocalizableMessage" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="HostCommunication">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="HostNotConnected">
<complexContent>
<extension base="vim25:HostCommunication">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="HostNotReachable">
<complexContent>
<extension base="vim25:HostCommunication">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="InvalidArgument">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
<element name="invalidProperty" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="InvalidRequest">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="InvalidType">
<complexContent>
<extension base="vim25:InvalidRequest">
<sequence>
<element name="argument" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ManagedObjectNotFound">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
<element name="obj" type="vim25:ManagedObjectReference" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="MethodNotFound">
<complexContent>
<extension base="vim25:InvalidRequest">
<sequence>
<element name="receiver" type="vim25:ManagedObjectReference" />
<element name="method" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="NotEnoughLicenses">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="NotImplemented">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="NotSupported">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="RequestCanceled">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="SecurityError">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="SystemError">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
<element name="reason" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="UnexpectedFault">
<complexContent>
<extension base="vim25:RuntimeFault">
<sequence>
<element name="faultName" type="xsd:string" />
<element name="fault" type="vim25:LocalizedMethodFault" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="LocalizedMethodFault">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="fault" type="vim25:MethodFault" />
<element name="localizedMessage" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="MethodFault">
<sequence>
<element name="dynamicType" type="xsd:string" minOccurs="0" />
<element name="dynamicProperty" type="vim25:DynamicProperty" minOccurs="0" maxOccurs="unbounded" />
<element name="faultCause" type="vim25:LocalizedMethodFault" minOccurs="0" />
<element name="faultMessage" type="vim25:LocalizableMessage" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="ArrayOfMethodFault">
<sequence>
<element name="MethodFault" type="vim25:MethodFault" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="RuntimeFault">
<complexContent>
<extension base="vim25:MethodFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ManagedObjectReference">
<simpleContent>
<extension base="xsd:string">
<attribute name="type" type="xsd:string"/>
</extension>
</simpleContent>
</complexType>
<complexType name="ArrayOfString">
<sequence>
<element name="string" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="ArrayOfAnyType">
<sequence>
<element name="anyType" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</schema>

View File

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright 2005-2013 VMware, Inc. All rights reserved.
-->
<schema
targetNamespace="urn:pbm"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:pbm="urn:pbm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:vim25="urn:vim25"
elementFormDefault="qualified"
>
<import namespace="urn:vim25" schemaLocation="core-types.xsd" />
<include schemaLocation="pbm-types.xsd" />
<complexType name="PbmRetrieveServiceContentRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
</sequence>
</complexType>
<complexType name="PbmCheckComplianceRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entities" type="pbm:PbmServerObjectRef" maxOccurs="unbounded" />
<element name="profile" type="pbm:PbmProfileId" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmFetchComplianceResultRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entities" type="pbm:PbmServerObjectRef" maxOccurs="unbounded" />
<element name="profile" type="pbm:PbmProfileId" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmCheckRollupComplianceRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entity" type="pbm:PbmServerObjectRef" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmFetchRollupComplianceResultRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entity" type="pbm:PbmServerObjectRef" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmQueryMatchingHubRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="hubsToSearch" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
<element name="profile" type="pbm:PbmProfileId" />
</sequence>
</complexType>
<complexType name="PbmQueryMatchingHubWithSpecRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="hubsToSearch" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
<element name="createSpec" type="pbm:PbmCapabilityProfileCreateSpec" />
</sequence>
</complexType>
<complexType name="PbmCheckCompatibilityRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="hubsToSearch" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
<element name="profile" type="pbm:PbmProfileId" />
</sequence>
</complexType>
<complexType name="PbmCheckCompatibilityWithSpecRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="hubsToSearch" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
<element name="profileSpec" type="pbm:PbmCapabilityProfileCreateSpec" />
</sequence>
</complexType>
<complexType name="PbmFetchResourceTypeRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
</sequence>
</complexType>
<complexType name="PbmFetchVendorInfoRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="resourceType" type="pbm:PbmProfileResourceType" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmFetchCapabilityMetadataRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="resourceType" type="pbm:PbmProfileResourceType" minOccurs="0" />
<element name="vendorUuid" type="xsd:string" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmCreateRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="createSpec" type="pbm:PbmCapabilityProfileCreateSpec" />
</sequence>
</complexType>
<complexType name="PbmUpdateRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="profileId" type="pbm:PbmProfileId" />
<element name="updateSpec" type="pbm:PbmCapabilityProfileUpdateSpec" />
</sequence>
</complexType>
<complexType name="PbmDeleteRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="profileId" type="pbm:PbmProfileId" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmQueryProfileRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="resourceType" type="pbm:PbmProfileResourceType" />
<element name="profileCategory" type="xsd:string" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmRetrieveContentRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="profileIds" type="pbm:PbmProfileId" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmQueryAssociatedProfilesRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entities" type="pbm:PbmServerObjectRef" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmQueryAssociatedProfileRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="entity" type="pbm:PbmServerObjectRef" />
</sequence>
</complexType>
<complexType name="PbmQueryAssociatedEntityRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="profile" type="pbm:PbmProfileId" />
<element name="entityType" type="xsd:string" minOccurs="0" />
</sequence>
</complexType>
<complexType name="PbmQueryDefaultRequirementProfileRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="hub" type="pbm:PbmPlacementHub" />
</sequence>
</complexType>
<complexType name="PbmResetDefaultRequirementProfileRequestType">
<sequence>
<element name="_this" type="vim25:ManagedObjectReference" />
<element name="profile" type="pbm:PbmProfileId" minOccurs="0" />
</sequence>
</complexType>
</schema>

View File

@ -0,0 +1,729 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright 2005-2013 VMware, Inc. All rights reserved.
-->
<schema
targetNamespace="urn:pbm"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:pbm="urn:pbm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:vim25="urn:vim25"
elementFormDefault="qualified"
>
<import namespace="urn:vim25" schemaLocation="core-types.xsd" />
<complexType name="PbmAboutInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="name" type="xsd:string" />
<element name="version" type="xsd:string" />
<element name="instanceUuid" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmExtendedElementDescription">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="label" type="xsd:string" />
<element name="summary" type="xsd:string" />
<element name="key" type="xsd:string" />
<element name="messageCatalogKeyPrefix" type="xsd:string" />
<element name="messageArg" type="vim25:KeyAnyValue" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<simpleType name="PbmVvolType">
<restriction base="xsd:string">
<enumeration value="Config" />
<enumeration value="Data" />
<enumeration value="Swap" />
</restriction>
</simpleType>
<simpleType name="PbmObjectType">
<restriction base="xsd:string">
<enumeration value="virtualMachine" />
<enumeration value="virtualDiskId" />
<enumeration value="virtualDiskUUID" />
<enumeration value="datastore" />
<enumeration value="unknown" />
</restriction>
</simpleType>
<complexType name="PbmServerObjectRef">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="objectType" type="xsd:string" />
<element name="key" type="xsd:string" />
<element name="serverUuid" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmServerObjectRef">
<sequence>
<element name="PbmServerObjectRef" type="pbm:PbmServerObjectRef" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmServiceInstanceContent">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="aboutInfo" type="pbm:PbmAboutInfo" />
<element name="sessionManager" type="vim25:ManagedObjectReference" />
<element name="capabilityMetadataManager" type="vim25:ManagedObjectReference" />
<element name="profileManager" type="vim25:ManagedObjectReference" />
<element name="complianceManager" type="vim25:ManagedObjectReference" />
<element name="placementSolver" type="vim25:ManagedObjectReference" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityInstance">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="id" type="pbm:PbmCapabilityMetadataUniqueId" />
<element name="constraint" type="pbm:PbmCapabilityConstraintInstance" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityInstance">
<sequence>
<element name="PbmCapabilityInstance" type="pbm:PbmCapabilityInstance" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityMetadataUniqueId">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="namespace" type="xsd:string" />
<element name="id" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityMetadata">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="id" type="pbm:PbmCapabilityMetadataUniqueId" />
<element name="summary" type="pbm:PbmExtendedElementDescription" />
<element name="mandatory" type="xsd:boolean" minOccurs="0" />
<element name="hint" type="xsd:boolean" minOccurs="0" />
<element name="keyId" type="xsd:string" minOccurs="0" />
<element name="allowMultipleConstraints" type="xsd:boolean" minOccurs="0" />
<element name="propertyMetadata" type="pbm:PbmCapabilityPropertyMetadata" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityMetadata">
<sequence>
<element name="PbmCapabilityMetadata" type="pbm:PbmCapabilityMetadata" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityConstraintInstance">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="propertyInstance" type="pbm:PbmCapabilityPropertyInstance" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityConstraintInstance">
<sequence>
<element name="PbmCapabilityConstraintInstance" type="pbm:PbmCapabilityConstraintInstance" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityGenericTypeInfo">
<complexContent>
<extension base="pbm:PbmCapabilityTypeInfo">
<sequence>
<element name="genericTypeName" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityPropertyInstance">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="id" type="xsd:string" />
<element name="value" type="xsd:anyType" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityPropertyInstance">
<sequence>
<element name="PbmCapabilityPropertyInstance" type="pbm:PbmCapabilityPropertyInstance" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityPropertyMetadata">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="id" type="xsd:string" />
<element name="summary" type="pbm:PbmExtendedElementDescription" />
<element name="mandatory" type="xsd:boolean" />
<element name="type" type="pbm:PbmCapabilityTypeInfo" minOccurs="0" />
<element name="defaultValue" type="xsd:anyType" minOccurs="0" />
<element name="allowedValue" type="xsd:anyType" minOccurs="0" />
<element name="requirementsTypeHint" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityPropertyMetadata">
<sequence>
<element name="PbmCapabilityPropertyMetadata" type="pbm:PbmCapabilityPropertyMetadata" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityTypeInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="typeName" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityMetadataPerCategory">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="subCategory" type="xsd:string" />
<element name="capabilityMetadata" type="pbm:PbmCapabilityMetadata" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityMetadataPerCategory">
<sequence>
<element name="PbmCapabilityMetadataPerCategory" type="pbm:PbmCapabilityMetadataPerCategory" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilitySchemaVendorInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="vendorUuid" type="xsd:string" />
<element name="info" type="pbm:PbmExtendedElementDescription" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityNamespaceInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="version" type="xsd:string" />
<element name="namespace" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityVendorResourceTypeInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="resourceType" type="xsd:string" />
<element name="vendorNamespaceInfo" type="pbm:PbmCapabilityVendorNamespaceInfo" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityVendorResourceTypeInfo">
<sequence>
<element name="PbmCapabilityVendorResourceTypeInfo" type="pbm:PbmCapabilityVendorResourceTypeInfo" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilityVendorNamespaceInfo">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="vendorInfo" type="pbm:PbmCapabilitySchemaVendorInfo" />
<element name="namespaceInfo" type="pbm:PbmCapabilityNamespaceInfo" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilityVendorNamespaceInfo">
<sequence>
<element name="PbmCapabilityVendorNamespaceInfo" type="pbm:PbmCapabilityVendorNamespaceInfo" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilitySchema">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="vendorInfo" type="pbm:PbmCapabilitySchemaVendorInfo" />
<element name="namespaceInfo" type="pbm:PbmCapabilityNamespaceInfo" />
<element name="capabilityMetadataPerCategory" type="pbm:PbmCapabilityMetadataPerCategory" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilitySchema">
<sequence>
<element name="PbmCapabilitySchema" type="pbm:PbmCapabilitySchema" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<simpleType name="PbmBuiltinGenericType">
<restriction base="xsd:string">
<enumeration value="VMW_RANGE" />
<enumeration value="VMW_SET" />
</restriction>
</simpleType>
<simpleType name="PbmBuiltinType">
<restriction base="xsd:string">
<enumeration value="XSD_LONG" />
<enumeration value="XSD_SHORT" />
<enumeration value="XSD_INTEGER" />
<enumeration value="XSD_INT" />
<enumeration value="XSD_STRING" />
<enumeration value="XSD_BOOLEAN" />
<enumeration value="XSD_DOUBLE" />
<enumeration value="XSD_DATETIME" />
<enumeration value="VMW_TIMESPAN" />
</restriction>
</simpleType>
<complexType name="PbmCapabilityDescription">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="description" type="pbm:PbmExtendedElementDescription" />
<element name="value" type="xsd:anyType" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityDiscreteSet">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="values" type="xsd:anyType" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityRange">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="min" type="xsd:anyType" />
<element name="max" type="xsd:anyType" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityTimeSpan">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="value" type="xsd:int" />
<element name="unit" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<simpleType name="PbmCapabilityTimeUnitType">
<restriction base="xsd:string">
<enumeration value="SECONDS" />
<enumeration value="MINUTES" />
<enumeration value="HOURS" />
<enumeration value="DAYS" />
<enumeration value="WEEKS" />
<enumeration value="MONTHS" />
<enumeration value="YEARS" />
</restriction>
</simpleType>
<simpleType name="PbmComplianceStatus">
<restriction base="xsd:string">
<enumeration value="compliant" />
<enumeration value="nonCompliant" />
<enumeration value="unknown" />
<enumeration value="notApplicable" />
</restriction>
</simpleType>
<complexType name="PbmComplianceResult">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="checkTime" type="xsd:dateTime" />
<element name="entity" type="pbm:PbmServerObjectRef" />
<element name="profile" type="pbm:PbmProfileId" minOccurs="0" />
<element name="complianceStatus" type="xsd:string" />
<element name="mismatch" type="xsd:boolean" />
<element name="violatedPolicies" type="pbm:PbmCompliancePolicyStatus" minOccurs="0" maxOccurs="unbounded" />
<element name="operationalStatus" type="pbm:PbmComplianceOperationalStatus" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmComplianceResult">
<sequence>
<element name="PbmComplianceResult" type="pbm:PbmComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmComplianceOperationalStatus">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="healthy" type="xsd:boolean" minOccurs="0" />
<element name="operationETA" type="xsd:dateTime" minOccurs="0" />
<element name="operationProgress" type="xsd:long" minOccurs="0" />
<element name="transitional" type="xsd:boolean" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCompliancePolicyStatus">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="expectedValue" type="pbm:PbmCapabilityInstance" />
<element name="currentValue" type="pbm:PbmCapabilityInstance" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCompliancePolicyStatus">
<sequence>
<element name="PbmCompliancePolicyStatus" type="pbm:PbmCompliancePolicyStatus" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmRollupComplianceResult">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="oldestCheckTime" type="xsd:dateTime" />
<element name="entity" type="pbm:PbmServerObjectRef" />
<element name="overallComplianceStatus" type="xsd:string" />
<element name="result" type="pbm:PbmComplianceResult" minOccurs="0" maxOccurs="unbounded" />
<element name="profileMismatch" type="xsd:boolean" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmRollupComplianceResult">
<sequence>
<element name="PbmRollupComplianceResult" type="pbm:PbmRollupComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmAlreadyExists">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
<element name="name" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityProfilePropertyMismatchFault">
<complexContent>
<extension base="pbm:PbmPropertyMismatchFault">
<sequence>
<element name="resourcePropertyInstance" type="pbm:PbmCapabilityPropertyInstance" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCompatibilityCheckFault">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
<element name="hub" type="pbm:PbmPlacementHub" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmDefaultProfileAppliesFault">
<complexContent>
<extension base="pbm:PbmCompatibilityCheckFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmDuplicateName">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
<element name="name" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmIncompatibleVendorSpecificRuleSet">
<complexContent>
<extension base="pbm:PbmCapabilityProfilePropertyMismatchFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmFaultNotFound">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmFault">
<complexContent>
<extension base="vim25:MethodFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmFaultProfileStorageFault">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmPropertyMismatchFault">
<complexContent>
<extension base="pbm:PbmCompatibilityCheckFault">
<sequence>
<element name="capabilityInstanceId" type="pbm:PbmCapabilityMetadataUniqueId" />
<element name="requirementPropertyInstance" type="pbm:PbmCapabilityPropertyInstance" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmResourceInUse">
<complexContent>
<extension base="pbm:PbmFault">
<sequence>
<element name="type" type="xsd:string" minOccurs="0" />
<element name="name" type="xsd:string" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmPlacementCompatibilityResult">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="hub" type="pbm:PbmPlacementHub" />
<element name="warning" type="vim25:LocalizedMethodFault" minOccurs="0" maxOccurs="unbounded" />
<element name="error" type="vim25:LocalizedMethodFault" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmPlacementCompatibilityResult">
<sequence>
<element name="PbmPlacementCompatibilityResult" type="pbm:PbmPlacementCompatibilityResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmPlacementHub">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="hubType" type="xsd:string" />
<element name="hubId" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmPlacementHub">
<sequence>
<element name="PbmPlacementHub" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<simpleType name="PbmProfileCategoryEnum">
<restriction base="xsd:string">
<enumeration value="REQUIREMENT" />
<enumeration value="RESOURCE" />
</restriction>
</simpleType>
<complexType name="PbmCapabilityProfile">
<complexContent>
<extension base="pbm:PbmProfile">
<sequence>
<element name="profileCategory" type="xsd:string" />
<element name="resourceType" type="pbm:PbmProfileResourceType" />
<element name="constraints" type="pbm:PbmCapabilityConstraints" />
<element name="generationId" type="xsd:long" minOccurs="0" />
<element name="isDefault" type="xsd:boolean" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityProfileCreateSpec">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="name" type="xsd:string" />
<element name="description" type="xsd:string" minOccurs="0" />
<element name="resourceType" type="pbm:PbmProfileResourceType" />
<element name="constraints" type="pbm:PbmCapabilityConstraints" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityProfileUpdateSpec">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="name" type="xsd:string" minOccurs="0" />
<element name="description" type="xsd:string" minOccurs="0" />
<element name="constraints" type="pbm:PbmCapabilityConstraints" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmCapabilityConstraints">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmDefaultCapabilityProfile">
<complexContent>
<extension base="pbm:PbmCapabilityProfile">
<sequence>
<element name="vvolType" type="xsd:string" maxOccurs="unbounded" />
<element name="containerId" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="PbmProfile">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="profileId" type="pbm:PbmProfileId" />
<element name="name" type="xsd:string" />
<element name="description" type="xsd:string" minOccurs="0" />
<element name="creationTime" type="xsd:dateTime" />
<element name="createdBy" type="xsd:string" />
<element name="lastUpdatedTime" type="xsd:dateTime" />
<element name="lastUpdatedBy" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmProfile">
<sequence>
<element name="PbmProfile" type="pbm:PbmProfile" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmProfileId">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="uniqueId" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmProfileId">
<sequence>
<element name="PbmProfileId" type="pbm:PbmProfileId" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmProfileOperationOutcome">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="profileId" type="pbm:PbmProfileId" />
<element name="fault" type="vim25:LocalizedMethodFault" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmProfileOperationOutcome">
<sequence>
<element name="PbmProfileOperationOutcome" type="pbm:PbmProfileOperationOutcome" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmProfileType">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="uniqueId" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmProfileType">
<sequence>
<element name="PbmProfileType" type="pbm:PbmProfileType" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmQueryProfileResult">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="object" type="pbm:PbmServerObjectRef" />
<element name="profileId" type="pbm:PbmProfileId" minOccurs="0" maxOccurs="unbounded" />
<element name="fault" type="vim25:LocalizedMethodFault" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmQueryProfileResult">
<sequence>
<element name="PbmQueryProfileResult" type="pbm:PbmQueryProfileResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmProfileResourceType">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="resourceType" type="xsd:string" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmProfileResourceType">
<sequence>
<element name="PbmProfileResourceType" type="pbm:PbmProfileResourceType" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<simpleType name="PbmProfileResourceTypeEnum">
<restriction base="xsd:string">
<enumeration value="STORAGE" />
</restriction>
</simpleType>
<complexType name="PbmCapabilitySubProfile">
<complexContent>
<extension base="vim25:DynamicData">
<sequence>
<element name="name" type="xsd:string" />
<element name="capability" type="pbm:PbmCapabilityInstance" maxOccurs="unbounded" />
<element name="forceProvision" type="xsd:boolean" minOccurs="0" />
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="ArrayOfPbmCapabilitySubProfile">
<sequence>
<element name="PbmCapabilitySubProfile" type="pbm:PbmCapabilitySubProfile" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
<complexType name="PbmCapabilitySubProfileConstraints">
<complexContent>
<extension base="pbm:PbmCapabilityConstraints">
<sequence>
<element name="subProfiles" type="pbm:PbmCapabilitySubProfile" maxOccurs="unbounded" />
</sequence>
</extension>
</complexContent>
</complexType>
</schema>

View File

@ -0,0 +1,889 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright 2005-2013 VMware, Inc. All rights reserved.
-->
<definitions targetNamespace="urn:pbm"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:pbm="urn:pbm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>
<types>
<schema
targetNamespace="urn:pbm"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:pbm="urn:pbm"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:vim25="urn:vim25"
elementFormDefault="qualified"
>
<import namespace="urn:vim25" schemaLocation="core-types.xsd" />
<include schemaLocation="pbm-messagetypes.xsd" />
<element name="versionURI" type="xsd:string" />
<element name="HostCommunicationFault" type="vim25:HostCommunication"/>
<element name="HostNotConnectedFault" type="vim25:HostNotConnected"/>
<element name="HostNotReachableFault" type="vim25:HostNotReachable"/>
<element name="InvalidArgumentFault" type="vim25:InvalidArgument"/>
<element name="InvalidRequestFault" type="vim25:InvalidRequest"/>
<element name="InvalidTypeFault" type="vim25:InvalidType"/>
<element name="ManagedObjectNotFoundFault" type="vim25:ManagedObjectNotFound"/>
<element name="MethodNotFoundFault" type="vim25:MethodNotFound"/>
<element name="NotEnoughLicensesFault" type="vim25:NotEnoughLicenses"/>
<element name="NotImplementedFault" type="vim25:NotImplemented"/>
<element name="NotSupportedFault" type="vim25:NotSupported"/>
<element name="RequestCanceledFault" type="vim25:RequestCanceled"/>
<element name="SecurityErrorFault" type="vim25:SecurityError"/>
<element name="SystemErrorFault" type="vim25:SystemError"/>
<element name="UnexpectedFaultFault" type="vim25:UnexpectedFault"/>
<element name="MethodFaultFault" type="vim25:MethodFault"/>
<element name="RuntimeFaultFault" type="vim25:RuntimeFault"/>
<element name="PbmRetrieveServiceContent" type="pbm:PbmRetrieveServiceContentRequestType" />
<element name="PbmRetrieveServiceContentResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmServiceInstanceContent" />
</sequence>
</complexType>
</element>
<element name="PbmCheckCompliance" type="pbm:PbmCheckComplianceRequestType" />
<element name="PbmCheckComplianceResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmFetchComplianceResult" type="pbm:PbmFetchComplianceResultRequestType" />
<element name="PbmFetchComplianceResultResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmCheckRollupCompliance" type="pbm:PbmCheckRollupComplianceRequestType" />
<element name="PbmCheckRollupComplianceResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmRollupComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmFetchRollupComplianceResult" type="pbm:PbmFetchRollupComplianceResultRequestType" />
<element name="PbmFetchRollupComplianceResultResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmRollupComplianceResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmAlreadyExistsFault" type="pbm:PbmAlreadyExists"/>
<element name="PbmCapabilityProfilePropertyMismatchFaultFault" type="pbm:PbmCapabilityProfilePropertyMismatchFault"/>
<element name="PbmCompatibilityCheckFaultFault" type="pbm:PbmCompatibilityCheckFault"/>
<element name="PbmDefaultProfileAppliesFaultFault" type="pbm:PbmDefaultProfileAppliesFault"/>
<element name="PbmDuplicateNameFault" type="pbm:PbmDuplicateName"/>
<element name="PbmIncompatibleVendorSpecificRuleSetFault" type="pbm:PbmIncompatibleVendorSpecificRuleSet"/>
<element name="PbmFaultNotFoundFault" type="pbm:PbmFaultNotFound"/>
<element name="PbmFaultFault" type="pbm:PbmFault"/>
<element name="PbmFaultProfileStorageFaultFault" type="pbm:PbmFaultProfileStorageFault"/>
<element name="PbmPropertyMismatchFaultFault" type="pbm:PbmPropertyMismatchFault"/>
<element name="PbmResourceInUseFault" type="pbm:PbmResourceInUse"/>
<element name="PbmQueryMatchingHub" type="pbm:PbmQueryMatchingHubRequestType" />
<element name="PbmQueryMatchingHubResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryMatchingHubWithSpec" type="pbm:PbmQueryMatchingHubWithSpecRequestType" />
<element name="PbmQueryMatchingHubWithSpecResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmPlacementHub" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmCheckCompatibility" type="pbm:PbmCheckCompatibilityRequestType" />
<element name="PbmCheckCompatibilityResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmPlacementCompatibilityResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmCheckCompatibilityWithSpec" type="pbm:PbmCheckCompatibilityWithSpecRequestType" />
<element name="PbmCheckCompatibilityWithSpecResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmPlacementCompatibilityResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmFetchResourceType" type="pbm:PbmFetchResourceTypeRequestType" />
<element name="PbmFetchResourceTypeResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileResourceType" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmFetchVendorInfo" type="pbm:PbmFetchVendorInfoRequestType" />
<element name="PbmFetchVendorInfoResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmCapabilityVendorResourceTypeInfo" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmFetchCapabilityMetadata" type="pbm:PbmFetchCapabilityMetadataRequestType" />
<element name="PbmFetchCapabilityMetadataResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmCapabilityMetadataPerCategory" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmCreate" type="pbm:PbmCreateRequestType" />
<element name="PbmCreateResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileId" />
</sequence>
</complexType>
</element>
<element name="PbmUpdate" type="pbm:PbmUpdateRequestType" />
<element name="PbmUpdateResponse">
<complexType />
</element>
<element name="PbmDelete" type="pbm:PbmDeleteRequestType" />
<element name="PbmDeleteResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileOperationOutcome" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryProfile" type="pbm:PbmQueryProfileRequestType" />
<element name="PbmQueryProfileResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileId" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmRetrieveContent" type="pbm:PbmRetrieveContentRequestType" />
<element name="PbmRetrieveContentResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfile" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryAssociatedProfiles" type="pbm:PbmQueryAssociatedProfilesRequestType" />
<element name="PbmQueryAssociatedProfilesResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmQueryProfileResult" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryAssociatedProfile" type="pbm:PbmQueryAssociatedProfileRequestType" />
<element name="PbmQueryAssociatedProfileResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileId" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryAssociatedEntity" type="pbm:PbmQueryAssociatedEntityRequestType" />
<element name="PbmQueryAssociatedEntityResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmServerObjectRef" minOccurs="0" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<element name="PbmQueryDefaultRequirementProfile" type="pbm:PbmQueryDefaultRequirementProfileRequestType" />
<element name="PbmQueryDefaultRequirementProfileResponse">
<complexType>
<sequence>
<element name="returnval" type="pbm:PbmProfileId" minOccurs="0" />
</sequence>
</complexType>
</element>
<element name="PbmResetDefaultRequirementProfile" type="pbm:PbmResetDefaultRequirementProfileRequestType" />
<element name="PbmResetDefaultRequirementProfileResponse">
<complexType />
</element>
</schema>
</types>
<message name="HostCommunicationFaultMsg">
<part name="fault" element="pbm:HostCommunicationFault" />
</message>
<message name="HostNotConnectedFaultMsg">
<part name="fault" element="pbm:HostNotConnectedFault" />
</message>
<message name="HostNotReachableFaultMsg">
<part name="fault" element="pbm:HostNotReachableFault" />
</message>
<message name="InvalidArgumentFaultMsg">
<part name="fault" element="pbm:InvalidArgumentFault" />
</message>
<message name="InvalidRequestFaultMsg">
<part name="fault" element="pbm:InvalidRequestFault" />
</message>
<message name="InvalidTypeFaultMsg">
<part name="fault" element="pbm:InvalidTypeFault" />
</message>
<message name="ManagedObjectNotFoundFaultMsg">
<part name="fault" element="pbm:ManagedObjectNotFoundFault" />
</message>
<message name="MethodNotFoundFaultMsg">
<part name="fault" element="pbm:MethodNotFoundFault" />
</message>
<message name="NotEnoughLicensesFaultMsg">
<part name="fault" element="pbm:NotEnoughLicensesFault" />
</message>
<message name="NotImplementedFaultMsg">
<part name="fault" element="pbm:NotImplementedFault" />
</message>
<message name="NotSupportedFaultMsg">
<part name="fault" element="pbm:NotSupportedFault" />
</message>
<message name="RequestCanceledFaultMsg">
<part name="fault" element="pbm:RequestCanceledFault" />
</message>
<message name="SecurityErrorFaultMsg">
<part name="fault" element="pbm:SecurityErrorFault" />
</message>
<message name="SystemErrorFaultMsg">
<part name="fault" element="pbm:SystemErrorFault" />
</message>
<message name="UnexpectedFaultFaultMsg">
<part name="fault" element="pbm:UnexpectedFaultFault" />
</message>
<message name="MethodFaultFaultMsg">
<part name="fault" element="pbm:MethodFaultFault" />
</message>
<message name="RuntimeFaultFaultMsg">
<part name="fault" element="pbm:RuntimeFaultFault" />
</message>
<message name="PbmRetrieveServiceContentRequestMsg">
<part name="parameters" element="pbm:PbmRetrieveServiceContent" />
</message>
<message name="PbmRetrieveServiceContentResponseMsg">
<part name="parameters" element="pbm:PbmRetrieveServiceContentResponse" />
</message>
<message name="PbmCheckComplianceRequestMsg">
<part name="parameters" element="pbm:PbmCheckCompliance" />
</message>
<message name="PbmCheckComplianceResponseMsg">
<part name="parameters" element="pbm:PbmCheckComplianceResponse" />
</message>
<message name="PbmFetchComplianceResultRequestMsg">
<part name="parameters" element="pbm:PbmFetchComplianceResult" />
</message>
<message name="PbmFetchComplianceResultResponseMsg">
<part name="parameters" element="pbm:PbmFetchComplianceResultResponse" />
</message>
<message name="PbmCheckRollupComplianceRequestMsg">
<part name="parameters" element="pbm:PbmCheckRollupCompliance" />
</message>
<message name="PbmCheckRollupComplianceResponseMsg">
<part name="parameters" element="pbm:PbmCheckRollupComplianceResponse" />
</message>
<message name="PbmFetchRollupComplianceResultRequestMsg">
<part name="parameters" element="pbm:PbmFetchRollupComplianceResult" />
</message>
<message name="PbmFetchRollupComplianceResultResponseMsg">
<part name="parameters" element="pbm:PbmFetchRollupComplianceResultResponse" />
</message>
<message name="PbmAlreadyExistsFaultMsg">
<part name="fault" element="pbm:PbmAlreadyExistsFault" />
</message>
<message name="PbmCapabilityProfilePropertyMismatchFaultFaultMsg">
<part name="fault" element="pbm:PbmCapabilityProfilePropertyMismatchFaultFault" />
</message>
<message name="PbmCompatibilityCheckFaultFaultMsg">
<part name="fault" element="pbm:PbmCompatibilityCheckFaultFault" />
</message>
<message name="PbmDefaultProfileAppliesFaultFaultMsg">
<part name="fault" element="pbm:PbmDefaultProfileAppliesFaultFault" />
</message>
<message name="PbmDuplicateNameFaultMsg">
<part name="fault" element="pbm:PbmDuplicateNameFault" />
</message>
<message name="PbmIncompatibleVendorSpecificRuleSetFaultMsg">
<part name="fault" element="pbm:PbmIncompatibleVendorSpecificRuleSetFault" />
</message>
<message name="PbmFaultNotFoundFaultMsg">
<part name="fault" element="pbm:PbmFaultNotFoundFault" />
</message>
<message name="PbmFaultFaultMsg">
<part name="fault" element="pbm:PbmFaultFault" />
</message>
<message name="PbmFaultProfileStorageFaultFaultMsg">
<part name="fault" element="pbm:PbmFaultProfileStorageFaultFault" />
</message>
<message name="PbmPropertyMismatchFaultFaultMsg">
<part name="fault" element="pbm:PbmPropertyMismatchFaultFault" />
</message>
<message name="PbmResourceInUseFaultMsg">
<part name="fault" element="pbm:PbmResourceInUseFault" />
</message>
<message name="PbmQueryMatchingHubRequestMsg">
<part name="parameters" element="pbm:PbmQueryMatchingHub" />
</message>
<message name="PbmQueryMatchingHubResponseMsg">
<part name="parameters" element="pbm:PbmQueryMatchingHubResponse" />
</message>
<message name="PbmQueryMatchingHubWithSpecRequestMsg">
<part name="parameters" element="pbm:PbmQueryMatchingHubWithSpec" />
</message>
<message name="PbmQueryMatchingHubWithSpecResponseMsg">
<part name="parameters" element="pbm:PbmQueryMatchingHubWithSpecResponse" />
</message>
<message name="PbmCheckCompatibilityRequestMsg">
<part name="parameters" element="pbm:PbmCheckCompatibility" />
</message>
<message name="PbmCheckCompatibilityResponseMsg">
<part name="parameters" element="pbm:PbmCheckCompatibilityResponse" />
</message>
<message name="PbmCheckCompatibilityWithSpecRequestMsg">
<part name="parameters" element="pbm:PbmCheckCompatibilityWithSpec" />
</message>
<message name="PbmCheckCompatibilityWithSpecResponseMsg">
<part name="parameters" element="pbm:PbmCheckCompatibilityWithSpecResponse" />
</message>
<message name="PbmFetchResourceTypeRequestMsg">
<part name="parameters" element="pbm:PbmFetchResourceType" />
</message>
<message name="PbmFetchResourceTypeResponseMsg">
<part name="parameters" element="pbm:PbmFetchResourceTypeResponse" />
</message>
<message name="PbmFetchVendorInfoRequestMsg">
<part name="parameters" element="pbm:PbmFetchVendorInfo" />
</message>
<message name="PbmFetchVendorInfoResponseMsg">
<part name="parameters" element="pbm:PbmFetchVendorInfoResponse" />
</message>
<message name="PbmFetchCapabilityMetadataRequestMsg">
<part name="parameters" element="pbm:PbmFetchCapabilityMetadata" />
</message>
<message name="PbmFetchCapabilityMetadataResponseMsg">
<part name="parameters" element="pbm:PbmFetchCapabilityMetadataResponse" />
</message>
<message name="PbmCreateRequestMsg">
<part name="parameters" element="pbm:PbmCreate" />
</message>
<message name="PbmCreateResponseMsg">
<part name="parameters" element="pbm:PbmCreateResponse" />
</message>
<message name="PbmUpdateRequestMsg">
<part name="parameters" element="pbm:PbmUpdate" />
</message>
<message name="PbmUpdateResponseMsg">
<part name="parameters" element="pbm:PbmUpdateResponse" />
</message>
<message name="PbmDeleteRequestMsg">
<part name="parameters" element="pbm:PbmDelete" />
</message>
<message name="PbmDeleteResponseMsg">
<part name="parameters" element="pbm:PbmDeleteResponse" />
</message>
<message name="PbmQueryProfileRequestMsg">
<part name="parameters" element="pbm:PbmQueryProfile" />
</message>
<message name="PbmQueryProfileResponseMsg">
<part name="parameters" element="pbm:PbmQueryProfileResponse" />
</message>
<message name="PbmRetrieveContentRequestMsg">
<part name="parameters" element="pbm:PbmRetrieveContent" />
</message>
<message name="PbmRetrieveContentResponseMsg">
<part name="parameters" element="pbm:PbmRetrieveContentResponse" />
</message>
<message name="PbmQueryAssociatedProfilesRequestMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedProfiles" />
</message>
<message name="PbmQueryAssociatedProfilesResponseMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedProfilesResponse" />
</message>
<message name="PbmQueryAssociatedProfileRequestMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedProfile" />
</message>
<message name="PbmQueryAssociatedProfileResponseMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedProfileResponse" />
</message>
<message name="PbmQueryAssociatedEntityRequestMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedEntity" />
</message>
<message name="PbmQueryAssociatedEntityResponseMsg">
<part name="parameters" element="pbm:PbmQueryAssociatedEntityResponse" />
</message>
<message name="PbmQueryDefaultRequirementProfileRequestMsg">
<part name="parameters" element="pbm:PbmQueryDefaultRequirementProfile" />
</message>
<message name="PbmQueryDefaultRequirementProfileResponseMsg">
<part name="parameters" element="pbm:PbmQueryDefaultRequirementProfileResponse" />
</message>
<message name="PbmResetDefaultRequirementProfileRequestMsg">
<part name="parameters" element="pbm:PbmResetDefaultRequirementProfile" />
</message>
<message name="PbmResetDefaultRequirementProfileResponseMsg">
<part name="parameters" element="pbm:PbmResetDefaultRequirementProfileResponse" />
</message>
<portType name="PbmPortType">
<operation name="PbmRetrieveServiceContent">
<input message="pbm:PbmRetrieveServiceContentRequestMsg" />
<output message="pbm:PbmRetrieveServiceContentResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmCheckCompliance">
<input message="pbm:PbmCheckComplianceRequestMsg" />
<output message="pbm:PbmCheckComplianceResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmFetchComplianceResult">
<input message="pbm:PbmFetchComplianceResultRequestMsg" />
<output message="pbm:PbmFetchComplianceResultResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmCheckRollupCompliance">
<input message="pbm:PbmCheckRollupComplianceRequestMsg" />
<output message="pbm:PbmCheckRollupComplianceResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmFetchRollupComplianceResult">
<input message="pbm:PbmFetchRollupComplianceResultRequestMsg" />
<output message="pbm:PbmFetchRollupComplianceResultResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryMatchingHub">
<input message="pbm:PbmQueryMatchingHubRequestMsg" />
<output message="pbm:PbmQueryMatchingHubResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryMatchingHubWithSpec">
<input message="pbm:PbmQueryMatchingHubWithSpecRequestMsg" />
<output message="pbm:PbmQueryMatchingHubWithSpecResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmCheckCompatibility">
<input message="pbm:PbmCheckCompatibilityRequestMsg" />
<output message="pbm:PbmCheckCompatibilityResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmCheckCompatibilityWithSpec">
<input message="pbm:PbmCheckCompatibilityWithSpecRequestMsg" />
<output message="pbm:PbmCheckCompatibilityWithSpecResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmFetchResourceType">
<input message="pbm:PbmFetchResourceTypeRequestMsg" />
<output message="pbm:PbmFetchResourceTypeResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmFetchVendorInfo">
<input message="pbm:PbmFetchVendorInfoRequestMsg" />
<output message="pbm:PbmFetchVendorInfoResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmFetchCapabilityMetadata">
<input message="pbm:PbmFetchCapabilityMetadataRequestMsg" />
<output message="pbm:PbmFetchCapabilityMetadataResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmCreate">
<input message="pbm:PbmCreateRequestMsg" />
<output message="pbm:PbmCreateResponseMsg" />
<fault name="InvalidArgumentFault" message="pbm:InvalidArgumentFaultMsg"/>
<fault name="PbmFaultProfileStorageFaultFault" message="pbm:PbmFaultProfileStorageFaultFaultMsg"/>
<fault name="PbmDuplicateNameFault" message="pbm:PbmDuplicateNameFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmUpdate">
<input message="pbm:PbmUpdateRequestMsg" />
<output message="pbm:PbmUpdateResponseMsg" />
<fault name="InvalidArgumentFault" message="pbm:InvalidArgumentFaultMsg"/>
<fault name="PbmFaultProfileStorageFaultFault" message="pbm:PbmFaultProfileStorageFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmDelete">
<input message="pbm:PbmDeleteRequestMsg" />
<output message="pbm:PbmDeleteResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryProfile">
<input message="pbm:PbmQueryProfileRequestMsg" />
<output message="pbm:PbmQueryProfileResponseMsg" />
<fault name="InvalidArgumentFault" message="pbm:InvalidArgumentFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmRetrieveContent">
<input message="pbm:PbmRetrieveContentRequestMsg" />
<output message="pbm:PbmRetrieveContentResponseMsg" />
<fault name="InvalidArgumentFault" message="pbm:InvalidArgumentFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryAssociatedProfiles">
<input message="pbm:PbmQueryAssociatedProfilesRequestMsg" />
<output message="pbm:PbmQueryAssociatedProfilesResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryAssociatedProfile">
<input message="pbm:PbmQueryAssociatedProfileRequestMsg" />
<output message="pbm:PbmQueryAssociatedProfileResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryAssociatedEntity">
<input message="pbm:PbmQueryAssociatedEntityRequestMsg" />
<output message="pbm:PbmQueryAssociatedEntityResponseMsg" />
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmQueryDefaultRequirementProfile">
<input message="pbm:PbmQueryDefaultRequirementProfileRequestMsg" />
<output message="pbm:PbmQueryDefaultRequirementProfileResponseMsg" />
<fault name="InvalidArgumentFault" message="pbm:InvalidArgumentFaultMsg"/>
<fault name="PbmFaultFault" message="pbm:PbmFaultFaultMsg"/>
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
<operation name="PbmResetDefaultRequirementProfile">
<input message="pbm:PbmResetDefaultRequirementProfileRequestMsg" />
<output message="pbm:PbmResetDefaultRequirementProfileResponseMsg" />
<fault name="RuntimeFault" message="pbm:RuntimeFaultFaultMsg"/>
</operation>
</portType>
<binding name="PbmBinding" type="pbm:PbmPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<operation name="PbmRetrieveServiceContent">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmCheckCompliance">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmFetchComplianceResult">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmCheckRollupCompliance">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmFetchRollupComplianceResult">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryMatchingHub">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryMatchingHubWithSpec">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmCheckCompatibility">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmCheckCompatibilityWithSpec">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmFetchResourceType">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmFetchVendorInfo">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmFetchCapabilityMetadata">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmCreate">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="InvalidArgumentFault">
<soap:fault name="InvalidArgumentFault" use="literal" />
</fault>
<fault name="PbmFaultProfileStorageFaultFault">
<soap:fault name="PbmFaultProfileStorageFaultFault" use="literal" />
</fault>
<fault name="PbmDuplicateNameFault">
<soap:fault name="PbmDuplicateNameFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmUpdate">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="InvalidArgumentFault">
<soap:fault name="InvalidArgumentFault" use="literal" />
</fault>
<fault name="PbmFaultProfileStorageFaultFault">
<soap:fault name="PbmFaultProfileStorageFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmDelete">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryProfile">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="InvalidArgumentFault">
<soap:fault name="InvalidArgumentFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmRetrieveContent">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="InvalidArgumentFault">
<soap:fault name="InvalidArgumentFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryAssociatedProfiles">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryAssociatedProfile">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryAssociatedEntity">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmQueryDefaultRequirementProfile">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="InvalidArgumentFault">
<soap:fault name="InvalidArgumentFault" use="literal" />
</fault>
<fault name="PbmFaultFault">
<soap:fault name="PbmFaultFault" use="literal" />
</fault>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
<operation name="PbmResetDefaultRequirementProfile">
<soap:operation soapAction="urn:pbm/1.0" style="document" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
<fault name="RuntimeFault">
<soap:fault name="RuntimeFault" use="literal" />
</fault>
</operation>
</binding>
</definitions>

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Copyright 2005-2013 VMware, Inc. All rights reserved.
-->
<definitions targetNamespace="urn:pbmService"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:interface="urn:pbm"
>
<import location="pbm.wsdl" namespace="urn:pbm" />
<service name="PbmService">
<port binding="interface:PbmBinding" name="PbmPort">
<soap:address location="http://localhost/pbm/services/pbmService" />
</port>
</service>
</definitions>

View File

@ -1661,15 +1661,10 @@
# Options defined in cinder.volume.drivers.vmware.vmdk
#
# PBM service WSDL file location URL. e.g.
# file:///opt/SDK/spbm/wsdl/pbmService.wsdl. Not setting this
# will disable storage policy based placement of volumes.
# (string value)
#pbm_wsdl_location=<None>
# The PBM default policy. If pbm_wsdl_location is set and
# there is no defined storage policy for the specific request
# then this policy will be used. (string value)
# The PBM default policy. If using VC server version 5.5 or
# above and there is no defined storage policy for the
# specific request then this policy will be used. (string
# value)
#pbm_default_policy=<None>
# IP address for connecting to VMware ESX/VC server. (string
@ -1711,6 +1706,12 @@
# less than the configured value. (integer value)
#vmware_max_objects_retrieval=100
# Optional string specifying the VMware VC server version. The
# driver attempts to retrieve the version from VMware VC
# server. Set this configuration only if you want to override
# the VC server version. (string value)
#vmware_host_version=<None>
#
# Options defined in cinder.volume.drivers.windows.windows