[X2Go-Commits] [x2gobroker] 02/02: UCCS: Start working on API version 5.
git-admin at x2go.org
git-admin at x2go.org
Thu May 3 12:49:09 CEST 2018
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2gobroker.
commit 0bfc3653849a6ab33c5b77065fdeb4fc3a51ec71
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date: Thu May 3 12:48:54 2018 +0200
UCCS: Start working on API version 5.
---
x2gobroker/defaults.py | 2 ++
x2gobroker/uccsjson.py | 50 ++++++++++++++++++++++++++++++++++++++++++--------
x2gobroker/web/uccs.py | 22 ++++++++++++++++++----
3 files changed, 62 insertions(+), 12 deletions(-)
diff --git a/x2gobroker/defaults.py b/x2gobroker/defaults.py
index 9ed7abf..3b7fbc1 100644
--- a/x2gobroker/defaults.py
+++ b/x2gobroker/defaults.py
@@ -323,3 +323,5 @@ X2GOBROKER_SESSIONPROFILE_DEFAULTS = {
'acl-any-order': 'deny-allow',
},
}
+
+X2GOBROKER_LATEST_UCCS_API_VERSION = 5
\ No newline at end of file
diff --git a/x2gobroker/uccsjson.py b/x2gobroker/uccsjson.py
index e271019..e582e29 100644
--- a/x2gobroker/uccsjson.py
+++ b/x2gobroker/uccsjson.py
@@ -20,6 +20,8 @@
try: import simplejson as json
except ImportError: import json
+from x2gobroker.defaults import X2GOBROKER_LATEST_UCCS_API_VERSION as latest_api_version
+
def convert_to_builtin_type(obj):
"""\
Helper function for converting Python objects to dictionaries.
@@ -35,7 +37,7 @@ class ManagementServer():
Base class for generating UCCS compatible JSON object.
"""
- def __init__(self, url, name):
+ def __init__(self, url, name, api_version=latest_api_version):
"""\
Initializ instance.
@@ -43,8 +45,11 @@ class ManagementServer():
@type url: C{unicode}
@param name: human-readable, descriptive server name
@type name: C{unicode}
+ @param api_version: API version used between remote logon service and broker
+ @type api_version: C{int}
"""
+ self._api_version = api_version
self.RemoteDesktopServers = []
self.AdditionalManagementServers = []
self.URL = url
@@ -104,7 +109,7 @@ class RDPServer():
Instantiate a UCCS compatible RDP server session profile object.
"""
- def __init__(self, host, name, username='', password=''):
+ def __init__(self, host, name, username='', password='', api_version=latest_api_version):
"""\
@param host: hostname of RDP server host
@type host: C{unicode}
@@ -114,8 +119,11 @@ class RDPServer():
@type username: C{unicode}
@param password: password to be used for login
@type password: C{unicode}
+ @param api_version: API version used between remote logon service and broker
+ @type api_version: C{int}
"""
+ self._api_version = api_version
self.URL = 'http://{url}/'.format(url=host)
self.Name = name
self.Protocol = 'rdp'
@@ -153,7 +161,7 @@ class ICAServer():
Instantiate a UCCS compatible ICA server session profile object.
"""
- def __init__(self, host, name, username='', password=''):
+ def __init__(self, host, name, username='', password='', api_version=latest_api_version):
"""\
@param host: hostname of ICA server host
@type host: C{unicode}
@@ -163,8 +171,11 @@ class ICAServer():
@type username: C{unicode}
@param password: password to be used for login
@type password: C{unicode}
+ @param api_version: API version used between remote logon service and broker
+ @type api_version: C{int}
"""
+ self._api_version = api_version
self.URL = 'http://{url}/'.format(url=host)
self.Name = name
self.Protocol = 'ica'
@@ -202,7 +213,7 @@ class X2GoServer():
Instantiate a UCCS compatible X2Go Server session profile object.
"""
- def __init__(self, host, name, username='', password=''):
+ def __init__(self, host, name, username='', password='', api_version=latest_api_version):
"""\
@param host: hostname of X2Go Server host
@type host: C{unicode}
@@ -212,15 +223,39 @@ class X2GoServer():
@type username: C{unicode}
@param password: password to be used for login
@type password: C{unicode}
+ @param api_version: API version used between remote logon service and broker
+ @type api_version: C{int}
"""
+ self._api_version = api_version
self.URL = 'http://{url}/'.format(url=host)
self.Name = name
self.Protocol = 'x2go'
- self.CommandRequired = True
+ if self._api_version == 4:
+ self.SessionTypeRequired = True
+ else:
+ self.CommandRequired = True
self.Username = username
self.Password = password
+ # legacy: API v4 (not used in API v5 and higher)
+ def set_session_type(self, session_type):
+ """\
+ Set the session_type to be used on this X2Go Server.
+
+ @param command: the session type to be set
+ @type command: C{unicode}
+
+ @raise TypeError: command has to be C{str}
+
+ """
+ #FIXME: throw an exception when used with API v5 or newer
+ if isinstance(session_type, str):
+ self.SessionType = session_type
+ else:
+ raise TypeError("set_session_type() expects a string argument")
+
+ # since: API v5
def set_command(self, command):
"""\
Set the command to be used on this X2Go Server.
@@ -231,12 +266,11 @@ class X2GoServer():
@raise TypeError: command has to be C{str}
"""
+ #FIXME: throw an exception when used with API v4
if isinstance(command, str):
self.Command = command
- elif isinstance(command, str):
- self.Command = command
else:
- raise TypeError("set_command() expects a string or unicode argument")
+ raise TypeError("set_command() expects a string argument")
def toJson(self):
"""\
diff --git a/x2gobroker/web/uccs.py b/x2gobroker/web/uccs.py
index 8985681..7b15147 100644
--- a/x2gobroker/web/uccs.py
+++ b/x2gobroker/web/uccs.py
@@ -67,6 +67,13 @@ class X2GoBrokerWeb(_RequestHandler):
@x2gobroker.basicauth.require_basic_auth('Authentication required', credentials_validate)
class X2GoBrokerWebAPI(tornado.web.RequestHandler):
+ def __init__(self, *args, **kwargs):
+ # latest API version is 5
+ self.api_version = 5
+ self.api_versions_supported = [4, 5]
+ self.latest_api_version = max (self.api_versions_supported)
+ tornado.web.RequestHandler.__init__(self, *args, **kwargs)
+
http_header_items = {
'Content-Type': 'text/plain; charset=utf-8',
'Expires': '+1h',
@@ -84,9 +91,10 @@ class X2GoBrokerWebAPI(tornado.web.RequestHandler):
backend = args[0]
api_version = args[1]
try:
- api_version = int(api_version)
+ self.api_version = int(api_version)
except TypeError:
- api_version = 4
+ # assume latest API, shouldn't we actually throw an error here?
+ self.api_version = self.latest_api_version
if not backend:
self.backend = x2gobroker.defaults.X2GOBROKER_DEFAULT_BACKEND
@@ -157,8 +165,10 @@ class X2GoBrokerWebAPI(tornado.web.RequestHandler):
host='{hostname}'.format(hostname=hosts[0]),
name=profile['name'],
username=profile['user'],
+ api_version=self.api_version,
)
ts.set_domain('LOCAL')
+
else:
# obligatory profile keys:
@@ -185,7 +195,12 @@ class X2GoBrokerWebAPI(tornado.web.RequestHandler):
_cmd = profile['command']
if _cmd.upper() in x2gobroker.defaults.X2GO_DESKTOP_SESSIONS:
_cmd = _cmd.upper()
- ts.set_command(_cmd)
+
+ if api_version == 4:
+ ts.set_session_type(_cmd)
+ else:
+ ts.set_command(_cmd)
+
ms.add_terminalserver(ts)
ms.set_default(ts.Name)
@@ -193,4 +208,3 @@ class X2GoBrokerWebAPI(tornado.web.RequestHandler):
self.write(output)
return
-
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git
More information about the x2go-commits
mailing list