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
7 files changed, 224 insertions(+), 92 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk refs/changes/80/12680/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 c3bae68..6f5faa8 100644
--- a/src/ovirtsdk/infrastructure/brokers.py
+++ b/src/ovirtsdk/infrastructure/brokers.py
@@ -20,7 +20,7 @@
 ############ GENERATED CODE ############
 ########################################
 
-'''Generated at: 2013-03-04 15:02:46.897427'''
+'''Generated at: 2013-03-04 15:48:23.658388'''
 
 
 from ovirtsdk.xml import params
@@ -538,7 +538,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -681,7 +682,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -887,7 +889,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -1066,7 +1069,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -1184,7 +1188,10 @@
             ).get_cluster()
 
             return Cluster(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -1722,7 +1729,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -1849,7 +1857,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -2055,7 +2064,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -2239,7 +2249,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -2385,7 +2396,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -2564,7 +2576,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -2724,7 +2737,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3032,7 +3046,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3156,7 +3171,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3314,7 +3330,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3448,7 +3465,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3555,7 +3573,10 @@
             ).get_data_center()
 
             return DataCenter(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -3755,7 +3776,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -3878,7 +3900,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -4014,7 +4037,10 @@
             ).get_disk()
 
             return Disk(
-                        FilterHelper.getItem(result),
+                        FilterHelper.getItem(
+                            result,
+                            query="alias=" + alias
+                        ),
                         self.context
             )
         else:
@@ -4151,7 +4177,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -4276,7 +4303,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -4359,7 +4387,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:
@@ -4498,7 +4529,10 @@
             ).get_event()
 
             return Event(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -4729,7 +4763,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -4952,7 +4987,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -5083,7 +5119,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -5257,7 +5294,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -5358,7 +5396,10 @@
             ).get_group()
 
             return Group(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -5744,7 +5785,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6006,7 +6048,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6148,7 +6191,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6373,7 +6417,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6496,7 +6541,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6597,7 +6643,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6771,7 +6818,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -6906,7 +6954,10 @@
             ).get_host()
 
             return Host(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -7148,7 +7199,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -7259,7 +7311,10 @@
             ).get_network()
 
             return Network(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -7492,7 +7547,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -7600,7 +7656,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:
@@ -7896,7 +7955,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8017,7 +8077,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8171,7 +8232,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8297,7 +8359,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8478,7 +8541,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8681,7 +8745,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8778,7 +8843,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -8982,7 +9048,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -9079,7 +9146,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -9228,7 +9296,10 @@
             ).get_storage_domain()
 
             return StorageDomain(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -9387,7 +9458,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:
@@ -9625,7 +9699,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -9802,7 +9877,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -10019,7 +10095,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -10198,7 +10275,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -10348,7 +10426,10 @@
             ).get_template()
 
             return Template(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -10578,7 +10659,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -10801,7 +10883,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -10932,7 +11015,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -11106,7 +11190,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -11209,7 +11294,10 @@
             ).get_user()
 
             return User(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -11755,7 +11843,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12084,7 +12173,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12205,7 +12295,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12370,7 +12461,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12625,7 +12717,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12746,7 +12839,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -12881,7 +12975,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13060,7 +13155,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13183,7 +13279,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13446,7 +13543,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13567,7 +13665,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13688,7 +13787,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13814,7 +13914,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -13937,7 +14038,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -14111,7 +14213,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -14319,7 +14422,10 @@
             ).get_vm()
 
             return VM(
-                FilterHelper.getItem(result),
+                FilterHelper.getItem(
+                    result,
+                    query="name=" + name
+                ),
                 self.context
             )
         else:
@@ -14598,7 +14704,8 @@
                     FilterHelper.filter(
                         result,
                         {'name':name}
-                    )
+                    ),
+                    query="name=" + name
                 ),
                 self.context
             )
@@ -14703,7 +14810,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


--
To view, visit http://gerrit.ovirt.org/12680
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: master
Gerrit-Owner: Michael Pasternak <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to