illumio-pylo 0.3.12__py3-none-any.whl → 0.3.13__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.
- illumio_pylo/API/APIConnector.py +61 -14
- illumio_pylo/API/CredentialsManager.py +130 -3
- illumio_pylo/API/Explorer.py +619 -14
- illumio_pylo/API/JsonPayloadTypes.py +64 -4
- illumio_pylo/FilterQuery.py +892 -0
- illumio_pylo/LabelCommon.py +13 -3
- illumio_pylo/LabelDimension.py +109 -0
- illumio_pylo/LabelStore.py +97 -38
- illumio_pylo/WorkloadStore.py +58 -0
- illumio_pylo/__init__.py +9 -3
- illumio_pylo/cli/__init__.py +5 -2
- illumio_pylo/cli/commands/__init__.py +1 -0
- illumio_pylo/cli/commands/credential_manager.py +176 -0
- illumio_pylo/cli/commands/traffic_export.py +358 -0
- illumio_pylo/cli/commands/ui/credential_manager_ui/app.js +191 -2
- illumio_pylo/cli/commands/ui/credential_manager_ui/index.html +50 -1
- illumio_pylo/cli/commands/ui/credential_manager_ui/styles.css +179 -28
- illumio_pylo/cli/commands/update_pce_objects_cache.py +1 -2
- illumio_pylo/cli/commands/workload_export.py +29 -0
- {illumio_pylo-0.3.12.dist-info → illumio_pylo-0.3.13.dist-info}/METADATA +1 -1
- {illumio_pylo-0.3.12.dist-info → illumio_pylo-0.3.13.dist-info}/RECORD +24 -22
- illumio_pylo/Query.py +0 -331
- {illumio_pylo-0.3.12.dist-info → illumio_pylo-0.3.13.dist-info}/WHEEL +0 -0
- {illumio_pylo-0.3.12.dist-info → illumio_pylo-0.3.13.dist-info}/licenses/LICENSE +0 -0
- {illumio_pylo-0.3.12.dist-info → illumio_pylo-0.3.13.dist-info}/top_level.txt +0 -0
|
@@ -5,15 +5,59 @@
|
|
|
5
5
|
padding: 0;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
+
/* CSS Variables for theming */
|
|
9
|
+
:root {
|
|
10
|
+
/* Light mode colors */
|
|
11
|
+
--bg-primary: #f5f7fa;
|
|
12
|
+
--bg-secondary: #ffffff;
|
|
13
|
+
--bg-tertiary: #e2e8f0;
|
|
14
|
+
--text-primary: #333;
|
|
15
|
+
--text-secondary: #4a5568;
|
|
16
|
+
--text-tertiary: #718096;
|
|
17
|
+
--border-color: #e2e8f0;
|
|
18
|
+
--shadow-color: rgba(0, 0, 0, 0.1);
|
|
19
|
+
--shadow-hover: rgba(0, 0, 0, 0.15);
|
|
20
|
+
--input-bg: #ffffff;
|
|
21
|
+
--input-border: #cbd5e0;
|
|
22
|
+
--table-hover: #f7fafc;
|
|
23
|
+
--gradient-start: #667eea;
|
|
24
|
+
--gradient-end: #764ba2;
|
|
25
|
+
--warning-text: #7a4a12;
|
|
26
|
+
--warning-bg: #fff7e6;
|
|
27
|
+
--warning-border: #d69e2e;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/* Dark mode colors */
|
|
31
|
+
[data-theme="dark"] {
|
|
32
|
+
--bg-primary: #1a202c;
|
|
33
|
+
--bg-secondary: #2d3748;
|
|
34
|
+
--bg-tertiary: #4a5568;
|
|
35
|
+
--text-primary: #e2e8f0;
|
|
36
|
+
--text-secondary: #cbd5e0;
|
|
37
|
+
--text-tertiary: #a0aec0;
|
|
38
|
+
--border-color: #4a5568;
|
|
39
|
+
--shadow-color: rgba(0, 0, 0, 0.3);
|
|
40
|
+
--shadow-hover: rgba(0, 0, 0, 0.5);
|
|
41
|
+
--input-bg: #2d3748;
|
|
42
|
+
--input-border: #4a5568;
|
|
43
|
+
--table-hover: #374151;
|
|
44
|
+
--gradient-start: #667eea;
|
|
45
|
+
--gradient-end: #764ba2;
|
|
46
|
+
--warning-text: #fbbf24;
|
|
47
|
+
--warning-bg: #44403c;
|
|
48
|
+
--warning-border: #d69e2e;
|
|
49
|
+
}
|
|
50
|
+
|
|
8
51
|
body {
|
|
9
52
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
|
|
10
|
-
background-color:
|
|
11
|
-
color:
|
|
53
|
+
background-color: var(--bg-primary);
|
|
54
|
+
color: var(--text-primary);
|
|
12
55
|
line-height: 1.6;
|
|
56
|
+
transition: background-color 0.3s ease, color 0.3s ease;
|
|
13
57
|
}
|
|
14
58
|
|
|
15
59
|
.container {
|
|
16
|
-
max-width:
|
|
60
|
+
max-width: 95%;
|
|
17
61
|
margin: 0 auto;
|
|
18
62
|
padding: 20px;
|
|
19
63
|
}
|
|
@@ -23,9 +67,10 @@ header {
|
|
|
23
67
|
text-align: center;
|
|
24
68
|
margin-bottom: 30px;
|
|
25
69
|
padding: 20px;
|
|
26
|
-
background: linear-gradient(135deg,
|
|
70
|
+
background: linear-gradient(135deg, var(--gradient-start) 0%, var(--gradient-end) 100%);
|
|
27
71
|
border-radius: 10px;
|
|
28
72
|
color: white;
|
|
73
|
+
position: relative;
|
|
29
74
|
}
|
|
30
75
|
|
|
31
76
|
header h1 {
|
|
@@ -38,6 +83,26 @@ header .subtitle {
|
|
|
38
83
|
font-size: 1rem;
|
|
39
84
|
}
|
|
40
85
|
|
|
86
|
+
/* Theme toggle button */
|
|
87
|
+
.theme-toggle {
|
|
88
|
+
position: absolute;
|
|
89
|
+
top: 20px;
|
|
90
|
+
right: 20px;
|
|
91
|
+
background: rgba(255, 255, 255, 0.2);
|
|
92
|
+
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
93
|
+
color: white;
|
|
94
|
+
padding: 8px 12px;
|
|
95
|
+
border-radius: 5px;
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
font-size: 1.2rem;
|
|
98
|
+
transition: all 0.2s ease;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.theme-toggle:hover {
|
|
102
|
+
background: rgba(255, 255, 255, 0.3);
|
|
103
|
+
transform: scale(1.05);
|
|
104
|
+
}
|
|
105
|
+
|
|
41
106
|
/* Buttons */
|
|
42
107
|
.btn {
|
|
43
108
|
padding: 10px 20px;
|
|
@@ -59,12 +124,12 @@ header .subtitle {
|
|
|
59
124
|
}
|
|
60
125
|
|
|
61
126
|
.btn-secondary {
|
|
62
|
-
background-color:
|
|
63
|
-
color:
|
|
127
|
+
background-color: var(--bg-tertiary);
|
|
128
|
+
color: var(--text-secondary);
|
|
64
129
|
}
|
|
65
130
|
|
|
66
131
|
.btn-secondary:hover {
|
|
67
|
-
background-color:
|
|
132
|
+
background-color: var(--border-color);
|
|
68
133
|
}
|
|
69
134
|
|
|
70
135
|
.btn-danger {
|
|
@@ -85,6 +150,15 @@ header .subtitle {
|
|
|
85
150
|
background-color: #2f855a;
|
|
86
151
|
}
|
|
87
152
|
|
|
153
|
+
.btn-warning {
|
|
154
|
+
background-color: #d69e2e;
|
|
155
|
+
color: white;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.btn-warning:hover {
|
|
159
|
+
background-color: #b7791f;
|
|
160
|
+
}
|
|
161
|
+
|
|
88
162
|
.btn-small {
|
|
89
163
|
padding: 5px 10px;
|
|
90
164
|
font-size: 0.85rem;
|
|
@@ -92,10 +166,11 @@ header .subtitle {
|
|
|
92
166
|
|
|
93
167
|
/* Section styles */
|
|
94
168
|
section {
|
|
95
|
-
background:
|
|
169
|
+
background: var(--bg-secondary);
|
|
96
170
|
border-radius: 10px;
|
|
97
171
|
padding: 25px;
|
|
98
|
-
box-shadow: 0 2px 10px
|
|
172
|
+
box-shadow: 0 2px 10px var(--shadow-color);
|
|
173
|
+
transition: background-color 0.3s ease;
|
|
99
174
|
}
|
|
100
175
|
|
|
101
176
|
.section-header {
|
|
@@ -107,7 +182,7 @@ section {
|
|
|
107
182
|
|
|
108
183
|
.section-header h2 {
|
|
109
184
|
font-size: 1.3rem;
|
|
110
|
-
color:
|
|
185
|
+
color: var(--text-primary);
|
|
111
186
|
}
|
|
112
187
|
|
|
113
188
|
/* Table styles */
|
|
@@ -119,24 +194,25 @@ table {
|
|
|
119
194
|
th, td {
|
|
120
195
|
padding: 12px 15px;
|
|
121
196
|
text-align: left;
|
|
122
|
-
border-bottom: 1px solid
|
|
197
|
+
border-bottom: 1px solid var(--border-color);
|
|
123
198
|
}
|
|
124
199
|
|
|
125
200
|
th {
|
|
126
|
-
background-color:
|
|
201
|
+
background-color: var(--bg-tertiary);
|
|
127
202
|
font-weight: 600;
|
|
128
|
-
color:
|
|
203
|
+
color: var(--text-secondary);
|
|
129
204
|
font-size: 0.85rem;
|
|
130
205
|
text-transform: uppercase;
|
|
131
206
|
letter-spacing: 0.5px;
|
|
132
207
|
}
|
|
133
208
|
|
|
134
209
|
tr:hover {
|
|
135
|
-
background-color:
|
|
210
|
+
background-color: var(--table-hover);
|
|
136
211
|
}
|
|
137
212
|
|
|
138
213
|
td {
|
|
139
214
|
font-size: 0.95rem;
|
|
215
|
+
color: var(--text-primary);
|
|
140
216
|
}
|
|
141
217
|
|
|
142
218
|
.actions-cell {
|
|
@@ -166,7 +242,7 @@ td {
|
|
|
166
242
|
.loading, .empty-state {
|
|
167
243
|
text-align: center;
|
|
168
244
|
padding: 40px;
|
|
169
|
-
color:
|
|
245
|
+
color: var(--text-tertiary);
|
|
170
246
|
}
|
|
171
247
|
|
|
172
248
|
.loading::before {
|
|
@@ -174,7 +250,7 @@ td {
|
|
|
174
250
|
}
|
|
175
251
|
|
|
176
252
|
.empty-state {
|
|
177
|
-
background-color:
|
|
253
|
+
background-color: var(--bg-tertiary);
|
|
178
254
|
border-radius: 8px;
|
|
179
255
|
}
|
|
180
256
|
|
|
@@ -219,13 +295,13 @@ td {
|
|
|
219
295
|
}
|
|
220
296
|
|
|
221
297
|
.modal-content {
|
|
222
|
-
background:
|
|
298
|
+
background: var(--bg-secondary);
|
|
223
299
|
border-radius: 12px;
|
|
224
300
|
width: 90%;
|
|
225
301
|
max-width: 550px;
|
|
226
302
|
max-height: 90vh;
|
|
227
303
|
overflow-y: auto;
|
|
228
|
-
box-shadow: 0 10px 40px
|
|
304
|
+
box-shadow: 0 10px 40px var(--shadow-hover);
|
|
229
305
|
}
|
|
230
306
|
|
|
231
307
|
.modal-small {
|
|
@@ -237,25 +313,25 @@ td {
|
|
|
237
313
|
justify-content: space-between;
|
|
238
314
|
align-items: center;
|
|
239
315
|
padding: 20px 25px;
|
|
240
|
-
border-bottom: 1px solid
|
|
316
|
+
border-bottom: 1px solid var(--border-color);
|
|
241
317
|
}
|
|
242
318
|
|
|
243
319
|
.modal-header h2 {
|
|
244
320
|
font-size: 1.2rem;
|
|
245
|
-
color:
|
|
321
|
+
color: var(--text-primary);
|
|
246
322
|
}
|
|
247
323
|
|
|
248
324
|
.btn-close {
|
|
249
325
|
background: none;
|
|
250
326
|
border: none;
|
|
251
327
|
font-size: 1.5rem;
|
|
252
|
-
color:
|
|
328
|
+
color: var(--text-tertiary);
|
|
253
329
|
cursor: pointer;
|
|
254
330
|
line-height: 1;
|
|
255
331
|
}
|
|
256
332
|
|
|
257
333
|
.btn-close:hover {
|
|
258
|
-
color:
|
|
334
|
+
color: var(--text-secondary);
|
|
259
335
|
}
|
|
260
336
|
|
|
261
337
|
/* Form styles */
|
|
@@ -271,7 +347,7 @@ form {
|
|
|
271
347
|
display: block;
|
|
272
348
|
margin-bottom: 6px;
|
|
273
349
|
font-weight: 500;
|
|
274
|
-
color:
|
|
350
|
+
color: var(--text-secondary);
|
|
275
351
|
font-size: 0.95rem;
|
|
276
352
|
}
|
|
277
353
|
|
|
@@ -281,10 +357,12 @@ form {
|
|
|
281
357
|
.form-group select {
|
|
282
358
|
width: 100%;
|
|
283
359
|
padding: 10px 12px;
|
|
284
|
-
border: 1px solid
|
|
360
|
+
border: 1px solid var(--input-border);
|
|
285
361
|
border-radius: 6px;
|
|
286
362
|
font-size: 1rem;
|
|
287
363
|
transition: border-color 0.2s;
|
|
364
|
+
background-color: var(--input-bg);
|
|
365
|
+
color: var(--text-primary);
|
|
288
366
|
}
|
|
289
367
|
|
|
290
368
|
.form-group input:focus,
|
|
@@ -297,7 +375,7 @@ form {
|
|
|
297
375
|
.form-group small {
|
|
298
376
|
display: block;
|
|
299
377
|
margin-top: 5px;
|
|
300
|
-
color:
|
|
378
|
+
color: var(--text-tertiary);
|
|
301
379
|
font-size: 0.85rem;
|
|
302
380
|
}
|
|
303
381
|
|
|
@@ -323,7 +401,7 @@ form {
|
|
|
323
401
|
}
|
|
324
402
|
|
|
325
403
|
.form-section {
|
|
326
|
-
background-color:
|
|
404
|
+
background-color: var(--bg-tertiary);
|
|
327
405
|
padding: 15px;
|
|
328
406
|
border-radius: 8px;
|
|
329
407
|
margin-bottom: 20px;
|
|
@@ -331,7 +409,7 @@ form {
|
|
|
331
409
|
|
|
332
410
|
.form-section h3 {
|
|
333
411
|
font-size: 1rem;
|
|
334
|
-
color:
|
|
412
|
+
color: var(--text-secondary);
|
|
335
413
|
margin-bottom: 15px;
|
|
336
414
|
}
|
|
337
415
|
|
|
@@ -340,7 +418,7 @@ form {
|
|
|
340
418
|
justify-content: flex-end;
|
|
341
419
|
gap: 10px;
|
|
342
420
|
padding-top: 15px;
|
|
343
|
-
border-top: 1px solid
|
|
421
|
+
border-top: 1px solid var(--border-color);
|
|
344
422
|
}
|
|
345
423
|
|
|
346
424
|
/* Test result */
|
|
@@ -389,6 +467,17 @@ form {
|
|
|
389
467
|
display: none !important;
|
|
390
468
|
}
|
|
391
469
|
|
|
470
|
+
/* Warning text used in modals/forms to indicate potential SSH agent prompts */
|
|
471
|
+
.warning-text {
|
|
472
|
+
color: var(--warning-text);
|
|
473
|
+
background-color: var(--warning-bg);
|
|
474
|
+
border-left: 4px solid var(--warning-border);
|
|
475
|
+
padding: 8px 12px;
|
|
476
|
+
border-radius: 6px;
|
|
477
|
+
margin-top: 12px;
|
|
478
|
+
font-size: 0.95rem;
|
|
479
|
+
}
|
|
480
|
+
|
|
392
481
|
/* Responsive */
|
|
393
482
|
@media (max-width: 768px) {
|
|
394
483
|
.form-row {
|
|
@@ -420,6 +509,7 @@ form {
|
|
|
420
509
|
.delete-confirmation p {
|
|
421
510
|
margin-bottom: 10px;
|
|
422
511
|
font-size: 1rem;
|
|
512
|
+
color: var(--text-primary);
|
|
423
513
|
}
|
|
424
514
|
|
|
425
515
|
.delete-confirmation .warning-text {
|
|
@@ -428,3 +518,64 @@ form {
|
|
|
428
518
|
font-style: italic;
|
|
429
519
|
}
|
|
430
520
|
|
|
521
|
+
/* Encrypt confirmation modal */
|
|
522
|
+
.encrypt-confirmation {
|
|
523
|
+
padding: 25px;
|
|
524
|
+
text-align: center;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
.encrypt-confirmation p {
|
|
528
|
+
margin-bottom: 15px;
|
|
529
|
+
font-size: 1rem;
|
|
530
|
+
color: var(--text-primary);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
.encrypt-confirmation .form-group {
|
|
534
|
+
text-align: left;
|
|
535
|
+
margin-top: 20px;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
/* Shutdown button */
|
|
539
|
+
.shutdown-button-container {
|
|
540
|
+
position: fixed;
|
|
541
|
+
bottom: 20px;
|
|
542
|
+
right: 20px;
|
|
543
|
+
z-index: 100;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.btn-shutdown {
|
|
547
|
+
background-color: #c53030;
|
|
548
|
+
color: white;
|
|
549
|
+
padding: 12px 24px;
|
|
550
|
+
font-size: 1rem;
|
|
551
|
+
font-weight: 600;
|
|
552
|
+
border-radius: 8px;
|
|
553
|
+
box-shadow: 0 4px 12px rgba(197, 48, 48, 0.4);
|
|
554
|
+
transition: all 0.2s ease;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
.btn-shutdown:hover {
|
|
558
|
+
background-color: #9b2c2c;
|
|
559
|
+
box-shadow: 0 6px 16px rgba(197, 48, 48, 0.5);
|
|
560
|
+
transform: translateY(-2px);
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/* Shutdown confirmation modal */
|
|
564
|
+
.shutdown-confirmation {
|
|
565
|
+
padding: 25px;
|
|
566
|
+
text-align: center;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.shutdown-confirmation p {
|
|
570
|
+
margin-bottom: 10px;
|
|
571
|
+
font-size: 1rem;
|
|
572
|
+
color: var(--text-primary);
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
.shutdown-confirmation .countdown-text {
|
|
576
|
+
font-size: 1.2rem;
|
|
577
|
+
font-weight: 600;
|
|
578
|
+
color: #c53030;
|
|
579
|
+
margin-top: 15px;
|
|
580
|
+
}
|
|
581
|
+
|
|
@@ -14,8 +14,7 @@ objects_load_filter = None
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
def fill_parser(parser: argparse.ArgumentParser):
|
|
17
|
-
|
|
18
|
-
help='should deleted workloads be downloaded as well')
|
|
17
|
+
pass # All options are now handled by the global CLI arguments
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
def __main(args, org: pylo.Organization = None, connector: pylo.APIConnector = None, config_data=None, **kwargs):
|
|
@@ -5,6 +5,7 @@ from datetime import datetime
|
|
|
5
5
|
|
|
6
6
|
import illumio_pylo as pylo
|
|
7
7
|
from illumio_pylo import ArraysToExcel, ExcelHeader, ExcelHeaderSet
|
|
8
|
+
from illumio_pylo.FilterQuery import FilterQuery, get_workload_filter_registry
|
|
8
9
|
from .utils.misc import make_filename_with_timestamp
|
|
9
10
|
from . import Command
|
|
10
11
|
|
|
@@ -42,6 +43,14 @@ def fill_parser(parser: argparse.ArgumentParser):
|
|
|
42
43
|
parser.add_argument('--verbose', '-v', action='store_true',
|
|
43
44
|
help='')
|
|
44
45
|
|
|
46
|
+
parser.add_argument('--filter-query', '-q', type=str, required=False, default=None,
|
|
47
|
+
help='Filter workloads using a SQL-like query expression. '
|
|
48
|
+
'Supports: ==, !=, <, >, <=, >=, contains, matches (regex), and/or/not, parentheses. '
|
|
49
|
+
'Available fields: name, hostname, description, online, managed, deleted, '
|
|
50
|
+
'ip_address, last_heartbeat, mode, env, app, role, loc, os_id, etc. '
|
|
51
|
+
'Examples: "name contains \'prod\'" or "env == \'Production\' and online == true" '
|
|
52
|
+
'or "(name == \'srv1\' or name == \'srv2\') and last_heartbeat <= \'2024-01-01\'"')
|
|
53
|
+
|
|
45
54
|
parser.add_argument('--filter-file', '-i', type=str, required=False, default=None,
|
|
46
55
|
help='CSV or Excel input filename')
|
|
47
56
|
parser.add_argument('--filter-file-delimiter', type=str, required=False, default=',',
|
|
@@ -60,8 +69,10 @@ def fill_parser(parser: argparse.ArgumentParser):
|
|
|
60
69
|
for extra_column in extra_columns:
|
|
61
70
|
extra_column.apply_cli_args(parser)
|
|
62
71
|
|
|
72
|
+
|
|
63
73
|
def __main(args, org: pylo.Organization, **kwargs):
|
|
64
74
|
|
|
75
|
+
filter_query_string = args['filter_query']
|
|
65
76
|
filter_file = args['filter_file']
|
|
66
77
|
filter_file_delimiter = args['filter_file_delimiter']
|
|
67
78
|
filter_fields = args['filter_fields']
|
|
@@ -116,6 +127,24 @@ def __main(args, org: pylo.Organization, **kwargs):
|
|
|
116
127
|
csv_sheet = csv_report.create_sheet('workloads', csv_report_headers, force_all_wrap_text=True)
|
|
117
128
|
|
|
118
129
|
all_workloads = org.WorkloadStore.itemsByHRef.copy()
|
|
130
|
+
|
|
131
|
+
# Apply filter query if provided
|
|
132
|
+
if filter_query_string is not None:
|
|
133
|
+
print(" * Applying filter query: '{}'".format(filter_query_string))
|
|
134
|
+
try:
|
|
135
|
+
# Pass org to get registry with all configured label types for this PCE
|
|
136
|
+
registry = get_workload_filter_registry(org)
|
|
137
|
+
filter_query = FilterQuery(registry)
|
|
138
|
+
|
|
139
|
+
matching_workloads = filter_query.execute(filter_query_string, list(all_workloads.values()))
|
|
140
|
+
|
|
141
|
+
# Convert back to dict by href
|
|
142
|
+
all_workloads = {w.href: w for w in matching_workloads}
|
|
143
|
+
print(" - Filter query matched {} workload(s)".format(len(all_workloads)))
|
|
144
|
+
except pylo.PyloEx as e:
|
|
145
|
+
pylo.log.error("Filter query error: {}".format(e))
|
|
146
|
+
sys.exit(1)
|
|
147
|
+
|
|
119
148
|
used_filters = {}
|
|
120
149
|
|
|
121
150
|
def add_workload_to_report(wkl: pylo.Workload = None, filter=None, filter_append_prefix='_'):
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
illumio_pylo/AgentStore.py,sha256=7xWpjGJHK5Xp69M-WzqcDeC1WMLCeMii1D_hh6xVqb4,5312
|
|
2
2
|
illumio_pylo/Exception.py,sha256=3lxS-ANBaEvHAKhDb8UzNLj5IpQBmRHNs4YkHONmQjs,1033
|
|
3
|
+
illumio_pylo/FilterQuery.py,sha256=AeDCCg8aPR7IXw-Ho09Zng342ZsaMdJVDBuEufcnMeM,32391
|
|
3
4
|
illumio_pylo/IPList.py,sha256=0fPsX6TYUQmmyWMQpl-QsMll9JwpvEiGN6lmbUtBwDU,4614
|
|
4
5
|
illumio_pylo/IPMap.py,sha256=XrC-qvnTUWCVq38NCRDebDnXWQYCAyTRtdVX6fk9DiE,10575
|
|
5
6
|
illumio_pylo/Label.py,sha256=hGeU3zQW8GIfRekSVcRAiTQbezbjYTF1nGHoH9DxvyY,834
|
|
6
|
-
illumio_pylo/LabelCommon.py,sha256=
|
|
7
|
+
illumio_pylo/LabelCommon.py,sha256=TNIVaZ51TyL6XeNE4ShBzp6o7_htWOaUEL1fowpwtos,1930
|
|
8
|
+
illumio_pylo/LabelDimension.py,sha256=Ha0-mxQxfbDmH5aX0IedcsF-QkHJfw6l9kIqbTL8ccM,4427
|
|
7
9
|
illumio_pylo/LabelGroup.py,sha256=ZPC3xBLJUEhStyBTMB3fTTcEi8Z4CDjHUwnq_T-8p5Y,2674
|
|
8
|
-
illumio_pylo/LabelStore.py,sha256=
|
|
10
|
+
illumio_pylo/LabelStore.py,sha256=t-4JI7AM2K6PHB5DyAt2-BM6oPwrVyFop2rLP4E5K8c,22777
|
|
9
11
|
illumio_pylo/LabeledObject.py,sha256=uwLDt6dv1Ba1Zd_V3wpgrNtUCS4UilprGhgVbqH2w74,2023
|
|
10
12
|
illumio_pylo/Organization.py,sha256=eOuMecm8oDsyQNEeHAxsxV9b1T4-6RuEwFRsS6kLcuI,12590
|
|
11
|
-
illumio_pylo/Query.py,sha256=lgLjst41ma3HMVkngvTjL7zSLjh80RoXYL5vS3PWO7Q,13330
|
|
12
13
|
illumio_pylo/ReferenceTracker.py,sha256=X-A6aGnZUkMoEdq17ER4K2YuP0ogg9wnHY786ciHcQg,1012
|
|
13
14
|
illumio_pylo/Rule.py,sha256=5KE0rLlmG74Kesm5A0At8kvNt2YEwvraKwIdJEEVt4Y,26828
|
|
14
15
|
illumio_pylo/Ruleset.py,sha256=VCXUqWZrCCzM3uJPWFJpVnKBv6bj0JPz4ydmb-UbSIc,12024
|
|
@@ -19,43 +20,44 @@ illumio_pylo/SoftwareVersion.py,sha256=H_5WM42ObUkVtuxVWak30KMbEuar567k33E6pb83Z
|
|
|
19
20
|
illumio_pylo/VirtualService.py,sha256=K1GT8pzkMOYkD4ZEwDkdriLOAUFAr0oCYNErJAMy9Ck,617
|
|
20
21
|
illumio_pylo/VirtualServiceStore.py,sha256=MNTwo1cvteUuID6JniWUk5oRHQHGY4OwrWvFaRXDuuk,3116
|
|
21
22
|
illumio_pylo/Workload.py,sha256=k6s420rExq_Nb453f9UYjsLyNfxcCGuhgX6sPDBx9kU,19813
|
|
22
|
-
illumio_pylo/WorkloadStore.py,sha256=
|
|
23
|
+
illumio_pylo/WorkloadStore.py,sha256=SE2fn02uqUtXY3b6r_I8PKocA6ZzDiyp9ToLAAPpfx8,13611
|
|
23
24
|
illumio_pylo/WorkloadStoreSubClasses.py,sha256=P9dUqT4Hb_tTCW14RmfJU3kVp5Zx9ZcfzeuD2VdsPDs,6101
|
|
24
|
-
illumio_pylo/__init__.py,sha256=
|
|
25
|
+
illumio_pylo/__init__.py,sha256=hC61scY-eb8k7XooRK5VTMjM2bnic8nguI7hFKeDkbI,4598
|
|
25
26
|
illumio_pylo/tmp.py,sha256=8WSnsdgnLgVS2m4lxc6qCpCfefADV77B8MqiwdqFkos,3914
|
|
26
|
-
illumio_pylo/API/APIConnector.py,sha256=
|
|
27
|
+
illumio_pylo/API/APIConnector.py,sha256=bZkysEA53-Rac6Wn-1Hyfry9pVBnOM_JbN8dcJBNBx4,67025
|
|
27
28
|
illumio_pylo/API/AuditLog.py,sha256=p0mfjrE5S8qoJgA5LIP_XGFBP3iL86Nl6BQEmhMVrPA,1533
|
|
28
29
|
illumio_pylo/API/ClusterHealth.py,sha256=GdMpVQrHUW4zLM-409GcPHM8H8b3LAppO37ZcUZyT_Q,5122
|
|
29
|
-
illumio_pylo/API/CredentialsManager.py,sha256=
|
|
30
|
-
illumio_pylo/API/Explorer.py,sha256=
|
|
31
|
-
illumio_pylo/API/JsonPayloadTypes.py,sha256=
|
|
30
|
+
illumio_pylo/API/CredentialsManager.py,sha256=0MN8zsGTYR73YV0gx7HXF2t4kQ5bdS9Unp96KQe7h-c,19745
|
|
31
|
+
illumio_pylo/API/Explorer.py,sha256=0BveCODg8s1OCg3c-5ECiiRz-1O-EVec3DXj4CcwBS4,75029
|
|
32
|
+
illumio_pylo/API/JsonPayloadTypes.py,sha256=j4_EIJHGNj-vcj7Z-DBuzVQb6DXVk5FLOKwXa-SrjRc,10737
|
|
32
33
|
illumio_pylo/API/RuleSearchQuery.py,sha256=O0-MsUXhwmywoO0G-GXnLq6kkVC9LgmxMZwqVKc_oJE,5325
|
|
33
34
|
illumio_pylo/API/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
35
|
illumio_pylo/Helpers/__init__.py,sha256=6E2eTZe-4qfPKGjRRQNtYsPrBhJSAjbdvv_DpniV_rY,49
|
|
35
36
|
illumio_pylo/Helpers/exports.py,sha256=3lme5g1UZYSlEkvfT3gU5dj86ndX0NIGQVFsAw2nZWQ,21896
|
|
36
37
|
illumio_pylo/Helpers/functions.py,sha256=WmLCJjAHPLqJH6WM7bKSz4ZbP2zDAFJ73FCoJZRTIJE,4635
|
|
37
38
|
illumio_pylo/cli/NativeParsers.py,sha256=nzDL54EV0J-Iz0P9EkeiPl6DWQBSbCu-MpEPRad3j6c,4055
|
|
38
|
-
illumio_pylo/cli/__init__.py,sha256=
|
|
39
|
+
illumio_pylo/cli/__init__.py,sha256=HKhEI78i4byW_RjVzJK9EZEEY5_cBZm586DV6-ePl5w,8075
|
|
39
40
|
illumio_pylo/cli/__main__.py,sha256=ll1gK8k1YL_kPsImI7WVlw2sCyNyhocnuCqko6mGaYI,223
|
|
40
|
-
illumio_pylo/cli/commands/__init__.py,sha256=
|
|
41
|
-
illumio_pylo/cli/commands/credential_manager.py,sha256=
|
|
41
|
+
illumio_pylo/cli/commands/__init__.py,sha256=hbPDoNFm55hHtEUq5lLloGq6nJxDkjNbw4hZIAXwdJc,1580
|
|
42
|
+
illumio_pylo/cli/commands/credential_manager.py,sha256=x6NmKs3gSC2yD_-Uy853s7r6PYzjSJjEpOKntIcsTac,35639
|
|
42
43
|
illumio_pylo/cli/commands/iplist_analyzer.py,sha256=OJB8hSDzLhICCkFF5NaRC3a0uCUSfaEDuJb2CLUJgu4,3709
|
|
43
44
|
illumio_pylo/cli/commands/iplist_import_from_file.py,sha256=yqB6VvDT72VxC8tIyu2wRixorwzarhWF6t8J-MvLGlM,9836
|
|
44
45
|
illumio_pylo/cli/commands/label_delete_unused.py,sha256=KRJDppSQFonKVet9kjrPOaHUiIhahfjHMs92KAE9mYQ,3434
|
|
45
46
|
illumio_pylo/cli/commands/ruleset_export.py,sha256=MsT-jd0BzA_cpZcvbKtkD1Dvwqt6_9F5Q1vp8-qfEo0,6080
|
|
46
|
-
illumio_pylo/cli/commands/
|
|
47
|
+
illumio_pylo/cli/commands/traffic_export.py,sha256=MvNad_gGtawDg9Hqdv-VhJAv7s6ejh8EjCpw1nZNQSo,19219
|
|
48
|
+
illumio_pylo/cli/commands/update_pce_objects_cache.py,sha256=r6zOpSezO2IV1MF2R3EABnE5UTqkuF2tof5I7OGHRJg,1168
|
|
47
49
|
illumio_pylo/cli/commands/ven_compatibility_report_export.py,sha256=Hp58Z0cj-hX8tpcD9IyT0c2c36CutT9rrfhTfgx9sbI,8070
|
|
48
50
|
illumio_pylo/cli/commands/ven_duplicate_remover.py,sha256=zPLbuZ3m2sFP6IbeZeUGM3R63K-ih8Db3C6H-JSqPNo,23397
|
|
49
51
|
illumio_pylo/cli/commands/ven_idle_to_visibility.py,sha256=ez8NbryK_I7motzkhLWHOdKl0Uh-zCkO4ASD1exsOkY,13352
|
|
50
52
|
illumio_pylo/cli/commands/ven_upgrader.py,sha256=h0XCcI-kMzq9GC-ovIph7r0-BObo_4GHdyuMnVfRYZA,7158
|
|
51
|
-
illumio_pylo/cli/commands/workload_export.py,sha256=
|
|
53
|
+
illumio_pylo/cli/commands/workload_export.py,sha256=f0R9QVBnC45VI8rfh8pkkPNvHDD--6GN94z_dHanqto,13052
|
|
52
54
|
illumio_pylo/cli/commands/workload_import.py,sha256=mpcHISn5qxM13eSYCWusQRvkkNuZ0bnrrOBfZE2s1R8,19024
|
|
53
55
|
illumio_pylo/cli/commands/workload_reset_names_to_null.py,sha256=j87jbnDxT3kABlqCHlqVd1_U1mfV7y0mgFwEEdFmt0Q,3331
|
|
54
56
|
illumio_pylo/cli/commands/workload_update.py,sha256=nPlSCOAx0wmshVWy4WNp-15wwg-IWcPPQy66AWEDTic,28659
|
|
55
57
|
illumio_pylo/cli/commands/workload_used_in_rule_finder.py,sha256=35t_HpAw_gk9SjmNoyPI3eyZT6doPhqcFF6XkuzbNII,3340
|
|
56
|
-
illumio_pylo/cli/commands/ui/credential_manager_ui/app.js,sha256=
|
|
57
|
-
illumio_pylo/cli/commands/ui/credential_manager_ui/index.html,sha256=
|
|
58
|
-
illumio_pylo/cli/commands/ui/credential_manager_ui/styles.css,sha256=
|
|
58
|
+
illumio_pylo/cli/commands/ui/credential_manager_ui/app.js,sha256=eX_TT57w9P4dgtlmUl64F-LzOvHdP87pItxk_LLxSpo,25948
|
|
59
|
+
illumio_pylo/cli/commands/ui/credential_manager_ui/index.html,sha256=IsXslEHZpd17hk63I043LuwAVV9qJGIqJVNdqeOnAFY,10231
|
|
60
|
+
illumio_pylo/cli/commands/ui/credential_manager_ui/styles.css,sha256=3aemQRNquY2swElMyVwNDHF0CYwd5CAZ970njz7RSdM,10504
|
|
59
61
|
illumio_pylo/cli/commands/utils/LabelCreation.py,sha256=cO_MWJrAIgeZGZrm0Dix50isrGzhckZ_kLnjy1VWWRI,4885
|
|
60
62
|
illumio_pylo/cli/commands/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
63
|
illumio_pylo/cli/commands/utils/misc.py,sha256=dsFHrmCaQ1OrRGms8dHaHtE_rTJ0j4-Q3JXcFCKNC_I,775
|
|
@@ -69,8 +71,8 @@ illumio_pylo/utilities/resources/iplists-import-example.xlsx,sha256=VW-7CRr8NA2V
|
|
|
69
71
|
illumio_pylo/utilities/resources/workload-exporter-filter-example.csv,sha256=cn5IA8AGEPjvS-EsPXA_GJ-LFsdF9t_44rSzFTCmAzE,36
|
|
70
72
|
illumio_pylo/utilities/resources/workloads-import-example.csv,sha256=HBZj5e1TFnJTzNrcgO3ZVzqAwqBoyGABJtd9Y8W8j7g,115
|
|
71
73
|
illumio_pylo/utilities/resources/workloads-import-example.xlsx,sha256=B5LRCFjqkZ0xbGel7qlmLepmhAysoq1Cu9eVFUiZLq0,17191
|
|
72
|
-
illumio_pylo-0.3.
|
|
73
|
-
illumio_pylo-0.3.
|
|
74
|
-
illumio_pylo-0.3.
|
|
75
|
-
illumio_pylo-0.3.
|
|
76
|
-
illumio_pylo-0.3.
|
|
74
|
+
illumio_pylo-0.3.13.dist-info/licenses/LICENSE,sha256=WYmcYJG1QFgu1hfo7qrEkZ3Jhcz8NUWe6XUraZvlIFs,10172
|
|
75
|
+
illumio_pylo-0.3.13.dist-info/METADATA,sha256=qD7_8UV-sKxlflovdH-Hpxo0EBLGKMzffutfeLS8ILQ,12403
|
|
76
|
+
illumio_pylo-0.3.13.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
77
|
+
illumio_pylo-0.3.13.dist-info/top_level.txt,sha256=c5cu_ZMuSuxjq48ih58Kc0Tr8-JdQtV8GrKJicvWNFE,13
|
|
78
|
+
illumio_pylo-0.3.13.dist-info/RECORD,,
|