__init__ needs to be in the main package
[cascardo/ipsilon.git] / ipsilon / info / nss.py
old mode 100755 (executable)
new mode 100644 (file)
index 3dfd885..0669e95
@@ -1,29 +1,26 @@
-#!/usr/bin/python
-#
 # Copyright (C) 2014 Ipsilon Project Contributors
 #
 # See the file named COPYING for the project license
 
 from ipsilon.info.common import InfoProviderBase
 from ipsilon.info.common import InfoProviderInstaller
-from ipsilon.info.common import InfoMapping
 from ipsilon.util.plugin import PluginObject
+from ipsilon.util.policy import Policy
 import grp
 import pwd
 import os
 
 
-posix_map = {
-    'gecos': 'fullname'
-}
+posix_map = [
+    ['gecos', 'fullname']
+]
 
 
 class InfoProvider(InfoProviderBase):
 
-    def __init__(self):
-        super(InfoProvider, self).__init__()
-        self.mapper = InfoMapping()
-        self.mapper.set_mapping(posix_map)
+    def __init__(self, *pargs):
+        super(InfoProvider, self).__init__(*pargs)
+        self.mapper = Policy(posix_map)
         self.name = 'nss'
         self.new_config(self.name)
 
@@ -60,12 +57,12 @@ class InfoProvider(InfoProviderBase):
         reply = dict()
         try:
             posix_user = self._get_posix_user(user)
-            userattrs, extras = self.mapper.map_attrs(posix_user)
+            userattrs, extras = self.mapper.map_attributes(posix_user)
             groups = self._get_posix_groups(posix_user['username'],
                                             posix_user['gidNumber'])
-            reply['userdata'] = userattrs
-            reply['groups'] = groups
-            reply['extras'] = {'posix': extras}
+            reply = userattrs
+            reply['_groups'] = groups
+            reply['_extras'] = {'posix': extras}
 
         except KeyError:
             pass
@@ -75,9 +72,10 @@ class InfoProvider(InfoProviderBase):
 
 class Installer(InfoProviderInstaller):
 
-    def __init__(self):
+    def __init__(self, *pargs):
         super(Installer, self).__init__()
         self.name = 'nss'
+        self.pargs = pargs
 
     def install_args(self, group):
         group.add_argument('--info-nss', choices=['yes', 'no'], default='no',
@@ -88,18 +86,11 @@ class Installer(InfoProviderInstaller):
             return
 
         # Add configuration data to database
-        po = PluginObject()
+        po = PluginObject(*self.pargs)
         po.name = 'nss'
         po.wipe_data()
-        po.wipe_config_values(self.facility)
+        po.wipe_config_values()
 
-        # Replace global config, only one plugin info can be used
-        po.name = 'global'
-        globalconf = po.get_plugin_config(self.facility)
-        if 'order' in globalconf:
-            order = globalconf['order'].split(',')
-        else:
-            order = []
-        order.append('nss')
-        globalconf['order'] = ','.join(order)
-        po.save_plugin_config(self.facility, globalconf)
+        # Update global config to add info plugin
+        po.is_enabled = True
+        po.save_enabled_state()