2
2
DetectionList ,
3
3
DetectionListHandlers ,
4
4
load_user_descriptions ,
5
+ load_username_description ,
5
6
get_user_id ,
6
7
update_user ,
7
8
)
8
9
from code42cli .cmds .detectionlists .enums import DetectionListUserKeys
10
+ from code42cli .commands import Command
9
11
10
12
11
13
def load_subcommands ():
14
+
12
15
handlers = _create_handlers ()
13
16
detection_list = DetectionList .create_high_risk_employee_list (handlers )
14
- return detection_list .load_subcommands ()
17
+ cmd_list = detection_list .load_subcommands ()
18
+ cmd_list .extend (
19
+ [
20
+ Command (
21
+ u"add-risk-tags" ,
22
+ u"Associates risk tags with a user." ,
23
+ handler = add_risk_tags ,
24
+ arg_customizer = _load_risk_tag_mgmt_descriptions ,
25
+ ),
26
+ Command (
27
+ u"remove-risk-tags" ,
28
+ u"Disassociates risk tags from a user." ,
29
+ handler = remove_risk_tags ,
30
+ arg_customizer = _load_risk_tag_mgmt_descriptions ,
31
+ ),
32
+ ]
33
+ )
34
+ return cmd_list
15
35
16
36
17
37
def _create_handlers ():
@@ -20,6 +40,17 @@ def _create_handlers():
20
40
)
21
41
22
42
43
+ def add_risk_tags (sdk , profile , username , risk_tag ):
44
+ risk_tag = _handle_list_args (risk_tag )
45
+ user_id = get_user_id (sdk , username )
46
+ sdk .detectionlists .add_user_risk_tags (user_id , risk_tag )
47
+
48
+ def remove_risk_tags (sdk , profile , username , risk_tag ):
49
+ risk_tag = _handle_list_args (risk_tag )
50
+ user_id = get_user_id (sdk , username )
51
+ sdk .detectionlists .remove_user_risk_tags (user_id , risk_tag )
52
+
53
+
23
54
def add_high_risk_employee (sdk , profile , username , cloud_alias = None , risk_tag = None , notes = None ):
24
55
"""Adds an employee to the high risk employee detection list.
25
56
@@ -31,9 +62,7 @@ def add_high_risk_employee(sdk, profile, username, cloud_alias=None, risk_tag=No
31
62
risk_tag (iter[str]): Risk tags associated with the employee.
32
63
notes: (str): Notes about the employee.
33
64
"""
34
- if risk_tag and type (risk_tag ) != list :
35
- risk_tag = risk_tag .split ()
36
-
65
+ risk_tag = _handle_list_args (risk_tag )
37
66
user_id = get_user_id (sdk , username )
38
67
update_user (sdk , user_id , cloud_alias , risk_tag , notes )
39
68
sdk .detectionlists .high_risk_employee .add (user_id )
@@ -51,8 +80,7 @@ def remove_high_risk_employee(sdk, profile, username):
51
80
sdk .detectionlists .high_risk_employee .remove (user_id )
52
81
53
82
54
- def _load_add_description (argument_collection ):
55
- load_user_descriptions (argument_collection )
83
+ def _load_risk_tag_description (argument_collection ):
56
84
risk_tag = argument_collection .arg_configs [DetectionListUserKeys .RISK_TAG ]
57
85
risk_tag .as_multi_val_param ()
58
86
risk_tag .set_help (
@@ -66,3 +94,21 @@ def _load_add_description(argument_collection):
66
94
u"POOR_SECURITY_PRACTICES, "
67
95
u"CONTRACT_EMPLOYEE]"
68
96
)
97
+
98
+
99
+ def _load_add_description (argument_collection ):
100
+ load_user_descriptions (argument_collection )
101
+ _load_risk_tag_description (argument_collection )
102
+
103
+
104
+ def _load_risk_tag_mgmt_descriptions (argument_collection ):
105
+ load_username_description (argument_collection )
106
+ _load_risk_tag_description (argument_collection )
107
+
108
+
109
+ def _handle_list_args (list_arg ):
110
+ """Converts str args to a list. Useful for `bulk` commands which don't use `argparse` but
111
+ instead pass in values from files, such as in the form "item1 item2"."""
112
+ if list_arg and type (list_arg ) != list :
113
+ return list_arg .split ()
114
+ return list_arg
0 commit comments