Skip to content

Commit 9f2ddb2

Browse files
author
Naor Livne
committed
adding all the user groups endpoints
1 parent ca56177 commit 9f2ddb2

File tree

3 files changed

+130
-0
lines changed

3 files changed

+130
-0
lines changed

NebulaPythonSDK/sdk.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,3 +240,45 @@ def create_user(self, user, config):
240240
response = requests.request("POST", url, data=payload, headers=headers, timeout=self.request_timeout)
241241
filtered_response = {"status_code": response.status_code, "reply": response.json()}
242242
return filtered_response
243+
244+
# list all user groups
245+
def list_user_groups(self):
246+
url = self.host + "/api/" + self.API_VERSION + "/user_groups"
247+
headers = self.headers
248+
response = requests.request("GET", url, headers=headers, timeout=self.request_timeout)
249+
filtered_response = {"status_code": response.status_code, "reply": response.json()}
250+
return filtered_response
251+
252+
# list a user group configuration
253+
def list_user_group(self, user):
254+
url = self.host + "/api/" + self.API_VERSION + "/user_groups/" + user
255+
headers = self.headers
256+
response = requests.request("GET", url, headers=headers, timeout=self.request_timeout)
257+
filtered_response = {"status_code": response.status_code, "reply": response.json()}
258+
return filtered_response
259+
260+
# delete an existing nebula user group, no confirmation required in SDK so be careful
261+
def delete_user_group(self, user):
262+
url = self.host + "/api/" + self.API_VERSION + "/user_groups/" + user
263+
headers = self.headers
264+
response = requests.request("DELETE", url, headers=headers, timeout=self.request_timeout)
265+
filtered_response = {"status_code": response.status_code, "reply": response.json()}
266+
return filtered_response
267+
268+
# update a user group
269+
def update_user_group(self, user, config):
270+
url = self.host + "/api/" + self.API_VERSION + "/user_groups/" + user + "/update"
271+
payload = json.dumps(config)
272+
headers = self.headers
273+
response = requests.request("PUT", url, data=payload, headers=headers, timeout=self.request_timeout)
274+
filtered_response = {"status_code": response.status_code, "reply": response.json()}
275+
return filtered_response
276+
277+
# create a new nebula user group, requires the group name to create and a complete dict of the config values for it
278+
def create_user_group(self, user, config):
279+
url = self.host + "/api/" + self.API_VERSION + "/user_groups/" + user
280+
payload = json.dumps(config)
281+
headers = self.headers
282+
response = requests.request("POST", url, data=payload, headers=headers, timeout=self.request_timeout)
283+
filtered_response = {"status_code": response.status_code, "reply": response.json()}
284+
return filtered_response

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,4 +119,32 @@ connection.refresh_user_token("user_name")
119119
# delete a user
120120
connection.delete_user("user_name")
121121

122+
# create a user group
123+
user_group_config = {
124+
"group_members": [
125+
"user_name"
126+
],
127+
"pruning_allowed": True,
128+
"apps": {
129+
"app_name": "rw"
130+
},
131+
"device_groups": {
132+
"device_group_name": "ro"
133+
},
134+
"admin": False
135+
}
136+
connection.create_user_group("user_group_name", user_group_config)
137+
138+
# list user group info
139+
connection.list_user_group("user_group_name")
140+
141+
# list all users group
142+
connection.list_user_groups()
143+
144+
# update a user group
145+
user_group_config = {"admin": False}
146+
connection.update_user_group("user_group_name", user_group_config)
147+
148+
# delete a user group
149+
connection.delete_user_group("user_group_name")
122150
```

test/test_nebula_python_sdk.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,63 @@ def test_user_workflow(self, user="unit_test_user"):
285285
reply = nebula_connection_object.delete_user(user)
286286
self.assertEqual(reply["status_code"], 200)
287287
self.assertEqual(reply["reply"], {})
288+
289+
def test_user_group_workflow(self, user="unit_test_user", user_group="unit_test_user_group",
290+
app="unit_test_device_group_app"):
291+
nebula_connection_object = nebula_connection()
292+
293+
# make sure no user & user group exists prior to the run
294+
nebula_connection_object.delete_user(user)
295+
nebula_connection_object.delete_user_group(user_group)
296+
nebula_connection_object.delete_app(app)
297+
298+
# creating a user that will be used in the tests
299+
user_config = {"password": "unit_test_password", "token": "unit_test_token"}
300+
nebula_connection_object.create_user(user, user_config)
301+
302+
# creating a app that will be used in the tests
303+
create_temp_app(nebula_connection_object, app)
304+
305+
# check creating a user group
306+
user_group_config = {
307+
"group_members": [user],
308+
"pruning_allowed": True,
309+
"apps": {app: "rw"},
310+
"device_groups": {},
311+
"admin": False
312+
}
313+
314+
reply = nebula_connection_object.create_user_group(user_group, user_group_config)
315+
self.assertEqual(reply["status_code"], 200)
316+
self.assertEqual(reply["reply"]["user_group"], user_group)
317+
self.assertEqual(reply["reply"]["group_members"], [user])
318+
self.assertTrue(reply["reply"]["pruning_allowed"])
319+
self.assertEqual(reply["reply"]["apps"], {app: "rw"})
320+
self.assertEqual(reply["reply"]["device_groups"], {})
321+
self.assertFalse(reply["reply"]["admin"])
322+
323+
# check getting user group info
324+
reply = nebula_connection_object.list_user_group(user_group)
325+
self.assertEqual(reply["status_code"], 200)
326+
self.assertEqual(reply["reply"]["user_group"], user_group)
327+
self.assertEqual(reply["reply"]["group_members"], [user])
328+
self.assertTrue(reply["reply"]["pruning_allowed"])
329+
self.assertEqual(reply["reply"]["apps"], {app: "rw"})
330+
self.assertEqual(reply["reply"]["device_groups"], {})
331+
self.assertFalse(reply["reply"]["admin"])
332+
333+
# check updating a user group
334+
user_group_config = {"admin": True}
335+
reply = nebula_connection_object.update_user_group(user_group, user_group_config)
336+
self.assertEqual(reply["status_code"], 200)
337+
self.assertEqual(reply["reply"]["user_group"], user_group)
338+
self.assertEqual(reply["reply"]["group_members"], [user])
339+
self.assertTrue(reply["reply"]["pruning_allowed"])
340+
self.assertEqual(reply["reply"]["apps"], {app: "rw"})
341+
self.assertEqual(reply["reply"]["device_groups"], {})
342+
self.assertTrue(reply["reply"]["admin"])
343+
344+
# check deleting a user group
345+
reply = nebula_connection_object.delete_user_group(user_group)
346+
self.assertEqual(reply["status_code"], 200)
347+
self.assertEqual(reply["reply"], {})

0 commit comments

Comments
 (0)