~canonical-ci-engineering/ubuntu-ci-services-itself/ansible

« back to all changes in this revision

Viewing changes to library/group

  • Committer: Package Import Robot
  • Author(s): Janos Guljas
  • Date: 2013-04-06 23:27:08 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20130406232708-6rn7w7mprfbjpmmk
Tags: 1.1+dfsg-1
* New upstream release.
* Update patches disable-google-analytics.patch and 
  remove-external-image.patch to apply cleanly.
* Add remove-external-footer-image.patch to remove link on external resource.
* Add remove-external-training-references.patch:
  Training advertise contains links to external resources that may not be
  available or may be used for tracking users activity without their
  knowledge by the third-party.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
 
1
#!/usr/bin/python
2
2
# -*- coding: utf-8 -*-
3
3
 
4
4
# (c) 2012, Stephen Fromm <sfromm@gmail.com>
22
22
---
23
23
module: group
24
24
author: Stephen Fromm
25
 
version_added: 0.0.2
 
25
version_added: "0.0.2"
26
26
short_description: Add or remove groups
27
27
requirements: [ groupadd, groupdel, groupmod ]
28
28
description:
45
45
    system:
46
46
        required: false
47
47
        default: "no"
48
 
        choices: [ yes, no ]
 
48
        choices: [ "yes", "no" ]
49
49
        description:
50
50
            - If I(yes), indicates that the group created is a system group.
51
51
examples:
91
91
            syslog.openlog('ansible-%s' % os.path.basename(__file__))
92
92
            syslog.syslog(syslog.LOG_NOTICE, 'Command %s' % '|'.join(cmd))
93
93
 
94
 
        p = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
95
 
        (out, err) = p.communicate()
96
 
        rc = p.returncode
97
 
        return (rc, out, err)
 
94
        return self.module.run_command(cmd)
98
95
 
99
96
    def group_del(self):
100
97
        cmd = [self.module.get_bin_path('groupdel', True), self.name]
121
118
                    cmd.append(kwargs[key])
122
119
        if len(cmd) == 1:
123
120
            return (None, '', '')
 
121
        if self.module.check_mode:
 
122
            return (True, '', '')
124
123
        cmd.append(self.name)
125
124
        return self.execute_command(cmd)
126
125
 
167
166
 
168
167
# ===========================================
169
168
 
 
169
class AIX(Group):
 
170
    """
 
171
    This is a AIX Group manipulation class.
 
172
 
 
173
    This overrides the following methods from the generic class:-
 
174
      - group_del()
 
175
      - group_add()
 
176
      - group_mod()
 
177
    """
 
178
 
 
179
    platform = 'AIX'
 
180
    distribution = None
 
181
    GROUPFILE = '/etc/group'
 
182
 
 
183
    def group_del(self):
 
184
        cmd = [self.module.get_bin_path('rmgroup', True), self.name]
 
185
        return self.execute_command(cmd)
 
186
 
 
187
    def group_add(self, **kwargs):
 
188
        cmd = [self.module.get_bin_path('mkgroup', True)]
 
189
        for key in kwargs:
 
190
            if key == 'gid' and kwargs[key] is not None:
 
191
                cmd.append('id='+kwargs[key])
 
192
            elif key == 'system' and kwargs[key] == 'yes':
 
193
                cmd.append('-a')
 
194
        cmd.append(self.name)
 
195
        return self.execute_command(cmd)
 
196
 
 
197
    def group_mod(self, **kwargs):
 
198
        cmd = [self.module.get_bin_path('chgroup', True)]
 
199
        info = self.group_info()
 
200
        for key in kwargs:
 
201
            if key == 'gid':
 
202
                if kwargs[key] is not None and info[2] != int(kwargs[key]):
 
203
                    cmd.append('id='+kwargs[key])
 
204
        if len(cmd) == 1:
 
205
            return (None, '', '')
 
206
        if self.module.check_mode:
 
207
            return (True, '', '')
 
208
        cmd.append(self.name)
 
209
        return self.execute_command(cmd)
 
210
 
 
211
# ===========================================
 
212
 
170
213
def main():
171
214
    module = AnsibleModule(
172
215
        argument_spec = dict(
173
 
            state=dict(default='present', choices=['present', 'absent']),
174
 
            name=dict(required=True),
175
 
            gid=dict(default=None),
176
 
            system=dict(default='no', choices=['yes', 'no']),
177
 
        )
 
216
            state=dict(default='present', choices=['present', 'absent'], type='str'),
 
217
            name=dict(required=True, type='str'),
 
218
            gid=dict(default=None, type='str'),
 
219
            system=dict(default='no', choices=['yes', 'no'], type='bool'),
 
220
        ),
 
221
        supports_check_mode=True
178
222
    )
179
223
 
180
224
    group = Group(module)
191
235
    result = {}
192
236
    result['name'] = group.name
193
237
    result['state'] = group.state
 
238
 
194
239
    if group.state == 'absent':
 
240
 
195
241
        if group.group_exists():
 
242
            if module.check_mode:
 
243
                module.exit_json(changed=True)
196
244
            (rc, out, err) = group.group_del()
197
245
            if rc != 0:
198
 
                module.fail_json(name=name, msg=err)
 
246
                module.fail_json(name=group.name, msg=err)
 
247
 
199
248
    elif group.state == 'present':
 
249
 
200
250
        if not group.group_exists():
 
251
            if module.check_mode:
 
252
                module.exit_json(changed=True)
201
253
            (rc, out, err) = group.group_add(gid=group.gid, system=group.system)
202
254
        else:
203
255
            (rc, out, err) = group.group_mod(gid=group.gid)