Michael Pasternak has uploaded a new change for review.

Change subject: sdk: support automatic auth session invalidation #1018559
......................................................................

sdk: support automatic auth session invalidation #1018559

Change-Id: Ibea9edd61b619888210400bc15f07b03a565c641
Signed-off-by: Michael pasternak <mpast...@redhat.com>
---
M src/codegen/templates/entrypointmethodstemplate
M src/codegen/templates/entrypointtemplate
M src/ovirtsdk/api.py
M src/ovirtsdk/web/connection.py
4 files changed, 44 insertions(+), 15 deletions(-)


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

diff --git a/src/codegen/templates/entrypointmethodstemplate 
b/src/codegen/templates/entrypointmethodstemplate
index 7d99ea4..abac8a6 100644
--- a/src/codegen/templates/entrypointmethodstemplate
+++ b/src/codegen/templates/entrypointmethodstemplate
@@ -51,13 +51,23 @@
             return True
         raise DisconnectedError
 
-    def set_filter(self, filter):
+    def set_filter(self, filter):  # @ReservedAssignment
         ''' enables user permission based filtering '''
         if filter != None:
             context.manager[self.id].add(
                              'filter',
                              filter,
                              typ=types.BooleanType
+            )
+
+    def set_renew_sessioin(self, renew_sessioin):
+        ''' automatically renew expired authentication session '''
+        if renew_sessioin != None:
+            context.manager[self.id].add(
+                'renew_sessioin',
+                 renew_sessioin,
+                 Mode.RW,
+                 typ=types.BooleanType
             )
 
     def __set_session_timeout(self, session_timeout):
@@ -72,5 +82,5 @@
     def __enter__(self):
         return self
 
-    def __exit__(self, type, value, tb):
+    def __exit__(self, type, value, tb):  # @ReservedAssignment
         self.disconnect()
\ No newline at end of file
diff --git a/src/codegen/templates/entrypointtemplate 
b/src/codegen/templates/entrypointtemplate
index a0d7148..819290b 100644
--- a/src/codegen/templates/entrypointtemplate
+++ b/src/codegen/templates/entrypointtemplate
@@ -1,7 +1,7 @@
 class API(object):
     def __init__(self, url, username, password, key_file=None, cert_file=None,
                  ca_file=None, port=None, timeout=None, session_timeout=None, 
persistent_auth=True,
-                 insecure=False, validate_cert_chain=True, filter=False, 
debug=False):
+                 renew_sessioin=False, insecure=False, 
validate_cert_chain=True, filter=False, debug=False):  # @ReservedAssignment
 
         '''
         @param url: server url (format "http/s://server[:port]/api")
@@ -13,10 +13,11 @@
         [@param port: port to use (if not specified in url)]
         [@param timeout: request timeout]
         [@param session_timeout: authentication session timeout (if 
persistent_auth is enabled)]
-        [@param persistent_auth: enable persistent authentication (format 
True|False)]
-        [@param insecure: signals to not demand site trustworthiness for ssl 
enabled connection (format True|False, default is False)]
-        [@param validate_cert_chain: validate the server's certificate (format 
True|False, default is True)]
-        [@param filter: signals if user permission based filtering should be 
turned on/off (format True|False)]
+        [@param persistent_auth: use persistent authentication (default is 
True)]
+        [@param renew_sessioin: automatically renew expired authentication 
session (default is False)]
+        [@param insecure: signals to not demand site trustworthiness for ssl 
enabled connection (default is False)]
+        [@param validate_cert_chain: validate the server's CA certificate 
(default is True)]
+        [@param filter: enables user-api filtering (default is False)]
         [@param debug: debug (format True|False)]
 
         @raise NoCertificatesError: raised when CA certificate is not provided 
for SSL site (can be disabled using 'insecure=True' argument).
@@ -64,6 +65,9 @@
         # Store filter to the context:
         self.set_filter(filter)
 
+        # We need to remember if renew_sessioin is enabled:
+        self.set_renew_sessioin(renew_sessioin)
+
         # Store session_timeout to the context:
         self.__set_session_timeout(session_timeout)
 
diff --git a/src/ovirtsdk/api.py b/src/ovirtsdk/api.py
index c1dee98..caaa9a2 100644
--- a/src/ovirtsdk/api.py
+++ b/src/ovirtsdk/api.py
@@ -56,7 +56,7 @@
 class API(object):
     def __init__(self, url, username, password, key_file=None, cert_file=None,
                  ca_file=None, port=None, timeout=None, session_timeout=None, 
persistent_auth=True,
-                 insecure=False, validate_cert_chain=True, filter=False, 
debug=False):
+                 renew_sessioin=False, insecure=False, 
validate_cert_chain=True, filter=False, debug=False):  # @ReservedAssignment
 
         '''
         @param url: server url (format "http/s://server[:port]/api")
@@ -68,10 +68,11 @@
         [@param port: port to use (if not specified in url)]
         [@param timeout: request timeout]
         [@param session_timeout: authentication session timeout (if 
persistent_auth is enabled)]
-        [@param persistent_auth: enable persistent authentication (format 
True|False)]
-        [@param insecure: signals to not demand site trustworthiness for ssl 
enabled connection (format True|False, default is False)]
-        [@param validate_cert_chain: validate the server's certificate (format 
True|False, default is True)]
-        [@param filter: signals if user permission based filtering should be 
turned on/off (format True|False)]
+        [@param persistent_auth: use persistent authentication (default is 
True)]
+        [@param renew_sessioin: automatically renew expired authentication 
session (default is False)]
+        [@param insecure: signals to not demand site trustworthiness for ssl 
enabled connection (default is False)]
+        [@param validate_cert_chain: validate the server's CA certificate 
(default is True)]
+        [@param filter: enables user-api filtering (default is False)]
         [@param debug: debug (format True|False)]
 
         @raise NoCertificatesError: raised when CA certificate is not provided 
for SSL site (can be disabled using 'insecure=True' argument).
@@ -118,6 +119,9 @@
 
         # Store filter to the context:
         self.set_filter(filter)
+
+        # We need to remember if renew_sessioin is enabled:
+        self.set_renew_sessioin(renew_sessioin)
 
         # Store session_timeout to the context:
         self.__set_session_timeout(session_timeout)
@@ -227,13 +231,23 @@
             return True
         raise DisconnectedError
 
-    def set_filter(self, filter):
+    def set_filter(self, filter):  # @ReservedAssignment
         ''' enables user permission based filtering '''
         if filter != None:
             context.manager[self.id].add(
                              'filter',
                              filter,
                              typ=types.BooleanType
+            )
+
+    def set_renew_sessioin(self, renew_sessioin):
+        ''' automatically renew expired authentication session '''
+        if renew_sessioin != None:
+            context.manager[self.id].add(
+                'renew_sessioin',
+                 renew_sessioin,
+                 Mode.RW,
+                 typ=types.BooleanType
             )
 
     def __set_session_timeout(self, session_timeout):
@@ -248,7 +262,7 @@
     def __enter__(self):
         return self
 
-    def __exit__(self, type, value, tb):
+    def __exit__(self, type, value, tb):  # @ReservedAssignment
         self.disconnect()
 
     def get_comment(self):
diff --git a/src/ovirtsdk/web/connection.py b/src/ovirtsdk/web/connection.py
index 25b375e..0192924 100644
--- a/src/ovirtsdk/web/connection.py
+++ b/src/ovirtsdk/web/connection.py
@@ -72,9 +72,10 @@
 
         headers = self.__headers.copy()
         headers.update(self.__createDynamicHeaders())
+        renew_sessioin = context.manager[self.context].get('renew_sessioin')
 
         # remove AUTH_HEADER
-        if no_auth and headers.has_key(AUTH_HEADER):
+        if no_auth and not renew_sessioin and headers.has_key(AUTH_HEADER):
             headers.pop(AUTH_HEADER)
 
         return headers


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibea9edd61b619888210400bc15f07b03a565c641
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine-sdk
Gerrit-Branch: master
Gerrit-Owner: Michael Pasternak <mpast...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to