From 45a40c496dde96e2b9bde61c9d9ed8fba5fea544 Mon Sep 17 00:00:00 2001 From: Tianhao He Date: Wed, 30 Sep 2015 20:10:13 -0700 Subject: [PATCH] Support for build-time versions in pyVmomi Since introduction of meta-versions and related generated versions, we need facility, allowing code to specify those versions during run-time. (Note that although version classes are well- defined, the particular versions that correspond to a class change from build to build, depending on meta-version state.) --- pyVmomi/VmomiSupport.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pyVmomi/VmomiSupport.py b/pyVmomi/VmomiSupport.py index 5e44db5..f40d70f 100644 --- a/pyVmomi/VmomiSupport.py +++ b/pyVmomi/VmomiSupport.py @@ -1241,6 +1241,28 @@ def GetCompatibleType(type, version): def InverseMap(map): return dict([ (v, k) for (k, v) in iteritems(map) ]) +## Support for build-time versions +class _BuildVersions: + def __init__(self): + self._verMap = {} + self._nsMap = {} + + def Add(self, version): + vmodlNs = version.split(".",1)[0] + if not (vmodlNs in self._verMap): + self._verMap[vmodlNs] = version + if not (vmodlNs in self._nsMap): + self._nsMap[vmodlNs] = GetVersionNamespace(version) + + def Get(self, vmodlNs): + return self._verMap[vmodlNs] + + def GetNamespace(self, vmodlNs): + return self._nsMap[vmodlNs] + + def GetInternalNamespace(self, vmodlNs): + return "internal%s" % self.GetNamespace(vmodlNs) + types = Object() nsMap = {} versionIdMap = {} @@ -1248,6 +1270,13 @@ versionMap = {} serviceNsMap = { BASE_VERSION : XMLNS_VMODL_BASE.split(":")[-1] } parentMap = {} +newestVersions = _BuildVersions() +currentVersions = _BuildVersions() +stableVersions = _BuildVersions() +matureVersions = _BuildVersions() +publicVersions = _BuildVersions() +oldestVersions = _BuildVersions() + from pyVmomi.Version import AddVersion, IsChildVersion if not isinstance(bool, type): # bool not a type in python <= 2.2