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
