5
5
6
6
import click
7
7
from click import echo
8
- from pandas import DataFrame
9
8
10
9
from code42cli .bulk import generate_template_cmd_factory
11
10
from code42cli .bulk import run_bulk_process
@@ -93,19 +92,8 @@ def _list(state, format=None):
93
92
is_flag = True ,
94
93
help = "View details of the preservation policy associated with the legal hold matter." ,
95
94
)
96
- @click .option (
97
- "--include-devices" ,
98
- is_flag = True ,
99
- help = "View devices and storage associated with legal hold custodians." ,
100
- )
101
95
@sdk_options ()
102
- def show (
103
- state ,
104
- matter_id ,
105
- include_inactive = False ,
106
- include_policy = False ,
107
- include_devices = False ,
108
- ):
96
+ def show (state , matter_id , include_inactive = False , include_policy = False ):
109
97
"""Display details of a given legal hold matter."""
110
98
matter = _check_matter_is_accessible (state .sdk , matter_id )
111
99
matter ["creator_username" ] = matter ["creator" ]["username" ]
@@ -117,32 +105,19 @@ def show(
117
105
memberships = _get_legal_hold_memberships_for_matter (
118
106
state .sdk , matter_id , active = active
119
107
)
108
+ active_usernames = [
109
+ member ["user" ]["username" ] for member in memberships if member ["active" ]
110
+ ]
111
+ inactive_usernames = [
112
+ member ["user" ]["username" ] for member in memberships if not member ["active" ]
113
+ ]
120
114
121
115
formatter = OutputFormatter (OutputFormat .TABLE , _MATTER_KEYS_MAP )
122
116
formatter .echo_formatted_list ([matter ])
123
-
124
- users = [
125
- [member ["active" ], member ["user" ]["userUid" ], member ["user" ]["username" ]]
126
- for member in memberships
127
- ]
128
-
129
- usernames = [user [2 ] for user in users if user [0 ] is True ]
130
- _print_matter_members (usernames , member_type = "active" )
117
+ _print_matter_members (active_usernames , member_type = "active" )
118
+
131
119
if include_inactive :
132
- usernames = [user [2 ] for user in users if user [0 ] is not True ]
133
- _print_matter_members (usernames , member_type = "inactive" )
134
-
135
- if include_devices :
136
- user_dataframe = _build_user_dataframe (users )
137
- devices_dataframe = _merge_matter_members_with_devices (
138
- state .sdk , user_dataframe
139
- )
140
- if len (devices_dataframe .index ):
141
- echo ("\n Matter Members and Devices:\n " )
142
- click .echo (devices_dataframe .to_csv ())
143
- echo (_print_storage_by_org (devices_dataframe ))
144
- else :
145
- echo ("\n No devices associated with matter.\n " )
120
+ _print_matter_members (inactive_usernames , member_type = "inactive" )
146
121
147
122
if include_policy :
148
123
_get_and_print_preservation_policy (state .sdk , matter ["holdPolicyUid" ])
@@ -263,50 +238,6 @@ def _print_matter_members(username_list, member_type="active"):
263
238
echo ("No {} matter members.\n " .format (member_type ))
264
239
265
240
266
- def _merge_matter_members_with_devices (sdk , user_dataframe ):
267
- devices_generator = sdk .devices .get_all (active = True , include_backup_usage = True )
268
- device_list = _get_total_archive_bytes_per_device (devices_generator )
269
- devices_dataframe = DataFrame .from_records (
270
- device_list ,
271
- columns = [
272
- "userUid" ,
273
- "guid" ,
274
- "name" ,
275
- "osHostname" ,
276
- "status" ,
277
- "alertStates" ,
278
- "orgId" ,
279
- "lastConnected" ,
280
- "version" ,
281
- "archiveBytes" ,
282
- ],
283
- )
284
- return user_dataframe .merge (
285
- devices_dataframe , how = "inner" , on = "userUid"
286
- ).reset_index (drop = True )
287
-
288
-
289
- def _build_user_dataframe (users ):
290
- user_dataframe = DataFrame .from_records (
291
- users , columns = ["activeMembership" , "userUid" , "username" ]
292
- )
293
- return user_dataframe
294
-
295
-
296
- def _get_total_archive_bytes_per_device (devices_generator ):
297
- device_list = [device for page in devices_generator for device in page ["computers" ]]
298
- for device in device_list :
299
- archive_bytes = [archive ["archiveBytes" ] for archive in device ["backupUsage" ]]
300
- device ["archiveBytes" ] = sum (archive_bytes )
301
- return device_list
302
-
303
-
304
- def _get_storage_by_org (devices_dataframe ):
305
- echo ("\n Legal Hold Storage by Org\n " )
306
- devices_dataframe = devices_dataframe .filter (["orgId" , "archiveBytes" ])
307
- return devices_dataframe .groupby ("orgId" ).sum ()
308
-
309
-
310
241
@lru_cache (maxsize = None )
311
242
def _check_matter_is_accessible (sdk , matter_id ):
312
243
return sdk .legalhold .get_matter_by_uid (matter_id )
0 commit comments