summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Legendre <arnaudleg@gmail.com>2014-06-24 19:12:06 -0700
committerArnaud Legendre <arnaudleg@gmail.com>2014-07-16 14:35:14 -0700
commitdbcb5f9d1e1cdd601e7539f220880c0e2220a83a (patch)
tree07cacb8d575f7021bd72c677406dcb6b19f3ea40
parent05ef356b3d6f2a63c29ceb1a639624de65b586e7 (diff)
downloadoslo-vmware-dbcb5f9d1e1cdd601e7539f220880c0e2220a83a.tar.gz
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
-rw-r--r--oslo/vmware/pbm.py27
-rw-r--r--oslo/vmware/vim_util.py9
-rw-r--r--oslo/vmware/wsdl/5.5/core-types.xsd242
-rw-r--r--oslo/vmware/wsdl/5.5/pbm-messagetypes.xsd155
-rw-r--r--oslo/vmware/wsdl/5.5/pbm-types.xsd729
-rw-r--r--oslo/vmware/wsdl/5.5/pbm.wsdl889
-rw-r--r--oslo/vmware/wsdl/5.5/pbmService.wsdl16
-rw-r--r--tests/test_pbm.py28
-rw-r--r--tests/test_vim_util.py11
-rw-r--r--tox.ini2
10 files changed, 2108 insertions, 0 deletions
diff --git a/oslo/vmware/pbm.py b/oslo/vmware/pbm.py
index 1ac052d..3b5446a 100644
--- a/oslo/vmware/pbm.py
+++ b/oslo/vmware/pbm.py
@@ -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
diff --git a/oslo/vmware/vim_util.py b/oslo/vmware/vim_util.py
index 28e236f..e3f8c2e 100644
--- a/oslo/vmware/vim_util.py
+++ b/oslo/vmware/vim_util.py
@@ -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
diff --git a/oslo/vmware/wsdl/5.5/core-types.xsd b/oslo/vmware/wsdl/5.5/core-types.xsd
new file mode 100644
index 0000000..51aedf4
--- /dev/null
+++ b/oslo/vmware/wsdl/5.5/core-types.xsd
@@ -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>
diff --git a/oslo/vmware/wsdl/5.5/pbm-messagetypes.xsd b/oslo/vmware/wsdl/5.5/pbm-messagetypes.xsd
new file mode 100644
index 0000000..1f06b9f
--- /dev/null
+++ b/oslo/vmware/wsdl/5.5/pbm-messagetypes.xsd
@@ -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>
diff --git a/oslo/vmware/wsdl/5.5/pbm-types.xsd b/oslo/vmware/wsdl/5.5/pbm-types.xsd
new file mode 100644
index 0000000..e919a2a
--- /dev/null
+++ b/oslo/vmware/wsdl/5.5/pbm-types.xsd
@@ -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>
diff --git a/oslo/vmware/wsdl/5.5/pbm.wsdl b/oslo/vmware/wsdl/5.5/pbm.wsdl
new file mode 100644
index 0000000..dee980f
--- /dev/null
+++ b/oslo/vmware/wsdl/5.5/pbm.wsdl
@@ -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>
diff --git a/oslo/vmware/wsdl/5.5/pbmService.wsdl b/oslo/vmware/wsdl/5.5/pbmService.wsdl
new file mode 100644
index 0000000..ff77383
--- /dev/null
+++ b/oslo/vmware/wsdl/5.5/pbmService.wsdl
@@ -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>
diff --git a/tests/test_pbm.py b/tests/test_pbm.py
index f84b971..85b3ef1 100644
--- a/tests/test_pbm.py
+++ b/tests/test_pbm.py
@@ -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)
diff --git a/tests/test_vim_util.py b/tests/test_vim_util.py
index a0ea964..941f29e 100644
--- a/tests/test_vim_util.py
+++ b/tests/test_vim_util.py
@@ -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)
diff --git a/tox.ini b/tox.ini
index 6d12430..0f9de1c 100644
--- a/tox.ini
+++ b/tox.ini
@@ -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