diff options
author | Simo Sorce <simo@redhat.com> | 2014-06-27 19:29:27 -0400 |
---|---|---|
committer | Patrick Uiterwijk <puiterwijk@redhat.com> | 2014-09-24 20:29:41 +0200 |
commit | aa7cd3ad8e6d51f51ae46b3a6a15a9021edfa595 (patch) | |
tree | 4898b6df453237f8f9ed7451e632f77d98b91121 /ipsilon/info/nss.py | |
parent | 9c13685d58b242c865fd203fd7b4a239fbf07ac1 (diff) | |
download | ipsilon-aa7cd3ad8e6d51f51ae46b3a6a15a9021edfa595.tar.gz ipsilon-aa7cd3ad8e6d51f51ae46b3a6a15a9021edfa595.tar.xz ipsilon-aa7cd3ad8e6d51f51ae46b3a6a15a9021edfa595.zip |
Add Info Provider plugin framework
Signed-off-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
Diffstat (limited to 'ipsilon/info/nss.py')
-rwxr-xr-x | ipsilon/info/nss.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ipsilon/info/nss.py b/ipsilon/info/nss.py new file mode 100755 index 0000000..e9a3a96 --- /dev/null +++ b/ipsilon/info/nss.py @@ -0,0 +1,62 @@ +#!/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.util.plugin import PluginObject +import pwd + + +class InfoProvider(InfoProviderBase): + + def __init__(self): + super(InfoProvider, self).__init__() + self.name = 'nss' + + def get_user_attrs(self, user): + userattrs = None + try: + p = pwd.getpwnam(user) + userattrs = {'uidNumber': p[2], 'gidNumber': p[3], + 'gecos': p[4], 'homeDirectory': p[5], + 'loginShell': p[6]} + except KeyError: + pass + + return userattrs + + +class Installer(InfoProviderInstaller): + + def __init__(self): + super(Installer, self).__init__() + self.name = 'nss' + + def install_args(self, group): + group.add_argument('--info-nss', choices=['yes', 'no'], default='no', + help='Use passwd data to populate user attrs') + + def configure(self, opts): + if opts['info_nss'] != 'yes': + return + + # Add configuration data to database + po = PluginObject() + po.name = 'nss' + po.wipe_data() + po.wipe_config_values(self.facility) + + # 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.set_config(globalconf) + po.save_plugin_config(self.facility) |