[X2Go-Commits] x2gobroker.git - statusflag (branch) updated: 2b35e46b3b90f217ed03b610a2f9ca699fe232f0

X2Go dev team git-admin at x2go.org
Tue Jun 4 21:09:29 CEST 2013


The branch, statusflag has been updated
       via  2b35e46b3b90f217ed03b610a2f9ca699fe232f0 (commit)
      from  a5b97c6f48336870817e6791036b51ad7070534d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 etc/x2gobroker-sessionprofiles.conf      |    2 +-
 x2gobroker/backends/base.py              |   21 ++++++++++
 x2gobroker/backends/inifile.py           |   35 ++++++----------
 x2gobroker/config.py                     |   37 ++++++++++++++---
 x2gobroker/defaults.py                   |   36 ++++++++++++++++
 x2gobroker/tests/test_backend_inifile.py |   66 ++++++++++++++++++++++++++++++
 6 files changed, 167 insertions(+), 30 deletions(-)
 create mode 100644 x2gobroker/tests/test_backend_inifile.py

The diff of changes is:
diff --git a/etc/x2gobroker-sessionprofiles.conf b/etc/x2gobroker-sessionprofiles.conf
index 75b26c4..24fd3ed 100644
--- a/etc/x2gobroker-sessionprofiles.conf
+++ b/etc/x2gobroker-sessionprofiles.conf
@@ -23,7 +23,7 @@
 # X2Go Servers means securing the SSH daemon that runs on the X2Go Server.
 
 
-[DEFAULTS]
+[DEFAULT]
 defsndport=true
 useiconv=false
 iconvfrom=UTF-8
diff --git a/x2gobroker/backends/base.py b/x2gobroker/backends/base.py
index e08db6c..ee824f9 100644
--- a/x2gobroker/backends/base.py
+++ b/x2gobroker/backends/base.py
@@ -110,6 +110,27 @@ class X2GoBroker(object):
         """
         return self.config.get_value(backend, option)
 
+    def get_profile_ids(self):
+        """\
+        Retrieve the complete list of session profile IDs.
+
+        @return: list of profile IDs
+        @rtype: C{list}
+
+        """
+        return []
+
+    def get_profile_defaults(self):
+        """\
+        Get the session profile defaults, i.e. profile options that all
+        configured session profiles have in common.
+
+        @return: a dictionary containing the session profile defaults
+        @rtype: C{dict}
+
+        """
+        return {}
+
     def test_connection(self):
         #if($cgi->param('task') eq 'testcon')
         #{
diff --git a/x2gobroker/backends/inifile.py b/x2gobroker/backends/inifile.py
index 6505150..b5100a8 100644
--- a/x2gobroker/backends/inifile.py
+++ b/x2gobroker/backends/inifile.py
@@ -40,38 +40,27 @@ class X2GoBroker(base.X2GoBroker):
 
     backend_name = 'inifile'
 
-    def __init__(self, profile_config=x2gobroker.defaults.X2GOBROKER_SESSIONPROFILES, **kwargs):
+    def __init__(self, profile_config_file=None, profile_config_defaults=None, **kwargs):
         """\
-
         @param config_file: path to the X2Go Session Broker configuration file (x2gobroker.conf)
         @type config_file: C{unicode}
-        @param profile_config: path to the backend's session profile configuration (x2gobroker-sessionprofiles.conf)
-        @type profile_config: C{unicode} 
+        @param profile_config_file: path to the backend's session profile configuration (x2gobroker-sessionprofiles.conf)
+        @type profile_config_file: C{unicode} 
+
         """
-        if kwargs.has_key('profile_config'):
-            _profile_config = kwargs['profile_config']
-        self.profile_config = x2gobroker.config.X2GoBrokerConfigFile(config_files=_profile_config)
+        base.X2GoBroker.__init__(self, **kwargs)
 
-    def get_profile_ids(self):
-        """\
-        Retrieve the complete list of session profile IDs.
+        if profile_config_file is None: profile_config_file = x2gobroker.defaults.X2GOBROKER_SESSIONPROFILES
+        if profile_config_defaults is None: profile_config_defaults = x2gobroker.defaults.X2GOBROKER_SESSIONPROFILE_DEFAULTS
+        self.session_profiles = x2gobroker.config.X2GoBrokerConfigFile(config_files=profile_config_file, defaults=profile_config_defaults)
 
-        @return: list of profile IDs
-        @rtype: C{list}
+    def get_profile_ids(self):
 
-        """
-        return self.profile_config.sections()
+        return self.session_profiles.list_sections()
 
     def get_profile_defaults(self):
-        """\
-        Get the session profile defaults, i.e. profile options that all
-        configured session profiles have in common.
 
-        @return: a dictionary containing the session profile defaults
-        @rtype: C{dict}
-
-        """
-        return self.profile_config.get_section('DEFAULTS')
+        return self.session_profiles.get_defaults()
 
     def get_profile_config(self, profile_id):
         """\
@@ -84,7 +73,7 @@ class X2GoBroker(base.X2GoBroker):
         @rtype: C{dict}
 
         """
-        return self.profile_config.get_section(profile_id)
+        return self.session_profiles.get_section(profile_id)
 
     def list_profiles(self, username):
 
diff --git a/x2gobroker/config.py b/x2gobroker/config.py
index a4c7f2f..b0ed1f8 100644
--- a/x2gobroker/config.py
+++ b/x2gobroker/config.py
@@ -61,7 +61,7 @@ class X2GoBrokerConfigFile(object):
     write_user_config = False
     user_config_file = None
 
-    def __init__(self, config_files=_X2GOBROKER_CONFIG, defaults=None):
+    def __init__(self, config_files=[], defaults={}):
         """\
         @param config_files: a list of configuration file names (e.g. a global filename and a user's home
             directory filename)
@@ -71,10 +71,6 @@ class X2GoBrokerConfigFile(object):
         @type defaults: C{dict}
 
         """
-        # make sure a None type gets turned into list type
-        if not config_files:
-            config_files = []
-
         # allow string/unicode objects as config_files, as well
         if type(config_files) in (types.StringType, types.UnicodeType):
             config_files = [config_files]
@@ -252,7 +248,7 @@ class X2GoBrokerConfigFile(object):
         """
         if key_type is None:
             key_type = self.get_type(section, key)
-        if self.iniConfig.has_option(section, key):
+        if self.iniConfig.has_option(section, key) or section == 'DEFAULT':
             if key_type is types.BooleanType:
                 return self.iniConfig.getboolean(section, key)
             elif key_type is types.IntType:
@@ -273,6 +269,25 @@ class X2GoBrokerConfigFile(object):
     get = get_value
     __call__ = get_value
 
+    def get_defaults(self):
+        """\
+        Get all keys and values from the [DEFAULT] section of the configuration file.
+
+        @return: the defaults with all keys and values
+        @rtype: C{dict}
+
+        """
+        _my_defaults = {}
+        _ini_defaults = self.iniConfig.defaults()
+        for option in _ini_defaults.keys():
+            try:
+                _my_defaults[option] = self.get('DEFAULT', option, key_type=self.get_type('DEFAULT', option))
+            except KeyError:
+                continue
+
+        return _my_defaults
+
+
     def get_section(self, section):
         """\
         Get all keys and values for a certain section of the config file.
@@ -291,6 +306,16 @@ class X2GoBrokerConfigFile(object):
 
         return _section_config
 
+    def list_sections(self):
+        """\
+        Return a list of all present sections in a config file.
+
+        @return: list of sections in this config file
+        @rtype: C{list}
+
+        """
+        return self.iniConfig.sections()
+
     @property
     def printable_config_file(self):
         """\
diff --git a/x2gobroker/defaults.py b/x2gobroker/defaults.py
index 5a10a95..c11b36f 100644
--- a/x2gobroker/defaults.py
+++ b/x2gobroker/defaults.py
@@ -79,3 +79,39 @@ X2GOBROKER_CONFIG_DEFAULTS = {
         'starttls': False,
     },
 }
+
+# defaults for X2Go Sessino Broker session profiles file
+X2GOBROKER_SESSIONPROFILE_DEFAULTS = {
+    'DEFAULT': {
+        'defsndport': True,
+        'useiconv': False,
+        'iconvfrom': 'UTF-8',
+        'height': 600,
+        'export': '',
+        'quality': 9,
+        'fullscreen': False,
+        'layout': '',
+        'useexports': True,
+        'width': 800,
+        'speed': 2,
+        'soundsystem': 'pulse',
+        'print': True,
+        'type': 'auto',
+        'sndport': 4713,
+        'xinerama': True,
+        'variant': '',
+        'usekbd': True,
+        'fstunnel': True,
+        'applications': ['TERMINAL','WWWBROWSER','MAILCLIENT','OFFICE'],
+        'multidisp': False,
+        'sshproxyport': 22,
+        'sound': True,
+        'rootless': False,
+        'iconvto': 'UTF-8',
+        'soundtunnel': True,
+        'dpi': 96,
+        'sshport': 22,
+        'setdpi': 0,
+        'pack': '16m-jpeg',
+    },
+}
\ No newline at end of file
diff --git a/x2gobroker/tests/test_backend_inifile.py b/x2gobroker/tests/test_backend_inifile.py
new file mode 100644
index 0000000..8110902
--- /dev/null
+++ b/x2gobroker/tests/test_backend_inifile.py
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2012 by Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
+# 
+# X2Go Session Broker is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# X2Go Session Broker is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+import unittest
+import tempfile
+
+# Python X2GoBroker modules
+import x2gobroker.backends.inifile
+import x2gobroker.defaults
+
+class TestX2GoBrokerBackendInifile(unittest.TestCase):
+
+    ### TEST SESSION PROFILES: get_profile_ids()
+
+    def test_getprofileids(self):
+        inifile_backend = x2gobroker.backends.inifile.X2GoBroker(profile_config_file='../../etc/x2gobroker-sessionprofiles.conf')
+        _profile_ids = inifile_backend.get_profile_ids()
+        self.assertEqual(len(_profile_ids), 5)
+        _expected_profile_ids = ['pool-A-server-A', 'pool-A-server-B', 'pool-A-server-C', 'pool-B-server-D-LXDE', 'pool-C-XFCE', ]
+        for _id in _profile_ids:
+            self.assertTrue( ( _id in _expected_profile_ids ) )
+        for _id in _expected_profile_ids:
+            self.assertTrue( ( _id in _profile_ids ) )
+
+    ### TEST SESSION PROFILES: get_profile_defaults()
+
+    def test_getprofiledefaults(self):
+        inifile_backend = x2gobroker.backends.inifile.X2GoBroker(profile_config_file='../../etc/x2gobroker-sessionprofiles.conf')
+        _profile_defaults = inifile_backend.get_profile_defaults()
+        _expected_profile_defaults = x2gobroker.defaults.X2GOBROKER_SESSIONPROFILE_DEFAULTS['DEFAULT']
+        for _param in _profile_defaults:
+            self.assertTrue( ( _param in _expected_profile_defaults.keys() and _profile_defaults[_param] == _expected_profile_defaults[_param] ) )
+        for _param in _expected_profile_defaults:
+            self.assertTrue( ( _param in _profile_defaults.keys() and _profile_defaults[_param] == _expected_profile_defaults[_param] ) )
+
+    ### TEST: select_profile() method
+
+#    def test_profileselection(self):
+#        _output = {
+#            'server': 'localhost:22',
+#        }
+        zeroconf_backend = x2gobroker.backends.zeroconf.X2GoBroker()
+#        self.assertEqual(zeroconf_backend.select_profile('profile_bar'), _output)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestX2GoBrokerBackendInifile))
+    return suite


hooks/post-receive
-- 
x2gobroker.git (HTTP(S) Session broker for X2Go)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2gobroker.git" (HTTP(S) Session broker for X2Go).




More information about the x2go-commits mailing list