Michael Pasternak has uploaded a new change for review.

Change subject: sdk: make /filter header global rather than method driven 
#857018
......................................................................

sdk: make /filter header global rather than method driven #857018

https://bugzilla.redhat.com/show_bug.cgi?id=857018

Change-Id: Ibdcfeac89b5eb4e46f435329d97f1ad337cdaa7f
Signed-off-by: Michael Pasternak <[email protected]>
---
M src/codegen/entrypoint/entrypoint.py
M src/codegen/imp/imprt.py
M src/codegen/main.py
M src/codegen/utils/headerutils.py
M src/ovirtsdk/api.py
M src/ovirtsdk/infrastructure/brokers.py
M src/ovirtsdk/web/connection.py
7 files changed, 52 insertions(+), 59 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine-sdk refs/changes/76/8076/1

diff --git a/src/codegen/entrypoint/entrypoint.py 
b/src/codegen/entrypoint/entrypoint.py
index 12d0c7d..1e20b84 100644
--- a/src/codegen/entrypoint/entrypoint.py
+++ b/src/codegen/entrypoint/entrypoint.py
@@ -70,8 +70,7 @@
         filter_header = contextmanager.get('filter')
 
         return proxy.request(method='GET',
-                             url='/api',
-                             headers={'Filter': filter_header}).%(attr)s
+                             url='/api').%(attr)s
 """
 
         methods_template = "\n" + \
@@ -90,7 +89,6 @@
             try:
                 proxy.request(method='GET',
                               url='/api',
-                              headers={'Filter': filter_header},
                               last=True)
             except Exception:
                 pass
@@ -107,8 +105,7 @@
         if proxy:
             try :
                 proxy.request(method='GET',
-                              url='/api',
-                              headers={'Filter': filter_header})
+                              url='/api')
             except Exception, e:
                 if throw_exception: raise e
                 else: return False
@@ -181,10 +178,12 @@
         # Create the proxy:
         proxy = Proxy(pool, persistent_auth)
 
+        # Store filter to the context:
+        contextmanager.add('filter', filter)
+
         # Get entry point
         entry_point = proxy.request(method='GET',
-                                    url='/api',
-                                    headers={'Filter': filter})
+                                    url='/api')
 
         # If server returns no response for the root resource, this is sign
         # that used http protocol against SSL secured site
@@ -201,9 +200,6 @@
         contextmanager.add('persistent_auth',
                            persistent_auth,
                            Mode.R)
-
-        # Store filter to the context:
-        contextmanager.add('filter', filter)
 
 """
 
diff --git a/src/codegen/imp/imprt.py b/src/codegen/imp/imprt.py
index 56809b0..27f5637 100644
--- a/src/codegen/imp/imprt.py
+++ b/src/codegen/imp/imprt.py
@@ -42,8 +42,7 @@
         "########################################\n\n"
 
 stamp = \
-"'''\nGenerated at: " + str(datetime.datetime.now()) + "\n\n" + \
-"@author: [email protected]\n'''\n\n"
+"'''Generated at: " + str(datetime.datetime.now()) + "'''\n\n" 
 
 imports = intro + stamp + \
 "from ovirtsdk.xml import params\n" + \
@@ -52,7 +51,6 @@
 "from ovirtsdk.utils.parsehelper import ParseHelper\n" + \
 "from ovirtsdk.utils.searchhelper import SearchHelper\n" + \
 "from ovirtsdk.infrastructure.common import Base\n" + \
-"from ovirtsdk.infrastructure import contextmanager\n" + \
 "from ovirtsdk.infrastructure.errors import RequestError\n\n\n"
 
 class Import(object):
diff --git a/src/codegen/main.py b/src/codegen/main.py
index ad5aab2..3c9b98f 100644
--- a/src/codegen/main.py
+++ b/src/codegen/main.py
@@ -429,6 +429,8 @@
         return response.read()
 
     def generate_python_bindings(self):
+        from ovirtsdk.infrastructure import contextmanager
+        contextmanager.add('filter', False)        
         schema = self.__do_request(method='GET', url='/api?schema')
         with open(SCHEMA_FILE, 'w') as f:
             f.write('%s' % schema)
diff --git a/src/codegen/utils/headerutils.py b/src/codegen/utils/headerutils.py
index 3375e32..3b8e130 100644
--- a/src/codegen/utils/headerutils.py
+++ b/src/codegen/utils/headerutils.py
@@ -19,7 +19,7 @@
 class HeaderUtils(object):
 
     @staticmethod
-    def generate_method_params(link, HEADERS_EXCLUDE=['Content-Type'], 
CACHED_HEADERS={'filter':'contextmanager.get(\'filter\')'}):
+    def generate_method_params(link, HEADERS_EXCLUDE=['Content-Type', 
'Filter'], CACHED_HEADERS={}):
         params_str = ''
         headers_str = ''
         if hasattr(link, 'request') and hasattr(link.request, 'headers') and \
diff --git a/src/ovirtsdk/api.py b/src/ovirtsdk/api.py
index 30a930c..47b2597 100644
--- a/src/ovirtsdk/api.py
+++ b/src/ovirtsdk/api.py
@@ -19,7 +19,7 @@
 ############ GENERATED CODE ############
 ########################################
 
-'''Generated at: 2012-09-10 16:40:27.979965'''
+'''Generated at: 2012-09-20 10:34:54.692539'''
 
 import types
 from ovirtsdk.infrastructure.errors import UnsecuredConnectionAttemptError
@@ -81,10 +81,12 @@
         # Create the proxy:
         proxy = Proxy(pool, persistent_auth)
 
+        # Store filter to the context:
+        contextmanager.add('filter', filter)
+
         # Get entry point
         entry_point = proxy.request(method='GET',
-                                    url='/api',
-                                    headers={'Filter': filter})
+                                    url='/api')
 
         # If server returns no response for the root resource, this is sign
         # that used http protocol against SSL secured site
@@ -101,9 +103,6 @@
         contextmanager.add('persistent_auth',
                            persistent_auth,
                            Mode.R)
-
-        # Store filter to the context:
-        contextmanager.add('filter', filter)
 
         self.capabilities = Capabilities()
         self.clusters = Clusters()
@@ -137,7 +136,6 @@
             try:
                 proxy.request(method='GET',
                               url='/api',
-                              headers={'Filter': filter_header},
                               last=True)
             except Exception:
                 pass
@@ -154,8 +152,7 @@
         if proxy:
             try :
                 proxy.request(method='GET',
-                              url='/api',
-                              headers={'Filter': filter_header})
+                              url='/api')
             except Exception, e:
                 if throw_exception: raise e
                 else: return False
@@ -178,8 +175,7 @@
         filter_header = contextmanager.get('filter')
 
         return proxy.request(method='GET',
-                             url='/api',
-                             headers={'Filter': filter_header}).summary
+                             url='/api').summary
 
 
     def get_time(self):
@@ -187,8 +183,7 @@
         filter_header = contextmanager.get('filter')
 
         return proxy.request(method='GET',
-                             url='/api',
-                             headers={'Filter': filter_header}).time
+                             url='/api').time
 
 
     def get_product_info(self):
diff --git a/src/ovirtsdk/infrastructure/brokers.py 
b/src/ovirtsdk/infrastructure/brokers.py
index 3afe7f7..4655713 100644
--- a/src/ovirtsdk/infrastructure/brokers.py
+++ b/src/ovirtsdk/infrastructure/brokers.py
@@ -19,11 +19,7 @@
 ############ GENERATED CODE ############
 ########################################
 
-'''
-Generated at: 2012-09-09 12:10:50.827376
-
-@author: [email protected]
-'''
+'''Generated at: 2012-09-20 10:34:16.323199'''
 
 from ovirtsdk.xml import params
 from ovirtsdk.utils.urlhelper import UrlHelper
@@ -31,7 +27,6 @@
 from ovirtsdk.utils.parsehelper import ParseHelper
 from ovirtsdk.utils.searchhelper import SearchHelper
 from ovirtsdk.infrastructure.common import Base
-from ovirtsdk.infrastructure import contextmanager
 from ovirtsdk.infrastructure.errors import RequestError
 
 
@@ -750,14 +745,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return Cluster(self._getProxy().get(url=UrlHelper.append(url, 
kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_cluster()
+                                          headers={}).get_cluster()
             return Cluster(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -773,7 +768,7 @@
         url='/api/clusters'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_cluster()
+                                      headers={}).get_cluster()
         return ParseHelper.toCollection(Cluster,
                                         FilterHelper.filter(result, kwargs))
 
@@ -1193,14 +1188,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return 
DataCenter(self._getProxy().get(url=UrlHelper.append(url, kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_data_center()
+                                          headers={}).get_data_center()
             return DataCenter(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -1216,7 +1211,7 @@
         url='/api/datacenters'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_data_center()
+                                      headers={}).get_data_center()
         return ParseHelper.toCollection(DataCenter,
                                         FilterHelper.filter(result, kwargs))
 
@@ -3015,14 +3010,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return Host(self._getProxy().get(url=UrlHelper.append(url, 
kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_host()
+                                          headers={}).get_host()
             return Host(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -3038,7 +3033,7 @@
         url='/api/hosts'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_host()
+                                      headers={}).get_host()
         return ParseHelper.toCollection(Host,
                                         FilterHelper.filter(result, kwargs))
 
@@ -3847,14 +3842,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return 
StorageDomain(self._getProxy().get(url=UrlHelper.append(url, kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_storage_domain()
+                                          headers={}).get_storage_domain()
             return 
StorageDomain(FilterHelper.getItem(FilterHelper.filter(result, kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -3870,7 +3865,7 @@
         url='/api/storagedomains'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_storage_domain()
+                                      headers={}).get_storage_domain()
         return ParseHelper.toCollection(StorageDomain,
                                         FilterHelper.filter(result, kwargs))
 
@@ -4524,14 +4519,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return Template(self._getProxy().get(url=UrlHelper.append(url, 
kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_template()
+                                          headers={}).get_template()
             return Template(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -4547,7 +4542,7 @@
         url='/api/templates'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_template()
+                                      headers={}).get_template()
         return ParseHelper.toCollection(Template,
                                         FilterHelper.filter(result, kwargs))
 
@@ -5298,7 +5293,7 @@
         result = self._getProxy().request(method='POST',
                                           url=UrlHelper.replace(url, 
{'{vm:id}': self.get_id()}),
                                           body=ParseHelper.toXml(action),
-                                          
headers={"Correlation-Id":correlation_id, 
"Filter":contextmanager.get('filter')})
+                                          
headers={"Correlation-Id":correlation_id})
         return result
 
     def stop(self, action=params.Action(), correlation_id=None):
@@ -6589,14 +6584,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return VM(self._getProxy().get(url=UrlHelper.append(url, 
kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_vm()
+                                          headers={}).get_vm()
             return VM(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -6612,7 +6607,7 @@
         url='/api/vms'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_vm()
+                                      headers={}).get_vm()
         return ParseHelper.toCollection(VM,
                                         FilterHelper.filter(result, kwargs))
 
@@ -6810,14 +6805,14 @@
         if kwargs and kwargs.has_key('id') and kwargs['id'] <> None:
             try :
                 return VmPool(self._getProxy().get(url=UrlHelper.append(url, 
kwargs['id']),
-                                                              
headers={"Filter":contextmanager.get('filter')}))
+                                                              headers={}))
             except RequestError, err:
                 if err.status and err.status == 404:
                     return None
                 raise err
         else:
             result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search':'name='+name}),
-                                          
headers={"Filter":contextmanager.get('filter')}).get_vmpool()
+                                          headers={}).get_vmpool()
             return VmPool(FilterHelper.getItem(FilterHelper.filter(result, 
kwargs)))
 
     def list(self, query=None, case_sensitive=True, max=None, **kwargs):
@@ -6833,7 +6828,7 @@
         url='/api/vmpools'
 
         result = self._getProxy().get(url=SearchHelper.appendQuery(url, 
{'search:query':query,'case_sensitive:matrix':case_sensitive,'max:matrix':max}),
-                                      
headers={"Filter":contextmanager.get('filter')}).get_vmpool()
+                                      headers={}).get_vmpool()
         return ParseHelper.toCollection(VmPool,
                                         FilterHelper.filter(result, kwargs))
 
diff --git a/src/ovirtsdk/web/connection.py b/src/ovirtsdk/web/connection.py
index cded985..f39d694 100644
--- a/src/ovirtsdk/web/connection.py
+++ b/src/ovirtsdk/web/connection.py
@@ -21,6 +21,7 @@
 from ovirtsdk.web.httpsconnection import HTTPSConnection
 from ovirtsdk.infrastructure.errors import NoCertificatesError
 import types
+from ovirtsdk.infrastructure import contextmanager
 
 class Connection(object):
     '''
@@ -37,7 +38,7 @@
                                                     timeout=timeout)
 
         self.__connection.set_debuglevel(int(debug))
-        self.__headers = self.__createHeaders(username, password)
+        self.__headers = self.__createStaticHeaders(username, password)
         self.__manager = manager
         self.__id = id(self)
         self.__insecure = insecure
@@ -49,7 +50,9 @@
         return self.__connection
 
     def getDefaultHeaders(self):
-        return self.__headers.copy()
+        headers = self.__headers.copy()
+        headers.update(self.__createDynamicHeaders())
+        return headers
 
     def doRequest(self, method, url, body=urllib.urlencode({}), headers={}):
         return self.__connection.request(method, url, body, 
self.getHeaders(headers))
@@ -111,8 +114,12 @@
                               strict=strict,
                               timeout=timeout)
 
-    def __createHeaders(self, username, password):
+    def __createStaticHeaders(self, username, password):
         auth = base64.encodestring("%s:%s" % (username, password)).strip()
-        return {"Content-type": "application/xml", "Authorization": "Basic %s" 
% auth}
+        return {"Content-type" : "application/xml", 
+                "Authorization": "Basic %s" % auth}
+
+    def __createDynamicHeaders(self):
+        return {'Filter' : str(contextmanager.get('filter'))}
 
     id = property(get_id, None, None, None)


--
To view, visit http://gerrit.ovirt.org/8076
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibdcfeac89b5eb4e46f435329d97f1ad337cdaa7f
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