1#!/usr/local/bin/python3.8
2# -*- coding:utf-8 -*-
3
4# Copyright (C) 2020 Inspur Inc. All Rights Reserved.
5# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
6
7from __future__ import (absolute_import, division, print_function)
8
9__metaclass__ = type
10
11DOCUMENTATION = '''
12---
13module: edit_ldap_group
14version_added: "0.1.0"
15author:
16    - WangBaoshan (@ISIB-group)
17short_description: Set ldap group information.
18description:
19   - Set ldap group information on Inspur server.
20deprecated:
21   removed_in: 3.0.0
22   why: Merge functions into the M(inspur.sm.ldap_group) module.
23   alternative: Use M(inspur.sm.ldap_group) instead.
24   removed_from_collection: inspur.sm
25options:
26    id:
27        description:
28            - Group id.
29        choices: ['1', '2', '3', '4', '5']
30        type: str
31        required: true
32    name:
33        description:
34            - Group name.
35        type: str
36    base:
37        description:
38            - Search Base
39            - Search base is a string of 4 to 64 alpha-numeric characters;
40            - It must start with an alphabetical character;
41            - Special Symbols like dot(.), comma(,), hyphen(-), underscore(_), equal-to(=) are allowed.
42        type: str
43    pri:
44        description:
45            - Group privilege.
46        choices: ['administrator', 'user', 'operator', 'oem', 'none']
47        type: str
48    kvm:
49        description:
50            - Kvm privilege.
51        choices: ['enable', 'disable']
52        type: str
53    vm:
54        description:
55            - Vmedia privilege.
56        choices: ['enable', 'disable']
57        type: str
58extends_documentation_fragment:
59    - inspur.sm.ism
60'''
61
62EXAMPLES = '''
63- name: Ldap group test
64  hosts: ism
65  connection: local
66  gather_facts: no
67  vars:
68    ism:
69      host: "{{ ansible_ssh_host }}"
70      username: "{{ username }}"
71      password: "{{ password }}"
72
73  tasks:
74
75  - name: "Edit ldap group information"
76    inspur.sm.edit_ldap_group:
77      id: "1"
78      name: "wbs"
79      base: "cn=manager"
80      pri: "administrator"
81      kvm: "enable"
82      vm: "disable"
83      provider: "{{ ism }}"
84'''
85
86RETURN = '''
87message:
88    description: Messages returned after module execution.
89    returned: always
90    type: str
91state:
92    description: Status after module execution.
93    returned: always
94    type: str
95changed:
96    description: Check to see if a change was made on the device.
97    returned: always
98    type: bool
99'''
100
101from ansible.module_utils.basic import AnsibleModule
102from ansible_collections.inspur.sm.plugins.module_utils.ism import (ism_argument_spec, get_connection)
103
104
105class LDAP(object):
106    def __init__(self, argument_spec):
107        self.spec = argument_spec
108        self.module = None
109        self.init_module()
110        self.results = dict()
111
112    def init_module(self):
113        """Init module object"""
114
115        self.module = AnsibleModule(
116            argument_spec=self.spec, supports_check_mode=False)
117
118    def run_command(self):
119        self.module.params['subcommand'] = 'setldapgroup'
120        self.results = get_connection(self.module)
121        if self.results['State'] == 'Success':
122            self.results['changed'] = True
123
124    def show_result(self):
125        """Show result"""
126        self.module.exit_json(**self.results)
127
128    def work(self):
129        """Worker"""
130        self.run_command()
131        self.show_result()
132
133
134def main():
135    argument_spec = dict(
136        id=dict(type='str', required=True, choices=['1', '2', '3', '4', '5']),
137        name=dict(type='str', required=False),
138        base=dict(type='str', required=False),
139        pri=dict(type='str', required=False, choices=['administrator', 'user', 'operator', 'oem', 'none']),
140        kvm=dict(type='str', required=False, choices=['enable', 'disable']),
141        vm=dict(type='str', required=False, choices=['enable', 'disable']),
142    )
143    argument_spec.update(ism_argument_spec)
144    ldap_obj = LDAP(argument_spec)
145    ldap_obj.work()
146
147
148if __name__ == '__main__':
149    main()
150