illumio-pylo 0.3.7__py3-none-any.whl → 0.3.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. illumio_pylo/API/APIConnector.py +90 -54
  2. illumio_pylo/API/JsonPayloadTypes.py +10 -0
  3. illumio_pylo/Helpers/functions.py +8 -13
  4. illumio_pylo/IPList.py +5 -9
  5. illumio_pylo/IPMap.py +3 -3
  6. illumio_pylo/Label.py +0 -1
  7. illumio_pylo/LabelCommon.py +1 -1
  8. illumio_pylo/LabelStore.py +24 -25
  9. illumio_pylo/LabeledObject.py +4 -5
  10. illumio_pylo/Organization.py +1 -3
  11. illumio_pylo/ReferenceTracker.py +0 -3
  12. illumio_pylo/Rule.py +2 -2
  13. illumio_pylo/Ruleset.py +7 -7
  14. illumio_pylo/RulesetStore.py +1 -1
  15. illumio_pylo/SecurityPrincipal.py +0 -5
  16. illumio_pylo/Workload.py +4 -13
  17. illumio_pylo/WorkloadStoreSubClasses.py +7 -10
  18. illumio_pylo/__init__.py +1 -1
  19. illumio_pylo/cli/__init__.py +0 -2
  20. illumio_pylo/cli/commands/credential_manager.py +7 -18
  21. illumio_pylo/cli/commands/iplist_analyzer.py +3 -9
  22. illumio_pylo/cli/commands/iplist_import_from_file.py +57 -34
  23. illumio_pylo/cli/commands/ruleset_export.py +16 -20
  24. illumio_pylo/cli/commands/update_pce_objects_cache.py +0 -1
  25. illumio_pylo/cli/commands/utils/LabelCreation.py +2 -2
  26. illumio_pylo/cli/commands/utils/misc.py +3 -2
  27. illumio_pylo/cli/commands/ven_compatibility_report_export.py +4 -14
  28. illumio_pylo/cli/commands/ven_duplicate_remover.py +26 -32
  29. illumio_pylo/cli/commands/ven_idle_to_visibility.py +2 -4
  30. illumio_pylo/cli/commands/ven_upgrader.py +1 -2
  31. illumio_pylo/cli/commands/workload_import.py +16 -18
  32. illumio_pylo/cli/commands/workload_reset_names_to_null.py +12 -14
  33. illumio_pylo/cli/commands/workload_update.py +28 -32
  34. illumio_pylo/cli/commands/workload_used_in_rule_finder.py +5 -5
  35. illumio_pylo/tmp.py +1 -0
  36. illumio_pylo/utilities/resources/workloads-import-example.csv +1 -1
  37. illumio_pylo/utilities/resources/workloads-import-example.xlsx +0 -0
  38. {illumio_pylo-0.3.7.dist-info → illumio_pylo-0.3.9.dist-info}/METADATA +4 -4
  39. illumio_pylo-0.3.9.dist-info/RECORD +72 -0
  40. {illumio_pylo-0.3.7.dist-info → illumio_pylo-0.3.9.dist-info}/WHEEL +1 -1
  41. illumio_pylo-0.3.7.dist-info/RECORD +0 -72
  42. {illumio_pylo-0.3.7.dist-info → illumio_pylo-0.3.9.dist-info}/LICENSE +0 -0
  43. {illumio_pylo-0.3.7.dist-info → illumio_pylo-0.3.9.dist-info}/top_level.txt +0 -0
@@ -4,9 +4,9 @@ import argparse
4
4
  import sys
5
5
 
6
6
  import illumio_pylo as pylo
7
- from illumio_pylo import ArraysToExcel, ExcelHeader, ExcelHeaderSet
7
+ from illumio_pylo import ArraysToExcel, ExcelHeaderSet
8
8
  from .utils.LabelCreation import generate_list_of_labels_to_create, create_labels
9
- from .utils.misc import make_filename_with_timestamp
9
+ from .utils.misc import make_filename_with_timestamp, default_label_columns_prefix
10
10
  from . import Command
11
11
 
12
12
 
@@ -25,7 +25,7 @@ def fill_parser(parser: argparse.ArgumentParser):
25
25
  parser.add_argument('--input-file-delimiter', type=str, required=False, default=',',
26
26
  help='CSV field delimiter')
27
27
 
28
- parser.add_argument('--label-type-header-prefix', type=str, required=False, default='label_',
28
+ parser.add_argument('--label-type-header-prefix', type=str, required=False, default=default_label_columns_prefix,
29
29
  help='Prefix for the label type headers in the CSV/Excel file')
30
30
 
31
31
  parser.add_argument('--output-dir', '-o', type=str, required=False, default='output',
@@ -49,11 +49,12 @@ def fill_parser(parser: argparse.ArgumentParser):
49
49
  parser.add_argument('--batch-size', type=int, required=False, default=500,
50
50
  help='Number of Workloads to update per API call')
51
51
 
52
+
52
53
  class ContextSingleton:
53
54
 
54
55
  def __init__(self, org: pylo.Organization):
55
56
  self.org: pylo.Organization = org
56
- self.csv_data: List[Dict[str, Union[str,bool,int, None]]] = []
57
+ self.csv_data: List[Dict[str, Union[str, bool, int, None]]] = []
57
58
  self.settings_label_type_header_prefix: str = ''
58
59
  self.settings_blank_labels_means_remove: bool = False
59
60
  self.csv_ip_index: Dict[str, Dict] = {} # ip -> csv_data
@@ -63,9 +64,10 @@ class ContextSingleton:
63
64
  self.csv_report_sheet: Optional[pylo.ArraysToExcel.Sheet] = None
64
65
  self.ignored_workloads_count = 0
65
66
  self.stats_count_csv_entries_with_no_match = 0
66
- self.workloads_previous_labels: Dict[pylo.Workload,Dict[str, pylo.Label]] = {}
67
+ self.workloads_previous_labels: Dict[pylo.Workload, Dict[str, pylo.Label]] = {}
67
68
  self.csv_input_missing_label_types: List[str] = []
68
69
 
70
+
69
71
  def __main(args, org: pylo.Organization, **kwargs):
70
72
 
71
73
  context = ContextSingleton(org=org)
@@ -97,7 +99,6 @@ def __main(args, org: pylo.Organization, **kwargs):
97
99
 
98
100
  context.ignored_workloads_count = 0
99
101
 
100
-
101
102
  csv_report_headers = ExcelHeaderSet(['name', 'hostname'])
102
103
  for label_type in org.LabelStore.label_types:
103
104
  csv_report_headers.append(f'{context.settings_label_type_header_prefix}{label_type}')
@@ -105,7 +106,7 @@ def __main(args, org: pylo.Organization, **kwargs):
105
106
  csv_report_headers.append(f'new_{label_type}')
106
107
  csv_report_headers.extend(['**updated**', '**reason**', 'href'])
107
108
 
108
- context.csv_report = csv_report = ArraysToExcel()
109
+ context.csv_report = ArraysToExcel()
109
110
  context.csv_report_sheet = context.csv_report.create_sheet('Workloads Update Report', csv_report_headers)
110
111
 
111
112
  # <editor-fold desc="CSV input file data extraction">
@@ -119,7 +120,6 @@ def __main(args, org: pylo.Organization, **kwargs):
119
120
  for label_type in org.LabelStore.label_types:
120
121
  csv_expected_fields.append({'name': f'{context.settings_label_type_header_prefix}{label_type}', 'optional': True})
121
122
 
122
-
123
123
  print(" * Loading CSV input file '{}'...".format(settings_input_file), flush=True, end='')
124
124
  csv_input_object = pylo.CsvExcelToObject(settings_input_file, expected_headers=csv_expected_fields, csv_delimiter=settings_input_file_delimiter)
125
125
  for label_type in org.LabelStore.label_types:
@@ -131,7 +131,6 @@ def __main(args, org: pylo.Organization, **kwargs):
131
131
  context.csv_data = csv_input_object.objects()
132
132
  # </editor-fold desc="CSV input file data extraction">
133
133
 
134
-
135
134
  if not input_match_on_ip and not input_match_on_hostname and not input_match_on_href:
136
135
  pylo.log.error('You must specify at least one (or several) property to match on for workloads vs input: href, ip or hostname')
137
136
  sys.exit(1)
@@ -141,11 +140,11 @@ def __main(args, org: pylo.Organization, **kwargs):
141
140
  # </editor-fold desc="CSV input basic checks">
142
141
 
143
142
  # <editor-fold desc="Filter the list of Workloads to be edited">
144
- workloads_to_update: Dict[str, pylo.Workload] = org.WorkloadStore.itemsByHRef.copy() # start with a list of all workloads from the PCE
143
+ workloads_to_update: Dict[str, pylo.Workload] = org.WorkloadStore.itemsByHRef.copy() # start with a list of all workloads from the PCE
145
144
  print(" * PCE has {} workloads. Now applying requested filters...".format(len(workloads_to_update)))
146
145
 
147
146
  context.ignored_workloads_count += filter_pce_workloads(context, workloads_to_update, settings_filter_managed_only,
148
- settings_filter_unmanaged_only)
147
+ settings_filter_unmanaged_only)
149
148
 
150
149
  print(" * DONE! {} Workloads remain to be updated".format(len(workloads_to_update)))
151
150
  # </editor-fold>
@@ -153,14 +152,13 @@ def __main(args, org: pylo.Organization, **kwargs):
153
152
  # <editor-fold desc="Matching between CSV/Excel and Managed Workloads">
154
153
  workloads_to_update_match_csv: Dict[pylo.Workload, Dict] # Workloads from the PCE and CSV data associated to it
155
154
  workloads_to_update_match_csv = match_pce_workloads_vs_csv(context,
156
- input_match_on_hostname,
157
- input_match_on_href,
158
- input_match_on_ip,
159
- workloads_to_update)
155
+ input_match_on_hostname,
156
+ input_match_on_href,
157
+ input_match_on_ip,
158
+ workloads_to_update)
160
159
  add_unmatched_csv_lines_to_report(context, workloads_to_update_match_csv)
161
160
  # </editor-fold>
162
161
 
163
-
164
162
  # <editor-fold desc="List missing Labels and exclude Workloads which require no changes">
165
163
  print(" * Looking for any missing label which need to be created and Workloads which already have the right labels:")
166
164
  labels_to_be_created = generate_list_of_labels_to_create(workloads_to_update_match_csv.values(), org, context.settings_label_type_header_prefix)
@@ -171,14 +169,12 @@ def __main(args, org: pylo.Organization, **kwargs):
171
169
  # </editor-fold>
172
170
 
173
171
  # <editor-fold desc="Compare remaining workloads and CSV data to generate update payloads later">
174
- print(" * Comparing remaining {} Workloads and CSV data to generate update payloads later...".format(len(workloads_to_update)) , flush=True)
172
+ print(" * Comparing remaining {} Workloads and CSV data to generate update payloads later...".format(len(workloads_to_update)), flush=True)
175
173
  compare_workloads_vs_csv_data_to_generate_changes(context, workloads_to_update, workloads_to_update_match_csv)
176
174
 
177
-
178
175
  print(" * DONE - {} Workloads remain to be updated".format(len(workloads_to_update_match_csv)))
179
176
  # </editor-fold desc="Compare remaining workloads and CSV data to generate update payloads later">
180
177
 
181
-
182
178
  # <editor-fold desc="Workloads updates Push to API">
183
179
  if len(workloads_to_update) == 0:
184
180
  print(" * No Workloads to update")
@@ -226,7 +222,7 @@ def __main(args, org: pylo.Organization, **kwargs):
226
222
  print("*************")
227
223
  for workload in workloads_to_update.values():
228
224
  context.csv_report_sheet.add_line_from_object(workload_to_csv_report(context, workload, 'Potentially', reason='No confirmation was given to proceed with the update'))
229
- #new_labels = workloads_list_changed_labels_for_report[workload]))
225
+ # new_labels = workloads_list_changed_labels_for_report[workload]))
230
226
  # </editor-fold>
231
227
 
232
228
  print(" * Writing report file '{}' ... ".format(output_file_csv), end='', flush=True)
@@ -237,7 +233,8 @@ def __main(args, org: pylo.Organization, **kwargs):
237
233
  print("DONE")
238
234
 
239
235
 
240
- def compare_workloads_vs_csv_data_to_generate_changes(context: ContextSingleton,workloads_to_update, workloads_to_update_match_csv):
236
+ def compare_workloads_vs_csv_data_to_generate_changes(context: ContextSingleton, workloads_to_update,
237
+ workloads_to_update_match_csv):
241
238
  for workload, csv_data in workloads_to_update_match_csv.copy().items():
242
239
  workload.api_stacked_updates_start()
243
240
  if 'name' in csv_data:
@@ -263,7 +260,6 @@ def compare_workloads_vs_csv_data_to_generate_changes(context: ContextSingleton,
263
260
  format(csv_data[csv_label_column_name], csv_data['*line*']))
264
261
  found_labels.append(found_label)
265
262
 
266
-
267
263
  context.workloads_previous_labels[workload] = workload.get_labels_dict()
268
264
  workload.api_update_labels(found_labels, missing_label_type_means_no_change=context.settings_blank_labels_means_remove)
269
265
 
@@ -384,14 +380,14 @@ def match_pce_workloads_vs_csv(context: ContextSingleton,
384
380
  print(" - No matching IP address found in CSV/Excel, this Workload will not be relabeled")
385
381
  del workloads_to_relabel[workload_href]
386
382
  context.ignored_workloads_count += 1
387
- #context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
383
+ # context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
388
384
  # 'No IP match was found in CSV/Excel input'))
389
385
  continue
390
386
  if len(ip_matches) > 1:
391
387
  print(" - Found more than 1 IP matches in CSV/Excel, this Workload will not be relabeled")
392
388
  del workloads_to_relabel[workload_href]
393
389
  context.ignored_workloads_count += 1
394
- #context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
390
+ # context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
395
391
  # 'Too many IP matches were found in CSV/Excel input'))
396
392
  continue
397
393
  this_workload_matched_on_ip = ip_matches[0]
@@ -404,7 +400,7 @@ def match_pce_workloads_vs_csv(context: ContextSingleton,
404
400
  del workloads_to_relabel[workload_href]
405
401
  print(" NOT FOUND")
406
402
  context.ignored_workloads_count += 1
407
- #context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
403
+ # context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
408
404
  # 'No hostname match was found in CSV/Excel input'))
409
405
  continue
410
406
 
@@ -419,7 +415,7 @@ def match_pce_workloads_vs_csv(context: ContextSingleton,
419
415
  del workloads_to_relabel[workload_href]
420
416
  print(" NOT FOUND")
421
417
  context.ignored_workloads_count += 1
422
- #context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
418
+ # context.csv_report.add_line_from_object(workload_to_csv_report(context, workload, False,
423
419
  # 'No href match was found in CSV/Excel input'))
424
420
  continue
425
421
 
@@ -462,7 +458,7 @@ def filter_pce_workloads(context: ContextSingleton, workloads_to_update: Dict[st
462
458
  del workloads_to_update[workload_href]
463
459
  ignored_workloads_count += 1
464
460
  context.csv_report_sheet.add_line_from_object(workload_to_csv_report(context, workload, False,
465
- 'Managed Workload was filtered out'))
461
+ 'Managed Workload was filtered out'))
466
462
  if filter_managed_only:
467
463
  print(" - Filtering out Unmanaged Workloads...")
468
464
  for workload_href in list(workloads_to_update.keys()):
@@ -471,13 +467,13 @@ def filter_pce_workloads(context: ContextSingleton, workloads_to_update: Dict[st
471
467
  del workloads_to_update[workload_href]
472
468
  ignored_workloads_count += 1
473
469
  context.csv_report_sheet.add_line_from_object(workload_to_csv_report(context, workload, False,
474
- 'Unmanaged Workload was filtered out'))
470
+ 'Unmanaged Workload was filtered out'))
475
471
 
476
472
  print(" * DONE! {} Workloads were ignored".format(ignored_workloads_count))
477
473
  return ignored_workloads_count
478
474
 
479
475
 
480
- def workload_to_csv_report(context: ContextSingleton, workload: pylo.Workload, updated: Union[bool,str],
476
+ def workload_to_csv_report(context: ContextSingleton, workload: pylo.Workload, updated: Union[bool, str],
481
477
  reason: str = ''):
482
478
 
483
479
  record = {
@@ -487,7 +483,6 @@ def workload_to_csv_report(context: ContextSingleton, workload: pylo.Workload, u
487
483
  '**reason**': reason
488
484
  }
489
485
 
490
-
491
486
  for label_type in context.org.LabelStore.label_types:
492
487
  previous_label = context.workloads_previous_labels[workload].get(label_type)
493
488
  record[f'{context.settings_label_type_header_prefix}{label_type}'] = previous_label.name if previous_label is not None else ''
@@ -507,11 +502,13 @@ def workload_to_csv_report(context: ContextSingleton, workload: pylo.Workload, u
507
502
 
508
503
  command_object = Command(command_name, __main, fill_parser, objects_load_filter)
509
504
 
505
+
510
506
  class ChangedLabelRecord(TypedDict):
511
507
  name: Optional[str]
512
508
  href: Optional[str]
513
509
 
514
- ChangedLabelRecordCollection = Dict[pylo.Workload, Dict[str,ChangedLabelRecord]]
510
+
511
+ ChangedLabelRecordCollection = Dict[pylo.Workload, Dict[str, ChangedLabelRecord]]
515
512
 
516
513
 
517
514
  def add_unmatched_csv_lines_to_report(context: ContextSingleton,
@@ -539,6 +536,5 @@ def add_unmatched_csv_lines_to_report(context: ContextSingleton,
539
536
  new_data['**reason**'] = 'No matching Workload was found in the PCE'
540
537
  context.csv_report_sheet.add_line_from_object(new_data)
541
538
 
542
-
543
539
  print(" * {} CSV lines were not matched with any Workload. They are added to the report now".
544
540
  format(context.stats_count_csv_entries_with_no_match))
@@ -40,8 +40,8 @@ def __main(args, org: pylo.Organization, **kwargs):
40
40
  global_concerned_rules[concerned_rule] = True
41
41
 
42
42
  if concerned_ruleset not in concerned_rulesets:
43
- concerned_rulesets[concerned_ruleset] = {concerned_rule: concerned_rule}
44
- count_concerned_rules = count_concerned_rules + 1
43
+ concerned_rulesets[concerned_ruleset] = {concerned_rule: concerned_rule}
44
+ count_concerned_rules = count_concerned_rules + 1
45
45
  else:
46
46
  if concerned_rule not in concerned_rulesets[concerned_ruleset]:
47
47
  concerned_rulesets[concerned_ruleset][concerned_rule] = concerned_rule
@@ -67,9 +67,9 @@ def __main(args, org: pylo.Organization, **kwargs):
67
67
  print(" - '{}' HREF: {} URL: {}".format(ruleset.name, ruleset.href, ruleset_url))
68
68
 
69
69
  print("\n***** DONE with workloads & rules parsing *****")
70
- print("** Total: {} Workloads used in {} Rulesets and {} Rules".format( global_count_concerned_workloads,
71
- len(global_concerned_rulesets),
72
- len(global_concerned_rules)))
70
+ print("** Total: {} Workloads used in {} Rulesets and {} Rules".format(global_count_concerned_workloads,
71
+ len(global_concerned_rulesets),
72
+ len(global_concerned_rules)))
73
73
 
74
74
  print("\n**** END OF SCRIPT ****\n")
75
75
 
illumio_pylo/tmp.py CHANGED
@@ -5,6 +5,7 @@ import illumio_pylo as pylo
5
5
 
6
6
  log = logging.getLogger('PYLO')
7
7
 
8
+
8
9
  def init_logger():
9
10
  console_logger = logging.StreamHandler()
10
11
  formatter = logging.Formatter('%(asctime)s %(levelname)s %(name)s/%(filename)s:%(lineno)d - %(message)s')
@@ -1,2 +1,2 @@
1
- name,hostname,ip,role,app,env,loc
1
+ name,hostname,ip,label:role,label:app,label:env,label:loc
2
2
  VEN-KFMGF,hostdd,192.168.50.12,R_WEB,A_APPC,E_DEV,L_AMER
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: illumio_pylo
3
- Version: 0.3.7
3
+ Version: 0.3.9
4
4
  Summary: A set of tools and library for working with Illumio PCE
5
5
  Home-page: https://github.com/cpainchaud/pylo
6
6
  Author: Christophe Painchaud
@@ -187,11 +187,11 @@ Requires-Python: >=3.11
187
187
  License-File: LICENSE
188
188
  Requires-Dist: click ==8.1.7
189
189
  Requires-Dist: colorama ~=0.4.4
190
- Requires-Dist: cryptography ~=42.0.5
191
- Requires-Dist: openpyxl ~=3.1.2
190
+ Requires-Dist: cryptography ==42.0.7
191
+ Requires-Dist: openpyxl ~=3.1.3
192
192
  Requires-Dist: paramiko ~=3.4.0
193
193
  Requires-Dist: prettytable ~=3.10.0
194
- Requires-Dist: requests ~=2.31.0
194
+ Requires-Dist: requests ~=2.32.0
195
195
  Requires-Dist: xlsxwriter ~=3.2.0
196
196
 
197
197
  README.md
@@ -0,0 +1,72 @@
1
+ illumio_pylo/AgentStore.py,sha256=7xWpjGJHK5Xp69M-WzqcDeC1WMLCeMii1D_hh6xVqb4,5312
2
+ illumio_pylo/Exception.py,sha256=3lxS-ANBaEvHAKhDb8UzNLj5IpQBmRHNs4YkHONmQjs,1033
3
+ illumio_pylo/IPList.py,sha256=ozCAkU3ZHJtcm0O-f_7_L_a8C0ZIqVGAlhsQMS4LvD4,4394
4
+ illumio_pylo/IPMap.py,sha256=FC7v-qA9TjSum8OMP0tx-auU-rDBO4wRNkx3irjTYf4,10259
5
+ illumio_pylo/Label.py,sha256=hGeU3zQW8GIfRekSVcRAiTQbezbjYTF1nGHoH9DxvyY,834
6
+ illumio_pylo/LabelCommon.py,sha256=fgmzE8tztufAXXzLgmOqo74z66e8uAyJYnM917e8wRE,1486
7
+ illumio_pylo/LabelGroup.py,sha256=ZPC3xBLJUEhStyBTMB3fTTcEi8Z4CDjHUwnq_T-8p5Y,2674
8
+ illumio_pylo/LabelStore.py,sha256=RlkkrJYnA7pdMBs8iTjW0HXGpCOohA0b8aTInarFwrs,19960
9
+ illumio_pylo/LabeledObject.py,sha256=uwLDt6dv1Ba1Zd_V3wpgrNtUCS4UilprGhgVbqH2w74,2023
10
+ illumio_pylo/Organization.py,sha256=eOuMecm8oDsyQNEeHAxsxV9b1T4-6RuEwFRsS6kLcuI,12590
11
+ illumio_pylo/Query.py,sha256=lgLjst41ma3HMVkngvTjL7zSLjh80RoXYL5vS3PWO7Q,13330
12
+ illumio_pylo/ReferenceTracker.py,sha256=X-A6aGnZUkMoEdq17ER4K2YuP0ogg9wnHY786ciHcQg,1012
13
+ illumio_pylo/Rule.py,sha256=5KE0rLlmG74Kesm5A0At8kvNt2YEwvraKwIdJEEVt4Y,26828
14
+ illumio_pylo/Ruleset.py,sha256=VCXUqWZrCCzM3uJPWFJpVnKBv6bj0JPz4ydmb-UbSIc,12024
15
+ illumio_pylo/RulesetStore.py,sha256=eTYZyNGefLkRhtSiC6gM7yKIcG-yzQuQrp92-1UMx78,3404
16
+ illumio_pylo/SecurityPrincipal.py,sha256=KQuaAOzP7tsfVeIr02nDFO9M7q6jf8rD-hQabqSjz4E,2349
17
+ illumio_pylo/Service.py,sha256=qyUWvYFtTpJzZMVkppvxnBFFbeQf9bow_K3OBFiEdZ4,8523
18
+ illumio_pylo/SoftwareVersion.py,sha256=H_5WM42ObUkVtuxVWak30KMbEuar567k33E6pb83Zbo,4388
19
+ illumio_pylo/VirtualService.py,sha256=K1GT8pzkMOYkD4ZEwDkdriLOAUFAr0oCYNErJAMy9Ck,617
20
+ illumio_pylo/VirtualServiceStore.py,sha256=MNTwo1cvteUuID6JniWUk5oRHQHGY4OwrWvFaRXDuuk,3116
21
+ illumio_pylo/Workload.py,sha256=k6s420rExq_Nb453f9UYjsLyNfxcCGuhgX6sPDBx9kU,19813
22
+ illumio_pylo/WorkloadStore.py,sha256=3C6SMU0wRlet6C6UVbjkYNsTY7vkyK_ZwqM1dlCBpsQ,10989
23
+ illumio_pylo/WorkloadStoreSubClasses.py,sha256=P9dUqT4Hb_tTCW14RmfJU3kVp5Zx9ZcfzeuD2VdsPDs,6101
24
+ illumio_pylo/__init__.py,sha256=vU_Sg__EAy5Z5ToA0yTNp8ae2FrRi9JqwjF553bAvMs,4172
25
+ illumio_pylo/tmp.py,sha256=8WSnsdgnLgVS2m4lxc6qCpCfefADV77B8MqiwdqFkos,3914
26
+ illumio_pylo/API/APIConnector.py,sha256=jfvl3-b-GhgLEWZ2VxUnl27BhgUT888eQkOmPDfvabs,62620
27
+ illumio_pylo/API/AuditLog.py,sha256=p0mfjrE5S8qoJgA5LIP_XGFBP3iL86Nl6BQEmhMVrPA,1533
28
+ illumio_pylo/API/ClusterHealth.py,sha256=GdMpVQrHUW4zLM-409GcPHM8H8b3LAppO37ZcUZyT_Q,5122
29
+ illumio_pylo/API/CredentialsManager.py,sha256=z-a8O67UwPnbAEmjv_t8C9Wb0eXbSql1PVhLZ8IEUms,12854
30
+ illumio_pylo/API/Explorer.py,sha256=fFAIF-67_uuKgJOP0eZPPJrOGuYmFl33GK75AyMjgJU,47590
31
+ illumio_pylo/API/JsonPayloadTypes.py,sha256=T2BVpQwcVgChXAwCeXNSvbKO_i_CyT8Gk7oDsdlHXTA,8274
32
+ illumio_pylo/API/RuleSearchQuery.py,sha256=O0-MsUXhwmywoO0G-GXnLq6kkVC9LgmxMZwqVKc_oJE,5325
33
+ illumio_pylo/API/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ illumio_pylo/Helpers/__init__.py,sha256=6E2eTZe-4qfPKGjRRQNtYsPrBhJSAjbdvv_DpniV_rY,49
35
+ illumio_pylo/Helpers/exports.py,sha256=7wXWTRmjkfApgeweJ3gJ4qUXJLOK0xyA49cY_EkkkCg,21898
36
+ illumio_pylo/Helpers/functions.py,sha256=WmLCJjAHPLqJH6WM7bKSz4ZbP2zDAFJ73FCoJZRTIJE,4635
37
+ illumio_pylo/cli/NativeParsers.py,sha256=nzDL54EV0J-Iz0P9EkeiPl6DWQBSbCu-MpEPRad3j6c,4055
38
+ illumio_pylo/cli/__init__.py,sha256=hgp7KG4FZujnRnId3A1tAoaYpUDFkE_Fv2wXyF02GNM,7737
39
+ illumio_pylo/cli/__main__.py,sha256=ll1gK8k1YL_kPsImI7WVlw2sCyNyhocnuCqko6mGaYI,223
40
+ illumio_pylo/cli/commands/__init__.py,sha256=yoVkXy-qBGiAAziWiayJdjcclx1WTayShXSPqHelcWA,1489
41
+ illumio_pylo/cli/commands/credential_manager.py,sha256=YUaIqTxl9F7HXpxC7urU2tnwZq3UROV4riV_YMKSJso,9354
42
+ illumio_pylo/cli/commands/iplist_analyzer.py,sha256=OJB8hSDzLhICCkFF5NaRC3a0uCUSfaEDuJb2CLUJgu4,3709
43
+ illumio_pylo/cli/commands/iplist_import_from_file.py,sha256=yqB6VvDT72VxC8tIyu2wRixorwzarhWF6t8J-MvLGlM,9836
44
+ illumio_pylo/cli/commands/ruleset_export.py,sha256=MsT-jd0BzA_cpZcvbKtkD1Dvwqt6_9F5Q1vp8-qfEo0,6080
45
+ illumio_pylo/cli/commands/update_pce_objects_cache.py,sha256=vSVSA9K9mXQhfiQPLoH7uEcSz5j1JddQW6UGGYvydKQ,1255
46
+ illumio_pylo/cli/commands/ven_compatibility_report_export.py,sha256=Hp58Z0cj-hX8tpcD9IyT0c2c36CutT9rrfhTfgx9sbI,8070
47
+ illumio_pylo/cli/commands/ven_duplicate_remover.py,sha256=e2j1p04e6l4jZRsk0d1IlLVwCfGlvpas6_aG3ZzLccc,19501
48
+ illumio_pylo/cli/commands/ven_idle_to_visibility.py,sha256=ez8NbryK_I7motzkhLWHOdKl0Uh-zCkO4ASD1exsOkY,13352
49
+ illumio_pylo/cli/commands/ven_upgrader.py,sha256=h0XCcI-kMzq9GC-ovIph7r0-BObo_4GHdyuMnVfRYZA,7158
50
+ illumio_pylo/cli/commands/workload_export.py,sha256=EcQR8AacJVe7rOqYH-HFxyTchwHHQ9ZTc-ALSMt9gDY,11421
51
+ illumio_pylo/cli/commands/workload_import.py,sha256=mpcHISn5qxM13eSYCWusQRvkkNuZ0bnrrOBfZE2s1R8,19024
52
+ illumio_pylo/cli/commands/workload_reset_names_to_null.py,sha256=j87jbnDxT3kABlqCHlqVd1_U1mfV7y0mgFwEEdFmt0Q,3331
53
+ illumio_pylo/cli/commands/workload_update.py,sha256=nPlSCOAx0wmshVWy4WNp-15wwg-IWcPPQy66AWEDTic,28659
54
+ illumio_pylo/cli/commands/workload_used_in_rule_finder.py,sha256=35t_HpAw_gk9SjmNoyPI3eyZT6doPhqcFF6XkuzbNII,3340
55
+ illumio_pylo/cli/commands/utils/LabelCreation.py,sha256=cO_MWJrAIgeZGZrm0Dix50isrGzhckZ_kLnjy1VWWRI,4885
56
+ illumio_pylo/cli/commands/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
+ illumio_pylo/cli/commands/utils/misc.py,sha256=dsFHrmCaQ1OrRGms8dHaHtE_rTJ0j4-Q3JXcFCKNC_I,775
58
+ illumio_pylo/docs/Doxygen,sha256=AVvSIRYLHFWJ15YLGahhzhsW0ZUUFO5lVxd2-F3iWz8,74257
59
+ illumio_pylo/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
+ illumio_pylo/utilities/cli.py,sha256=7Wv7qhdc91-vsaxiu4j8k7LY7V9dcwWHnHV7PLpOBAI,320
61
+ illumio_pylo/utilities/credentials.example.json,sha256=CZcp3aAbdVljfyQzFbgxIZCU9Ln2eWZKfWcmN9VAeVc,439
62
+ illumio_pylo/utilities/health_monitoring.py,sha256=sqe9gArMZm3s8y6Jg6F9SO_Rm2dj1aM99xpPi8WSFZc,3700
63
+ illumio_pylo/utilities/resources/iplists-import-example.csv,sha256=beM9OBWJQNiYXlGh1KYiHxCN8LpZk4uPpoiO14-CgOE,200
64
+ illumio_pylo/utilities/resources/iplists-import-example.xlsx,sha256=VW-7CRr8NA2Vultv9jLGd8-_jzVp5ZtL3KgswjOUHeQ,16893
65
+ illumio_pylo/utilities/resources/workload-exporter-filter-example.csv,sha256=cn5IA8AGEPjvS-EsPXA_GJ-LFsdF9t_44rSzFTCmAzE,36
66
+ illumio_pylo/utilities/resources/workloads-import-example.csv,sha256=HBZj5e1TFnJTzNrcgO3ZVzqAwqBoyGABJtd9Y8W8j7g,115
67
+ illumio_pylo/utilities/resources/workloads-import-example.xlsx,sha256=B5LRCFjqkZ0xbGel7qlmLepmhAysoq1Cu9eVFUiZLq0,17191
68
+ illumio_pylo-0.3.9.dist-info/LICENSE,sha256=WYmcYJG1QFgu1hfo7qrEkZ3Jhcz8NUWe6XUraZvlIFs,10172
69
+ illumio_pylo-0.3.9.dist-info/METADATA,sha256=TQRXB8oQStTDQP02iFw7VgOKiegHVjgxSMYLpyZt0Dw,12224
70
+ illumio_pylo-0.3.9.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
71
+ illumio_pylo-0.3.9.dist-info/top_level.txt,sha256=c5cu_ZMuSuxjq48ih58Kc0Tr8-JdQtV8GrKJicvWNFE,13
72
+ illumio_pylo-0.3.9.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: setuptools (72.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,72 +0,0 @@
1
- illumio_pylo/AgentStore.py,sha256=7xWpjGJHK5Xp69M-WzqcDeC1WMLCeMii1D_hh6xVqb4,5312
2
- illumio_pylo/Exception.py,sha256=3lxS-ANBaEvHAKhDb8UzNLj5IpQBmRHNs4YkHONmQjs,1033
3
- illumio_pylo/IPList.py,sha256=XvvE__qMISOrfHxM18tuLCv_fVWe_d3eb1eck3cEFvQ,4443
4
- illumio_pylo/IPMap.py,sha256=x8t4eeX0DDYRAoofjL7eeA9hkmQ6v7H0h7iRFHSye-w,10263
5
- illumio_pylo/Label.py,sha256=sn6qNFo8Etdl0lUYRoSp_VC0mJymuFJpQ99x9vAwKSY,835
6
- illumio_pylo/LabelCommon.py,sha256=MKdhxKKz6CTrAzI9f9YjtU_gf8G2QVprInNR_vCQ7OA,1551
7
- illumio_pylo/LabelGroup.py,sha256=ZPC3xBLJUEhStyBTMB3fTTcEi8Z4CDjHUwnq_T-8p5Y,2674
8
- illumio_pylo/LabelStore.py,sha256=bZjfCs4EZkY4SE5yI37_kshn24-DVhh2tn4YqS965OE,19917
9
- illumio_pylo/LabeledObject.py,sha256=MsXoe3olAntxIvwAzXaPeOrnJQ_lHXIXAFNsB0lNBAk,2020
10
- illumio_pylo/Organization.py,sha256=4IvTgJ27kFndBvwsWhcfZxuJ0PZvHH7pFGH4CMP83lE,12591
11
- illumio_pylo/Query.py,sha256=lgLjst41ma3HMVkngvTjL7zSLjh80RoXYL5vS3PWO7Q,13330
12
- illumio_pylo/ReferenceTracker.py,sha256=HyY0NwZwOdAzSXJrs6i6dhB_kgn1tidZL5LFLLkPuSM,1070
13
- illumio_pylo/Rule.py,sha256=LUMNyHtbOWF207DSuD1Dy_X4Oo6eD_VQ1uQA3jqEMmE,26827
14
- illumio_pylo/Ruleset.py,sha256=c3mPoibfYroEtV4njBRux3R33772l2z8SDJnZcA_Jhc,11901
15
- illumio_pylo/RulesetStore.py,sha256=KgTjE-TXIbvzjxusadijpMKY2ySX3DZAwOk3e4GChmk,3424
16
- illumio_pylo/SecurityPrincipal.py,sha256=gASMxmNFDjfbfqJp0igmLeRpi03XLzGjbL-Ric_RGW4,2354
17
- illumio_pylo/Service.py,sha256=qyUWvYFtTpJzZMVkppvxnBFFbeQf9bow_K3OBFiEdZ4,8523
18
- illumio_pylo/SoftwareVersion.py,sha256=H_5WM42ObUkVtuxVWak30KMbEuar567k33E6pb83Zbo,4388
19
- illumio_pylo/VirtualService.py,sha256=K1GT8pzkMOYkD4ZEwDkdriLOAUFAr0oCYNErJAMy9Ck,617
20
- illumio_pylo/VirtualServiceStore.py,sha256=MNTwo1cvteUuID6JniWUk5oRHQHGY4OwrWvFaRXDuuk,3116
21
- illumio_pylo/Workload.py,sha256=9kZHawayQQ_L-OBzyuuDcViWSa7HzDKEfPtcSHMsInw,19910
22
- illumio_pylo/WorkloadStore.py,sha256=3C6SMU0wRlet6C6UVbjkYNsTY7vkyK_ZwqM1dlCBpsQ,10989
23
- illumio_pylo/WorkloadStoreSubClasses.py,sha256=4GBb5sXan38Y5OE7O6aAR-IZrZJar0mYE44FbCSb3_k,6093
24
- illumio_pylo/__init__.py,sha256=NfjWb-G4N-kqGKvsr_N-zQZFy1bGNrUmZNfIIC21P2I,4172
25
- illumio_pylo/tmp.py,sha256=DYlm07YEP6Nm5qScByfTloGi7TGaN9WtklSqeVROPik,3913
26
- illumio_pylo/API/APIConnector.py,sha256=pxHuaRvUU_sX_DWgE_TVMR5ktRURVMOVGhkBbuV--Sc,60725
27
- illumio_pylo/API/AuditLog.py,sha256=p0mfjrE5S8qoJgA5LIP_XGFBP3iL86Nl6BQEmhMVrPA,1533
28
- illumio_pylo/API/ClusterHealth.py,sha256=GdMpVQrHUW4zLM-409GcPHM8H8b3LAppO37ZcUZyT_Q,5122
29
- illumio_pylo/API/CredentialsManager.py,sha256=z-a8O67UwPnbAEmjv_t8C9Wb0eXbSql1PVhLZ8IEUms,12854
30
- illumio_pylo/API/Explorer.py,sha256=fFAIF-67_uuKgJOP0eZPPJrOGuYmFl33GK75AyMjgJU,47590
31
- illumio_pylo/API/JsonPayloadTypes.py,sha256=9gql3-tn3cu1qmpOD_JcPCX5b594eOKDgVhTqHu6CsQ,7984
32
- illumio_pylo/API/RuleSearchQuery.py,sha256=O0-MsUXhwmywoO0G-GXnLq6kkVC9LgmxMZwqVKc_oJE,5325
33
- illumio_pylo/API/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- illumio_pylo/Helpers/__init__.py,sha256=6E2eTZe-4qfPKGjRRQNtYsPrBhJSAjbdvv_DpniV_rY,49
35
- illumio_pylo/Helpers/exports.py,sha256=7wXWTRmjkfApgeweJ3gJ4qUXJLOK0xyA49cY_EkkkCg,21898
36
- illumio_pylo/Helpers/functions.py,sha256=TjI_NmD3cm1Escp3h51SFEDgS1vT9dUa8PX9-e0siao,4680
37
- illumio_pylo/cli/NativeParsers.py,sha256=nzDL54EV0J-Iz0P9EkeiPl6DWQBSbCu-MpEPRad3j6c,4055
38
- illumio_pylo/cli/__init__.py,sha256=aJDJiuRjUg1_2_ubuDvZgPXy6lNEOVvHUqWac7j8RTU,7739
39
- illumio_pylo/cli/__main__.py,sha256=ll1gK8k1YL_kPsImI7WVlw2sCyNyhocnuCqko6mGaYI,223
40
- illumio_pylo/cli/commands/__init__.py,sha256=yoVkXy-qBGiAAziWiayJdjcclx1WTayShXSPqHelcWA,1489
41
- illumio_pylo/cli/commands/credential_manager.py,sha256=sAPEvFjxHuxUexfTigy2CR5evU_j9W7rAbalsoSWrLk,9421
42
- illumio_pylo/cli/commands/iplist_analyzer.py,sha256=vOl6fNd0HrUKnKXtY1sj7jeyx2GtuDZENV7mF79O7yU,3714
43
- illumio_pylo/cli/commands/iplist_import_from_file.py,sha256=XvC-GlJyjA4dDPzfvGoBFtwelI9g_rQqGzgKgqMYcsI,8284
44
- illumio_pylo/cli/commands/ruleset_export.py,sha256=KC9ifZx8gcAzti6EnTMfS075K00-ovRbLxeKMUg3w8E,5893
45
- illumio_pylo/cli/commands/update_pce_objects_cache.py,sha256=kNBAmPIbJyw97FRcNREy059A5FLOGm_poKJYGdTWqr4,1256
46
- illumio_pylo/cli/commands/ven_compatibility_report_export.py,sha256=8ZpgGQfn5zmOslgeE1imwx4-gDHfukdgoXJGZUh9q3o,8120
47
- illumio_pylo/cli/commands/ven_duplicate_remover.py,sha256=fr9EzLlJb_cizdxTC5yOOflwS_CDIpoWOk4EU9YjaY4,19580
48
- illumio_pylo/cli/commands/ven_idle_to_visibility.py,sha256=OMcQSB82Pn50TS7OL1_TPOvvN9XFR3jUxVYYizUQinI,13387
49
- illumio_pylo/cli/commands/ven_upgrader.py,sha256=4cLUA7HSpskJpPOtEkQh41lE4gMGJJiQiKGCd0CKYJk,7222
50
- illumio_pylo/cli/commands/workload_export.py,sha256=EcQR8AacJVe7rOqYH-HFxyTchwHHQ9ZTc-ALSMt9gDY,11421
51
- illumio_pylo/cli/commands/workload_import.py,sha256=FuUeLkauqYvKvWgWcS_xfQIxwTScp90ZdUMbUIFSadE,18923
52
- illumio_pylo/cli/commands/workload_reset_names_to_null.py,sha256=GaO2Th1rx8i7_7yqb9WkGpDz3sdbYNod5fABQnhogig,3383
53
- illumio_pylo/cli/commands/workload_update.py,sha256=tmzTV8uh4zmJf_F5rhBChuYjfnY_JtcDjSUKhvGK3rM,28543
54
- illumio_pylo/cli/commands/workload_used_in_rule_finder.py,sha256=2MO9jjYh-mkY6rkfvDyW0Ok6El_AqDWGXiFDYq5YgTk,3361
55
- illumio_pylo/cli/commands/utils/LabelCreation.py,sha256=qaU7BeP4et2GJxHwgbDNRoQLCA-xWp_y1nJ-m8ANUwA,4883
56
- illumio_pylo/cli/commands/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
- illumio_pylo/cli/commands/utils/misc.py,sha256=iV5CEEccfQ08eO0wSpTOxS9-32_GXSekShic6auuGPE,761
58
- illumio_pylo/docs/Doxygen,sha256=AVvSIRYLHFWJ15YLGahhzhsW0ZUUFO5lVxd2-F3iWz8,74257
59
- illumio_pylo/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- illumio_pylo/utilities/cli.py,sha256=7Wv7qhdc91-vsaxiu4j8k7LY7V9dcwWHnHV7PLpOBAI,320
61
- illumio_pylo/utilities/credentials.example.json,sha256=CZcp3aAbdVljfyQzFbgxIZCU9Ln2eWZKfWcmN9VAeVc,439
62
- illumio_pylo/utilities/health_monitoring.py,sha256=sqe9gArMZm3s8y6Jg6F9SO_Rm2dj1aM99xpPi8WSFZc,3700
63
- illumio_pylo/utilities/resources/iplists-import-example.csv,sha256=beM9OBWJQNiYXlGh1KYiHxCN8LpZk4uPpoiO14-CgOE,200
64
- illumio_pylo/utilities/resources/iplists-import-example.xlsx,sha256=VW-7CRr8NA2Vultv9jLGd8-_jzVp5ZtL3KgswjOUHeQ,16893
65
- illumio_pylo/utilities/resources/workload-exporter-filter-example.csv,sha256=cn5IA8AGEPjvS-EsPXA_GJ-LFsdF9t_44rSzFTCmAzE,36
66
- illumio_pylo/utilities/resources/workloads-import-example.csv,sha256=DEOGVikFjxQpMFFI0l0jb3hrxEEeZCpTGkmWkz6GUcY,91
67
- illumio_pylo/utilities/resources/workloads-import-example.xlsx,sha256=U8Ac2BZidA6NlvBFAVPHqeY5zmg3rjmIAXp5b3b1P5w,17101
68
- illumio_pylo-0.3.7.dist-info/LICENSE,sha256=WYmcYJG1QFgu1hfo7qrEkZ3Jhcz8NUWe6XUraZvlIFs,10172
69
- illumio_pylo-0.3.7.dist-info/METADATA,sha256=wydOUCStSL8nqGPvpBlvDa-xfIjGAqKy2N_OXcQozGk,12224
70
- illumio_pylo-0.3.7.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
71
- illumio_pylo-0.3.7.dist-info/top_level.txt,sha256=c5cu_ZMuSuxjq48ih58Kc0Tr8-JdQtV8GrKJicvWNFE,13
72
- illumio_pylo-0.3.7.dist-info/RECORD,,