Implement change registration
[cascardo/ipsilon.git] / ipsilon / providers / openidp.py
index 6bdf557..8f74578 100644 (file)
@@ -1,8 +1,8 @@
-# Copyright (C) 2014  Ipsilon project Contributors, for licensee see COPYING
+# Copyright (C) 2014 Ipsilon project Contributors, for license see COPYING
 
 from __future__ import absolute_import
 
-from ipsilon.providers.common import ProviderBase
+from ipsilon.providers.common import ProviderBase, ProviderInstaller
 from ipsilon.providers.openid.store import OpenIDStore
 from ipsilon.providers.openid.auth import OpenID
 from ipsilon.providers.openid.extensions.common import LoadExtensions
@@ -131,18 +131,22 @@ Provides OpenID 2.0 authentication infrastructure. """
         self.extensions.enable(self._config['enabled extensions'].get_value())
 
 
-class Installer(object):
+class Installer(ProviderInstaller):
 
     def __init__(self, *pargs):
+        super(Installer, self).__init__()
         self.name = 'openid'
-        self.ptype = 'provider'
         self.pargs = pargs
 
     def install_args(self, group):
         group.add_argument('--openid', choices=['yes', 'no'], default='yes',
                            help='Configure OpenID Provider')
+        group.add_argument('--openid-dburi',
+                           help='OpenID database URI')
+        group.add_argument('--openid-extensions', default='',
+                           help='List of OpenID Extensions to enable')
 
-    def configure(self, opts):
+    def configure(self, opts, changes):
         if opts['openid'] != 'yes':
             return
 
@@ -158,7 +162,11 @@ class Installer(object):
         po.wipe_data()
         po.wipe_config_values()
         config = {'endpoint url': url,
-                  'identity_url_template': '%sid/%%(username)s' % url}
+                  'identity url template': '%sid/%%(username)s' % url,
+                  'database url': opts['openid_dburi'] or
+                  opts['database_url'] % {
+                      'datadir': opts['data_dir'], 'dbname': 'openid'},
+                  'enabled extensions': opts['openid_extensions']}
         po.save_plugin_config(config)
 
         # Update global config to add login plugin