Michael Pasternak has uploaded a new change for review. Change subject: sdk: return error if amount of fetched objects in X.get() is > 1 #890327 ......................................................................
sdk: return error if amount of fetched objects in X.get() is > 1 #890327 https://bugzilla.redhat.com/show_bug.cgi?id=890327 Change-Id: I98b72a9235825f62297b35a26c0bd76413bc0143 Signed-off-by: Michael Pasternak <[email protected]> --- M src/codegen/templates/collectiongetdiskstemplate M src/codegen/templates/collectiongetnotsearchabletemplate M src/codegen/templates/collectiongetsearchabletemplate M src/codegen/templates/subcollectiongettemplate M src/ovirtsdk/infrastructure/brokers.py M src/ovirtsdk/infrastructure/errors.py M src/ovirtsdk/utils/filterhelper.py M src/ovirtsdk/xml/params.py 8 files changed, 415 insertions(+), 85 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk refs/changes/11/13511/1 diff --git a/src/codegen/templates/collectiongetdiskstemplate b/src/codegen/templates/collectiongetdiskstemplate index 72827f5..c5ad640 100644 --- a/src/codegen/templates/collectiongetdiskstemplate +++ b/src/codegen/templates/collectiongetdiskstemplate @@ -20,7 +20,10 @@ ).get_%(resource_name_lc)s() return %(resource_type)s( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="alias=" + alias + ), self.context ) else: diff --git a/src/codegen/templates/collectiongetnotsearchabletemplate b/src/codegen/templates/collectiongetnotsearchabletemplate index 4bb27c7..55e8b17 100644 --- a/src/codegen/templates/collectiongetnotsearchabletemplate +++ b/src/codegen/templates/collectiongetnotsearchabletemplate @@ -22,7 +22,10 @@ ).get_%(resource_name_lc)s() return %(resource_type)s( - FilterHelper.getItem(FilterHelper.filter(result, {'name':name})), + FilterHelper.getItem( + FilterHelper.filter(result, {'name':name}), + query="name=" + name + ), self.context ) else: diff --git a/src/codegen/templates/collectiongetsearchabletemplate b/src/codegen/templates/collectiongetsearchabletemplate index 8120a52..a9bc2a9 100644 --- a/src/codegen/templates/collectiongetsearchabletemplate +++ b/src/codegen/templates/collectiongetsearchabletemplate @@ -22,7 +22,10 @@ ).get_%(resource_name_lc)s() return %(resource_type)s( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: diff --git a/src/codegen/templates/subcollectiongettemplate b/src/codegen/templates/subcollectiongettemplate index 404a538..1b1b55b 100644 --- a/src/codegen/templates/subcollectiongettemplate +++ b/src/codegen/templates/subcollectiongettemplate @@ -40,7 +40,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) diff --git a/src/ovirtsdk/infrastructure/brokers.py b/src/ovirtsdk/infrastructure/brokers.py index e4c12b8..711ec74 100644 --- a/src/ovirtsdk/infrastructure/brokers.py +++ b/src/ovirtsdk/infrastructure/brokers.py @@ -20,7 +20,7 @@ ############ GENERATED CODE ############ ######################################## -'''Generated at: 2013-02-27 12:27:26.286230''' +'''Generated at: 2013-04-02 14:17:42.378915''' from ovirtsdk.xml import params @@ -537,7 +537,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -680,7 +681,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -886,7 +888,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -1065,7 +1068,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -1182,7 +1186,10 @@ ).get_cluster() return Cluster( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -1427,7 +1434,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -1587,7 +1595,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -1804,7 +1813,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -1911,7 +1921,10 @@ ).get_data_center() return DataCenter( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -2111,7 +2124,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -2229,7 +2243,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -2365,7 +2380,10 @@ ).get_disk() return Disk( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="alias=" + alias + ), self.context ) else: @@ -2502,7 +2520,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -2627,7 +2646,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -2710,7 +2730,10 @@ ).get_domain() return Domain( - FilterHelper.getItem(FilterHelper.filter(result, {'name':name})), + FilterHelper.getItem( + FilterHelper.filter(result, {'name':name}), + query="name=" + name + ), self.context ) else: @@ -2849,7 +2872,10 @@ ).get_event() return Event( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -3080,7 +3106,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -3303,7 +3330,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -3434,7 +3462,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -3608,7 +3637,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -3709,7 +3739,10 @@ ).get_group() return Group( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -3950,6 +3983,7 @@ @type Action: [@param action.root_password: string] + [@param action.image: string] [@param correlation_id: any string] @return Action: @@ -4094,7 +4128,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -4356,7 +4391,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -4498,7 +4534,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -4723,7 +4760,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -4846,7 +4884,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -4947,7 +4986,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -5121,7 +5161,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -5181,6 +5222,7 @@ @param host.root_password: string @param host.cluster.id|name: string [@param host.port: int] + [@param host.display.address: string] [@param host.storage_manager.priority: int] [@param host.power_management.type: string] [@param host.power_management.enabled: boolean] @@ -5255,7 +5297,10 @@ ).get_host() return Host( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -5497,7 +5542,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -5608,7 +5654,10 @@ ).get_network() return Network( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -5841,7 +5890,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -5949,7 +5999,10 @@ ).get_role() return Role( - FilterHelper.getItem(FilterHelper.filter(result, {'name':name})), + FilterHelper.getItem( + FilterHelper.filter(result, {'name':name}), + query="name=" + name + ), self.context ) else: @@ -6152,7 +6205,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -6333,7 +6387,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -6511,7 +6566,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -6690,7 +6746,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -6839,7 +6896,10 @@ ).get_storage_domain() return StorageDomain( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -6998,7 +7058,10 @@ ).get_tag() return Tag( - FilterHelper.getItem(FilterHelper.filter(result, {'name':name})), + FilterHelper.getItem( + FilterHelper.filter(result, {'name':name}), + query="name=" + name + ), self.context ) else: @@ -7234,7 +7297,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -7411,7 +7475,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -7628,7 +7693,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -7807,7 +7873,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -7955,7 +8022,10 @@ ).get_template() return Template( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -8185,7 +8255,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -8408,7 +8479,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -8539,7 +8611,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -8713,7 +8786,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -8816,7 +8890,10 @@ ).get_user() return User( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -8924,6 +9001,7 @@ [@param vm.display.allow_override: boolean] [@param vm.display.smartcard_enabled: boolean] [@param vm.os.cmdline: string] + [@param vm.cpu.mode: string] [@param vm.cpu.topology.cores: int] [@param vm.memory: long] [@param vm.high_availability.priority: int] @@ -9359,7 +9437,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -9688,7 +9767,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -9809,7 +9889,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -9974,7 +10055,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10229,7 +10311,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10350,7 +10433,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10485,7 +10569,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10664,7 +10749,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10787,7 +10873,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -10978,7 +11065,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11099,7 +11187,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11220,7 +11309,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11346,7 +11436,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11469,7 +11560,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11643,7 +11735,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -11730,6 +11823,7 @@ [@param vm.description: string] [@param vm.stateless: boolean] [@param vm.delete_protected: boolean] + [@param vm.cpu.mode: string] [@param vm.cpu.topology.sockets: int] [@param vm.placement_policy.affinity: string] [@param vm.placement_policy.host.id|name: string] @@ -11793,7 +11887,10 @@ ).get_vm() return VM( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: @@ -12072,7 +12169,8 @@ FilterHelper.filter( result, {'name':name} - ) + ), + query="name=" + name ), self.context ) @@ -12177,7 +12275,10 @@ ).get_vmpool() return VmPool( - FilterHelper.getItem(result), + FilterHelper.getItem( + result, + query="name=" + name + ), self.context ) else: diff --git a/src/ovirtsdk/infrastructure/errors.py b/src/ovirtsdk/infrastructure/errors.py index a197770..c75e62d 100644 --- a/src/ovirtsdk/infrastructure/errors.py +++ b/src/ovirtsdk/infrastructure/errors.py @@ -17,7 +17,7 @@ from ovirtsdk.xml import params import types -class ERROR(Exception): +class OvirtSdkError(Exception): def __init__(self, content): Exception.__init__(self, content) @@ -53,7 +53,7 @@ RESPONSE_FAULT_BODY = '<fault>' APP_SERVER_RESPONSE_FORMAT = '<html><head><title>JBoss Web' - #REST error + # REST error if res and res.startswith(RESPONSE_FORMAT) and res.find(RESPONSE_FAULT_BODY) != -1: try: f_detail = params.parseString(res) @@ -62,18 +62,18 @@ if types.StringType != type(f_detail): if isinstance(f_detail, params.Action) and f_detail.fault is not None: - #self.reason = f_detail.fault.reason + # self.reason = f_detail.fault.reason detail = f_detail.fault.detail.lstrip() else: - #self.reason = response.reason + # self.reason = response.reason if f_detail and f_detail.detail: detail = f_detail.detail.lstrip() - #engine returns can-do-action error messages with brackets + # engine returns can-do-action error messages with brackets if detail and detail.startswith('[') and detail.endswith(']'): detail = detail[1:len(detail) - 1] - #application server error + # application server error elif res.startswith(APP_SERVER_RESPONSE_FORMAT): detail = res start = detail.find('<h1>') @@ -101,3 +101,11 @@ class FormatError(Exception): def __init__(self): Exception.__init__(self, '[ERROR]::Server reply is in inappropriate format.') + +class AmbiguousQueryError(OvirtSdkError): + def __init__(self, query=None): + Exception.__init__( + self, + '[ERROR]::Used query %s produces ambiguous results.' + % ("(" + query + ")" if query and query != "" else "") + ) diff --git a/src/ovirtsdk/utils/filterhelper.py b/src/ovirtsdk/utils/filterhelper.py index d32f9cc..17e204a 100644 --- a/src/ovirtsdk/utils/filterhelper.py +++ b/src/ovirtsdk/utils/filterhelper.py @@ -15,6 +15,7 @@ # from ovirtsdk.utils.searchhelper import SearchHelper +from ovirtsdk.infrastructure.errors import AmbiguousQueryError class FilterHelper(): @staticmethod @@ -23,6 +24,9 @@ return SearchHelper.filterResults(collection, kwargs) if (len(kwargs) is not 0) else collection @staticmethod - def getItem(result=[]): + def getItem(result=[], query=None): '''Returns first item in collection if exist, otherwise None''' + + if len(result) > 1: + raise AmbiguousQueryError(query) return result[0] if result else None diff --git a/src/ovirtsdk/xml/params.py b/src/ovirtsdk/xml/params.py index 1160032..9be6e5d 100644 --- a/src/ovirtsdk/xml/params.py +++ b/src/ovirtsdk/xml/params.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # -# Generated Tue Feb 19 14:54:44 2013 by generateDS.py version 2.7b. +# Generated Tue Apr 2 14:17:34 2013 by generateDS.py version 2.7b. # import sys @@ -644,7 +644,8 @@ pass def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'link': - obj_ = DetailedLink.factory() + class_obj_ = self.get_class_obj_(child_, DetailedLink) + obj_ = class_obj_.factory() obj_.build(child_) self.link.append(obj_) # end class DetailedLinks @@ -3940,6 +3941,81 @@ ip_version_ = self.gds_validate_string(ip_version_, node, 'ip_version') self.ip_version.append(ip_version_) # end class IpVersions + + +class CpuModes(GeneratedsSuper): + subclass = None + superclass = None + def __init__(self, cpu_mode=None): + if cpu_mode is None: + self.cpu_mode = [] + else: + self.cpu_mode = cpu_mode + def factory(*args_, **kwargs_): + if CpuModes.subclass: + return CpuModes.subclass(*args_, **kwargs_) + else: + return CpuModes(*args_, **kwargs_) + factory = staticmethod(factory) + def get_cpu_mode(self): return self.cpu_mode + def set_cpu_mode(self, cpu_mode): self.cpu_mode = cpu_mode + def add_cpu_mode(self, value): self.cpu_mode.append(value) + def insert_cpu_mode(self, index, value): self.cpu_mode[index] = value + def export(self, outfile, level, namespace_='', name_='CpuModes', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = [] + self.exportAttributes(outfile, level, already_processed, namespace_, name_='CpuModes') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('</%s%s>\n' % (namespace_, name_)) + else: + outfile.write('/>\n') + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='CpuModes'): + pass + def exportChildren(self, outfile, level, namespace_='', name_='CpuModes', fromsubclass_=False): + for cpu_mode_ in self.cpu_mode: + showIndent(outfile, level) + outfile.write('<%scpu_mode>%s</%scpu_mode>\n' % (namespace_, self.gds_format_string(quote_xml(cpu_mode_).encode(ExternalEncoding), input_name='cpu_mode'), namespace_)) + def hasContent_(self): + if ( + self.cpu_mode + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='CpuModes'): + level += 1 + self.exportLiteralAttributes(outfile, level, [], name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + pass + def exportLiteralChildren(self, outfile, level, name_): + showIndent(outfile, level) + outfile.write('cpu_mode=[\n') + level += 1 + for cpu_mode_ in self.cpu_mode: + showIndent(outfile, level) + outfile.write('%s,\n' % quote_python(cpu_mode_).encode(ExternalEncoding)) + level -= 1 + showIndent(outfile, level) + outfile.write('],\n') + def build(self, node): + self.buildAttributes(node, node.attrib, []) + for child in node: + nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] + self.buildChildren(child, node, nodeName_) + def buildAttributes(self, node, attrs, already_processed): + pass + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'cpu_mode': + cpu_mode_ = child_.text + cpu_mode_ = self.gds_validate_string(cpu_mode_, node, 'cpu_mode') + self.cpu_mode.append(cpu_mode_) +# end class CpuModes class ActionableResource(GeneratedsSuper): @@ -17801,12 +17877,13 @@ class RSDL(GeneratedsSuper): subclass = None superclass = None - def __init__(self, href=None, rel=None, description=None, version=None, schema=None, links=None): + def __init__(self, href=None, rel=None, description=None, version=None, schema=None, general=None, links=None): self.href = _cast(None, href) self.rel = _cast(None, rel) self.description = description self.version = version self.schema = schema + self.general = general self.links = links def factory(*args_, **kwargs_): if RSDL.subclass: @@ -17820,6 +17897,8 @@ def set_version(self, version): self.version = version def get_schema(self): return self.schema def set_schema(self, schema): self.schema = schema + def get_general(self): return self.general + def set_general(self, general): self.general = general def get_links(self): return self.links def set_links(self, links): self.links = links def get_href(self): return self.href @@ -17853,6 +17932,8 @@ self.version.export(outfile, level, namespace_, name_='version') if self.schema is not None: self.schema.export(outfile, level, namespace_, name_='schema') + if self.general is not None: + self.general.export(outfile, level, namespace_, name_='general') if self.links is not None: self.links.export(outfile, level, namespace_, name_='links') def hasContent_(self): @@ -17860,6 +17941,7 @@ self.description is not None or self.version is not None or self.schema is not None or + self.general is not None or self.links is not None ): return True @@ -17893,6 +17975,12 @@ showIndent(outfile, level) outfile.write('schema=model_.schema(\n') self.schema.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') + if self.general is not None: + showIndent(outfile, level) + outfile.write('general=model_.GeneralMetadata(\n') + self.general.exportLiteral(outfile, level, name_='general') showIndent(outfile, level) outfile.write('),\n') if self.links is not None: @@ -17929,6 +18017,10 @@ obj_ = Schema.factory() obj_.build(child_) self.set_schema(obj_) + elif nodeName_ == 'general': + obj_ = GeneralMetadata.factory() + obj_.build(child_) + self.set_general(obj_) elif nodeName_ == 'links': obj_ = DetailedLinks.factory() obj_.build(child_) @@ -20347,11 +20439,12 @@ class DetailedLink(Link): subclass = None superclass = Link - def __init__(self, href=None, rel=None, request=None, response=None, linkCapabilities=None): - super(DetailedLink, self).__init__(href, rel, ) + def __init__(self, href=None, rel=None, request=None, response=None, linkCapabilities=None, extensiontype_=None): + super(DetailedLink, self).__init__(href, rel, extensiontype_, ) self.request = request self.response = response self.linkCapabilities = linkCapabilities + self.extensiontype_ = extensiontype_ def factory(*args_, **kwargs_): if DetailedLink.subclass: return DetailedLink.subclass(*args_, **kwargs_) @@ -20364,6 +20457,8 @@ def set_response(self, response): self.response = response def get_linkCapabilities(self): return self.linkCapabilities def set_linkCapabilities(self, linkCapabilities): self.linkCapabilities = linkCapabilities + def get_extensiontype_(self): return self.extensiontype_ + def set_extensiontype_(self, extensiontype_): self.extensiontype_ = extensiontype_ def export(self, outfile, level, namespace_='', name_='DetailedLink', namespacedef_=''): showIndent(outfile, level) outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) @@ -20378,6 +20473,10 @@ outfile.write('/>\n') def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='DetailedLink'): super(DetailedLink, self).exportAttributes(outfile, level, already_processed, namespace_, name_='DetailedLink') + if self.extensiontype_ is not None and 'xsi:type' not in already_processed: + already_processed.append('xsi:type') + outfile.write(' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"') + outfile.write(' xsi:type="%s"' % self.extensiontype_) def exportChildren(self, outfile, level, namespace_='', name_='DetailedLink', fromsubclass_=False): super(DetailedLink, self).exportChildren(outfile, level, namespace_, name_, True) if self.request is not None: @@ -20429,6 +20528,10 @@ nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] self.buildChildren(child, node, nodeName_) def buildAttributes(self, node, attrs, already_processed): + value = find_attr_value_('xsi:type', node) + if value is not None and 'xsi:type' not in already_processed: + already_processed.append('xsi:type') + self.extensiontype_ = value super(DetailedLink, self).buildAttributes(node, attrs, already_processed) def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): if nodeName_ == 'request': @@ -20447,10 +20550,93 @@ # end class DetailedLink +class GeneralMetadata(DetailedLink): + subclass = None + superclass = DetailedLink + def __init__(self, href=None, rel=None, request=None, response=None, linkCapabilities=None, name=None, description=None): + super(GeneralMetadata, self).__init__(href, rel, request, response, linkCapabilities, ) + self.name = name + self.description = description + def factory(*args_, **kwargs_): + if GeneralMetadata.subclass: + return GeneralMetadata.subclass(*args_, **kwargs_) + else: + return GeneralMetadata(*args_, **kwargs_) + factory = staticmethod(factory) + def get_name(self): return self.name + def set_name(self, name): self.name = name + def get_description(self): return self.description + def set_description(self, description): self.description = description + def export(self, outfile, level, namespace_='', name_='GeneralMetadata', namespacedef_=''): + showIndent(outfile, level) + outfile.write('<%s%s%s' % (namespace_, name_, namespacedef_ and ' ' + namespacedef_ or '', )) + already_processed = [] + self.exportAttributes(outfile, level, already_processed, namespace_, name_='GeneralMetadata') + if self.hasContent_(): + outfile.write('>\n') + self.exportChildren(outfile, level + 1, namespace_, name_) + showIndent(outfile, level) + outfile.write('</%s%s>\n' % (namespace_, name_)) + else: + outfile.write('/>\n') + def exportAttributes(self, outfile, level, already_processed, namespace_='', name_='GeneralMetadata'): + super(GeneralMetadata, self).exportAttributes(outfile, level, already_processed, namespace_, name_='GeneralMetadata') + def exportChildren(self, outfile, level, namespace_='', name_='GeneralMetadata', fromsubclass_=False): + super(GeneralMetadata, self).exportChildren(outfile, level, namespace_, name_, True) + if self.name is not None: + showIndent(outfile, level) + outfile.write('<%sname>%s</%sname>\n' % (namespace_, self.gds_format_string(quote_xml(self.name).encode(ExternalEncoding), input_name='name'), namespace_)) + if self.description is not None: + showIndent(outfile, level) + outfile.write('<%sdescription>%s</%sdescription>\n' % (namespace_, self.gds_format_string(quote_xml(self.description).encode(ExternalEncoding), input_name='description'), namespace_)) + def hasContent_(self): + if ( + self.name is not None or + self.description is not None or + super(GeneralMetadata, self).hasContent_() + ): + return True + else: + return False + def exportLiteral(self, outfile, level, name_='GeneralMetadata'): + level += 1 + self.exportLiteralAttributes(outfile, level, [], name_) + if self.hasContent_(): + self.exportLiteralChildren(outfile, level, name_) + def exportLiteralAttributes(self, outfile, level, already_processed, name_): + super(GeneralMetadata, self).exportLiteralAttributes(outfile, level, already_processed, name_) + def exportLiteralChildren(self, outfile, level, name_): + super(GeneralMetadata, self).exportLiteralChildren(outfile, level, name_) + if self.name is not None: + showIndent(outfile, level) + outfile.write('name=%s,\n' % quote_python(self.name).encode(ExternalEncoding)) + if self.description is not None: + showIndent(outfile, level) + outfile.write('description=%s,\n' % quote_python(self.description).encode(ExternalEncoding)) + def build(self, node): + self.buildAttributes(node, node.attrib, []) + for child in node: + nodeName_ = Tag_pattern_.match(child.tag).groups()[-1] + self.buildChildren(child, node, nodeName_) + def buildAttributes(self, node, attrs, already_processed): + super(GeneralMetadata, self).buildAttributes(node, attrs, already_processed) + def buildChildren(self, child_, node, nodeName_, fromsubclass_=False): + if nodeName_ == 'name': + name_ = child_.text + name_ = self.gds_validate_string(name_, node, 'name') + self.name = name_ + elif nodeName_ == 'description': + description_ = child_.text + description_ = self.gds_validate_string(description_, node, 'description') + self.description = description_ + super(GeneralMetadata, self).buildChildren(child_, node, nodeName_, True) +# end class GeneralMetadata + + class VersionCaps(Version): subclass = None superclass = Version - def __init__(self, actions=None, href=None, id=None, name=None, description=None, creation_status=None, link=None, major=None, full_version=None, build_=None, minor=None, revision=None, current=None, features=None, cpus=None, power_managers=None, fence_types=None, storage_types=None, storage_domain_types=None, vm_types=None, boot_devices=None, display_types=None, nic_interfaces=None, os_types=None, disk_formats=None, disk_interfaces=None, vm_affinities=None, custom_properties=None, boot_protocols=None, error_handling=None, storage_formats=None, creation_states=None, power_management_states=None, host_states=None, host_non_operational_details=None, network_states=None, storage_domain_states=None, template_states=None, vm_states=None, vm_pause_details=None, disk_states=None, host_nic_states=None, data_center_states=None, vm_device_types=None, permits=None, scheduling_policies=None, usages=None, nfs_versions=None, pm_proxy_types=None, gluster_volume_types=None, transport_t! ypes=None, gluster_volume_states=None, brick_states=None, reported_device_types=None, ip_versions=None): + def __init__(self, actions=None, href=None, id=None, name=None, description=None, creation_status=None, link=None, major=None, full_version=None, build_=None, minor=None, revision=None, current=None, features=None, cpus=None, power_managers=None, fence_types=None, storage_types=None, storage_domain_types=None, vm_types=None, boot_devices=None, display_types=None, nic_interfaces=None, os_types=None, disk_formats=None, disk_interfaces=None, vm_affinities=None, custom_properties=None, boot_protocols=None, error_handling=None, storage_formats=None, creation_states=None, power_management_states=None, host_states=None, host_non_operational_details=None, network_states=None, storage_domain_states=None, template_states=None, vm_states=None, vm_pause_details=None, disk_states=None, host_nic_states=None, data_center_states=None, vm_device_types=None, permits=None, scheduling_policies=None, usages=None, nfs_versions=None, pm_proxy_types=None, cpu_modes=None, gluster_volume_types=N! one, transport_types=None, gluster_volume_states=None, brick_states=None, reported_device_types=None, ip_versions=None): super(VersionCaps, self).__init__(actions, href, id, name, description, creation_status, link, major, full_version, build_, minor, revision, ) self.current = current self.features = features @@ -20489,6 +20675,7 @@ self.usages = usages self.nfs_versions = nfs_versions self.pm_proxy_types = pm_proxy_types + self.cpu_modes = cpu_modes self.gluster_volume_types = gluster_volume_types self.transport_types = transport_types self.gluster_volume_states = gluster_volume_states @@ -20575,6 +20762,8 @@ def set_nfs_versions(self, nfs_versions): self.nfs_versions = nfs_versions def get_pm_proxy_types(self): return self.pm_proxy_types def set_pm_proxy_types(self, pm_proxy_types): self.pm_proxy_types = pm_proxy_types + def get_cpu_modes(self): return self.cpu_modes + def set_cpu_modes(self, cpu_modes): self.cpu_modes = cpu_modes def get_gluster_volume_types(self): return self.gluster_volume_types def set_gluster_volume_types(self, gluster_volume_types): self.gluster_volume_types = gluster_volume_types def get_transport_types(self): return self.transport_types @@ -20678,6 +20867,8 @@ self.nfs_versions.export(outfile, level, namespace_, name_='nfs_versions') if self.pm_proxy_types is not None: self.pm_proxy_types.export(outfile, level, namespace_, name_='pm_proxy_types') + if self.cpu_modes is not None: + self.cpu_modes.export(outfile, level, namespace_, name_='cpu_modes') if self.gluster_volume_types is not None: self.gluster_volume_types.export(outfile, level, namespace_, name_='gluster_volume_types') if self.transport_types is not None: @@ -20729,6 +20920,7 @@ self.usages is not None or self.nfs_versions is not None or self.pm_proxy_types is not None or + self.cpu_modes is not None or self.gluster_volume_types is not None or self.transport_types is not None or self.gluster_volume_states is not None or @@ -20968,6 +21160,12 @@ self.pm_proxy_types.exportLiteral(outfile, level) showIndent(outfile, level) outfile.write('),\n') + if self.cpu_modes is not None: + showIndent(outfile, level) + outfile.write('cpu_modes=model_.cpu_modes(\n') + self.cpu_modes.exportLiteral(outfile, level) + showIndent(outfile, level) + outfile.write('),\n') if self.gluster_volume_types is not None: showIndent(outfile, level) outfile.write('gluster_volume_types=model_.gluster_volume_types(\n') @@ -21166,6 +21364,10 @@ obj_ = PmProxyTypes.factory() obj_.build(child_) self.set_pm_proxy_types(obj_) + elif nodeName_ == 'cpu_modes': + obj_ = CpuModes.factory() + obj_.build(child_) + self.set_cpu_modes(obj_) elif nodeName_ == 'gluster_volume_types': obj_ = GlusterVolumeTypes.factory() obj_.build(child_) @@ -21312,6 +21514,7 @@ "Certificate", "Cluster", "Clusters", + "CpuModes", "CpuTopology", "CpuTune", "Creation", @@ -21344,6 +21547,7 @@ "Files", "Floppies", "Floppy", + "GeneralMetadata", "GlusterBrick", "GlusterBricks", "GlusterStates", @@ -21496,6 +21700,7 @@ "cluster" : Cluster, "clusters" : Clusters, "cpu" : CPU, + "cpu_modes" : CpuModes, "cpu_tune" : CpuTune, "cpus" : CPUs, "creation" : Creation, @@ -21527,6 +21732,8 @@ "files" : Files, "floppies" : Floppies, "floppy" : Floppy, + "general" : GeneralMetadata, + "general_metadata" : GeneralMetadata, "gluster_volume" : GlusterVolume, "gluster_volume_states" : GlusterStates, "gluster_volume_types" : GlusterVolumeTypes, -- To view, visit http://gerrit.ovirt.org/13511 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I98b72a9235825f62297b35a26c0bd76413bc0143 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine-sdk Gerrit-Branch: sdk_3.2 Gerrit-Owner: Michael Pasternak <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
