18
18
import logging
19
19
20
20
import nuvolaris .config as cfg
21
+ # from pymilvus import MilvusClient, connections, db
21
22
from nuvolaris .milvus_simple_client import MilvusSimpleClient as MilvusClient
22
- #from pymilvus import MilvusClient, connections, db
23
+
23
24
24
25
class MilvusAdminClient :
25
26
"""
@@ -33,6 +34,15 @@ def __init__(self, db_name="default"):
33
34
self .milvus_url = f"http://{ self .milvus_api_host } :{ self .milvus_api_port } "
34
35
self .milvus_admin_token = f"root:{ self .admin_password } "
35
36
37
+ #self.global_privileges_v1 = ['CreateCollection', 'DropCollection', 'DescribeCollection', 'ShowCollections',
38
+ # 'RenameCollection']
39
+ self .global_privileges_v1 = []
40
+
41
+ # references:
42
+ # https://milvus.io/docs/privilege_group.md
43
+ # https://milvus.io/docs/grant_privileges.md#Grant-a-privilege-or-a-privilege-group-to-a-role
44
+ self .global_privileges_v2 = ['CollectionAdmin' ,'DatabaseAdmin' ]
45
+
36
46
def setup_user (self , username , password ,database ):
37
47
"""
38
48
Creates a user into MILVUS, creates a corresponding database
@@ -53,12 +63,11 @@ def setup_user(self, username, password,database):
53
63
# rest of action are performed specifying the database
54
64
client = MilvusClient (uri = self .milvus_url ,token = self .milvus_admin_token , db_name = database )
55
65
client .create_role (role_name = role ,db_name = database )
56
- client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = 'CreateCollection' , db_name = database )
57
- client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = 'DropCollection' , db_name = database )
58
- client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = 'DescribeCollection' , db_name = database )
59
- client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = 'ShowCollections' , db_name = database )
60
- client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = 'RenameCollection' , db_name = database )
61
- client .grant_privilege (role_name = role , object_type = 'Collection' , object_name = '*' , privilege = '*' , db_name = database )
66
+ for priv in self .global_privileges_v1 :
67
+ client .grant_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = priv , db_name = database )
68
+ for priv in self .global_privileges_v2 :
69
+ client .grant_privilege_v2 (role_name = role , object_type = 'Global' , object_name = '*' , collection_name = '*' , privilege = priv , db_name = database )
70
+
62
71
client .grant_role (user_name = username ,role_name = role ,db_name = database )
63
72
client .close ()
64
73
return True
@@ -82,7 +91,16 @@ def remove_user(self, username, database):
82
91
client .drop_collection (collection_name = collection )
83
92
client .close ()
84
93
85
- client = MilvusClient (uri = self .milvus_url ,token = self .milvus_admin_token )
94
+ client = MilvusClient (uri = self .milvus_url ,token = self .milvus_admin_token )
95
+
96
+ for privilege in self .global_privileges_v1 :
97
+ client .revoke_privilege (role_name = role , object_type = 'Global' , object_name = '*' , privilege = privilege ,
98
+ db_name = database )
99
+ for privilege in self .global_privileges_v2 :
100
+ client .revoke_privilege_v2 (role_name = role , object_type = 'Global' , object_name = '*' , collection_name = '*' ,
101
+ privilege = privilege , db_name = database )
102
+
103
+
86
104
client .drop_role (role_name = role ,db_name = database )
87
105
client .drop_user (user_name = username )
88
106
client .drop_database (db_name = database )
0 commit comments