44# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or
55# https://www.gnu.org/licenses/gpl-3.0.txt)
66
7- from asyncio .constants import SENDFILE_FALLBACK_READBUFFER_SIZE
7+ from difflib import restore
8+ from pickle import NONE
9+ from xml .sax .saxutils import prepare_input_source
810from elasticsearch import Elasticsearch
911import ssl
1012
@@ -16,16 +18,13 @@ def new_client_basic_auth(host, auth_user, auth_pass, ca_certs, verify_certs) ->
1618
1719
1820class Role ():
19- def __init__ (self , result , role_name , cluster , indicies , state , host , auth_user , auth_pass , verify_certs , ca_certs ):
21+ def __init__ (self , result , role_name , cluster , indicies , state , host , auth_user , auth_pass , verify_certs , ca_certs ):
2022 self .role_name = role_name
2123 self .cluster = cluster
2224 self .indicies = indicies
2325 self .state = state
2426 self .result = result
2527
26- if auth_user == "" or auth_pass == "" :
27- result ['stderr' ] = "'basic_auth' for authentication defined but 'auth_user' or auth_pass' is empty"
28- return
2928 self .client = new_client_basic_auth (host = host , auth_user = auth_user , auth_pass = auth_pass , verify_certs = verify_certs , ca_certs = ca_certs )
3029
3130 self .handle ()
@@ -36,39 +35,118 @@ def return_result(self) -> dict:
3635
3736
3837 def handle (self ):
38+ all_roles = self .get_all ()
39+
3940 if self .state == 'absent' :
40- res = self .delete ()
41- if res ['found' ] == True :
42- self .result ['changed' ] = True
43- self .result ['msg' ] = self .role_name + " has been deleted."
44- return
41+ if self .role_name in all_roles :
42+ res = self .delete ()
43+ if res ['found' ] == True :
44+ self .result ['changed' ] = True
45+ self .result ['msg' ] = self .role_name + " has been deleted"
46+ return
4547
4648 elif self .state == 'present' :
47- pre_role = self .get ()
48- self .result ['foo1' ] = pre_role .raw
49+ if self .role_name in all_roles .raw :
50+ pre_role = self .get ()
51+ else :
52+ pre_role = None
53+
4954 res = self .put ()
5055
5156 if res .raw ['role' ]['created' ] == True :
5257 self .result ['changed' ] = True
53- self .result ['msg' ] = self .role_name + " has been created. "
58+ self .result ['msg' ] = self .role_name + " has been created"
5459 return
5560
56- self . result [ 'foo2' ] = self . get (). raw
57- if pre_role .raw != self .get ().raw :
58- self .result ['changed' ] = True
59- self .result ['msg' ] = self .role_name + " has been updated"
60- return
61+ if pre_role != None :
62+ if pre_role .raw != self .get ().raw :
63+ self .result ['changed' ] = True
64+ self .result ['msg' ] = self .role_name + " has been updated"
65+ return
6166
6267 return
6368
6469
70+ def get_all (self ):
71+ return self .client .security .get_role ()
72+
73+
6574 def get (self ):
6675 return self .client .security .get_role (name = self .role_name )
6776
6877
69- def put (self ):
78+ def put (self ):
7079 return self .client .security .put_role (name = self .role_name , cluster = self .cluster , indices = self .indicies )
7180
7281
7382 def delete (self ):
74- return self .client .security .delete_role (name = self .role_name )
83+ return self .client .security .delete_role (name = self .role_name )
84+
85+
86+ class User ():
87+ def __init__ (self , result , user_name , full_name , password , email , roles , enabled , state , host , auth_user , auth_pass , verify_certs , ca_certs ):
88+ self .user_name = user_name
89+ self .full_name = full_name
90+ self .password = password
91+ self .email = email
92+ self .roles = roles
93+ self .enabled = enabled
94+ self .state = state
95+ self .result = result
96+
97+ self .client = new_client_basic_auth (host = host , auth_user = auth_user , auth_pass = auth_pass , ca_certs = ca_certs , verify_certs = verify_certs )
98+
99+ self .handle ()
100+
101+
102+ def return_result (self ) -> dict :
103+ return self .result
104+
105+
106+ def handle (self ):
107+ all_users = self .get_all ()
108+
109+ if self .state == 'absent' :
110+ if self .user_name in all_users :
111+ res = self .delete ()
112+ if res ['found' ] == True :
113+ self .result ['changed' ] = True
114+ self .result ['msg' ] = self .user_name + " has been deleted"
115+ return
116+
117+ elif self .state == 'present' :
118+ if self .user_name in all_users .raw :
119+ pre_user = self .get ()
120+ else :
121+ pre_user = None
122+
123+ res = self .put ()
124+
125+ if res .raw ['created' ] == True :
126+ self .result ['changed' ] = True
127+ self .result ['msg' ] = self .user_name + " has been created"
128+ return
129+
130+ if pre_user != None :
131+ if pre_user .raw != self .get ().raw :
132+ self .result ['changed' ] = True
133+ self .result ['msg' ] = self .user_name + " has beed updated"
134+ return
135+
136+ return
137+
138+
139+ def get_all (self ):
140+ return self .client .security .get_user ()
141+
142+
143+ def get (self ):
144+ return self .client .security .get_user (username = self .user_name )
145+
146+
147+ def put (self ):
148+ return self .client .security .put_user (username = self .user_name , password = self .password , email = self .email , full_name = self .full_name , enabled = self .enabled , roles = self .roles )
149+
150+
151+ def delete (self ):
152+ return self .client .security .delete_user (username = self .user_name )
0 commit comments