Store PBM wsdl in the oslo.vmware git repository

Currently, Cinder stores the PBM WSDL files in its own repository
(see commit: 10c5c93925abe3d34c4430e0ed852d8358fb2353). Now that other
projects are leveraging SPBM, we need to provide them the ability
to directly access those WSDL files without having to store them or
referencing them.

This patch (strongly inspired by the patch mentioned above) adds two
utility APIs and unit tests for it:
- get_pbm_wsdl_location()
- get_vc_version()

Change-Id: I61abc5879e71a7f5e5f46d2ec88404923e0423d8
This commit is contained in:
Arnaud Legendre 2014-06-24 19:12:06 -07:00
parent 05ef356b3d
commit dbcb5f9d1e
10 changed files with 2108 additions and 0 deletions

View File

@ -21,8 +21,12 @@ Refer http://goo.gl/GR2o6U for more details.
"""
import logging
import os
import suds.sax.element as element
import urllib
import urlparse
from oslo.vmware.openstack.common.gettextutils import _LW
from oslo.vmware import service
from oslo.vmware import vim_util
@ -166,3 +170,26 @@ def filter_datastores_by_hubs(hubs, datastores):
if ds.value in hub_ids:
filtered_dss.append(ds)
return filtered_dss
def get_pbm_wsdl_location(vc_version):
"""Return PBM WSDL file location corresponding to VC version.
:param vc_version: a dot-separated version string. For example, "1.2".
:return: the pbm wsdl file location.
"""
if not vc_version:
return
ver = vc_version.split('.')
major_minor = ver[0]
if len(ver) >= 2:
major_minor = '%s.%s' % (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(_LW("PBM WSDL file %s not found."), pbm_service_wsdl)
return
pbm_wsdl = urlparse.urljoin('file:', urllib.pathname2url(pbm_service_wsdl))
LOG.debug("Using PBM WSDL location: %s.", pbm_wsdl)
return pbm_wsdl

View File

@ -414,3 +414,12 @@ def register_extension(vim, key, type, label='OpenStack',
os_ext.description = desc
os_ext.lastHeartbeatTime = timeutils.strtime()
vim.client.service.RegisterExtension(extension_manager, os_ext)
def get_vc_version(session):
"""Return the dot-separated vCenter version string. For example, "1.2".
:param session: vCenter soap session
:return: vCenter version
"""
return session.vim.service_content.about.version

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

@ -17,6 +17,10 @@
Unit tests for PBM utility methods.
"""
import os
import urllib
import urlparse
import mock
from oslo.vmware import pbm
@ -145,3 +149,27 @@ class PBMUtilityTest(base.TestCase):
self.assertEqual(len(hubs), len(filtered_ds))
filtered_ds_values = [ds.value for ds in filtered_ds]
self.assertEqual(set(hub_ids), set(filtered_ds_values))
def test_get_pbm_wsdl_location(self):
wsdl = pbm.get_pbm_wsdl_location(None)
self.assertIsNone(wsdl)
def expected_wsdl(version):
driver_dir = os.path.join(os.path.dirname(__file__), '..',
'oslo', 'vmware')
driver_abs_dir = os.path.abspath(driver_dir)
path = os.path.join(driver_abs_dir, 'wsdl', version,
'pbmService.wsdl')
return urlparse.urljoin('file:', urllib.pathname2url(path))
with mock.patch('os.path.exists') as path_exists:
path_exists.return_value = True
wsdl = pbm.get_pbm_wsdl_location('5')
self.assertEqual(expected_wsdl('5'), wsdl)
wsdl = pbm.get_pbm_wsdl_location('5.5')
self.assertEqual(expected_wsdl('5.5'), wsdl)
wsdl = pbm.get_pbm_wsdl_location('5.5.1')
self.assertEqual(expected_wsdl('5.5'), wsdl)
path_exists.return_value = False
wsdl = pbm.get_pbm_wsdl_location('5.5')
self.assertIsNone(wsdl)

View File

@ -308,3 +308,14 @@ class VimUtilTest(base.TestCase):
service_content = vim.service_content
vim.client.service.RegisterExtension.assert_called_once_with(
service_content.extensionManager, mock.ANY)
def test_get_vc_version(self):
session = mock.Mock()
expected_version = '6.0.1'
session.vim.service_content.about.version = expected_version
version = vim_util.get_vc_version(session)
self.assertEqual(expected_version, version)
expected_version = '5.5'
session.vim.service_content.about.version = expected_version
version = vim_util.get_vc_version(session)
self.assertEqual(expected_version, version)

View File

@ -1,4 +1,5 @@
[tox]
skipsdist = True
envlist = py26,py27,py33,pep8
[testenv]
@ -6,6 +7,7 @@ setenv = VIRTUAL_ENV={envdir}
deps = -r{toxinidir}/requirements.txt
-r{toxinidir}/test-requirements.txt
commands = python setup.py testr --slowest --testr-args='{posargs}'
usedevelop = True
[testenv:pep8]
commands = flake8