diff options
author | Simo Sorce <simo@redhat.com> | 2014-03-26 15:20:16 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-03-28 14:12:39 -0400 |
commit | 0338db2eb3197ce0024d0192bd981120a58de573 (patch) | |
tree | 2609cc56f09a5d1513c432db448e28ad408b9aaf /ipsilon/admin | |
parent | d06318be2430b6863a5695f76811bf43a617bade (diff) | |
download | ipsilon-0338db2eb3197ce0024d0192bd981120a58de573.tar.gz ipsilon-0338db2eb3197ce0024d0192bd981120a58de573.tar.xz ipsilon-0338db2eb3197ce0024d0192bd981120a58de573.zip |
Basic Identity providers plugin configuration
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'ipsilon/admin')
-rwxr-xr-x | ipsilon/admin/providers.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ipsilon/admin/providers.py b/ipsilon/admin/providers.py new file mode 100755 index 0000000..26e96a7 --- /dev/null +++ b/ipsilon/admin/providers.py @@ -0,0 +1,78 @@ +#!/usr/bin/python +# +# Copyright (C) 2014 Simo Sorce <simo@redhat.com> +# +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import cherrypy +from ipsilon.util.page import Page +from ipsilon.providers.common import FACILITY +from ipsilon.admin.common import AdminPluginPage + + +class ProviderPlugins(Page): + def __init__(self, site, parent): + super(ProviderPlugins, self).__init__(site) + self._master = parent + self.title = 'Identity Providers' + self.url = '%s/providers' % parent.url + self.facility = FACILITY + parent.add_subtree('providers', self) + + for plugin in self._site[FACILITY]['available']: + cherrypy.log.error('Admin provider plugin: %s' % plugin) + obj = self._site[FACILITY]['available'][plugin] + self.__dict__[plugin] = AdminPluginPage(obj, self) + + def root_with_msg(self, message=None, message_type=None): + plugins = self._site[FACILITY] + return self._template('admin/providers.html', title=self.title, + baseurl=self.url, + message=message, + message_type=message_type, + available=plugins['available'], + enabled=plugins['enabled'], + menu=self._master.menu) + + def root(self, *args, **kwargs): + return self.root_with_msg() + + def enable(self, plugin): + msg = None + plugins = self._site[FACILITY] + if plugin not in plugins['available']: + msg = "Unknown plugin %s" % plugin + return self.root_with_msg(msg, "error") + obj = plugins['available'][plugin] + if obj not in plugins['enabled']: + obj.enable(self._site) + msg = "Plugin %s enabled" % obj.name + return self.root_with_msg(msg, "success") + enable.exposed = True + + def disable(self, plugin): + msg = None + plugins = self._site[FACILITY] + if plugin not in plugins['available']: + msg = "Unknown plugin %s" % plugin + return self.root_with_msg(msg, "error") + obj = plugins['available'][plugin] + if obj in plugins['enabled']: + obj.disable(self._site) + msg = "Plugin %s disabled" % obj.name + return self.root_with_msg(msg, "success") + disable.exposed = True |