catocli 2.1.6__py3-none-any.whl → 2.1.8__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.
Potentially problematic release.
This version of catocli might be problematic. Click here for more details.
- catocli/Utils/cliutils.py +6 -4
- catocli/__init__.py +1 -1
- catocli/parsers/custom/export_sites/export_sites.py +14 -12
- catocli/parsers/customParserApiClient.py +14 -7
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/METADATA +1 -1
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/RECORD +11 -11
- schema/catolib.py +3 -3
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/WHEEL +0 -0
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/entry_points.txt +0 -0
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/licenses/LICENSE +0 -0
- {catocli-2.1.6.dist-info → catocli-2.1.8.dist-info}/top_level.txt +0 -0
catocli/Utils/cliutils.py
CHANGED
|
@@ -85,10 +85,10 @@ def load_cli_settings():
|
|
|
85
85
|
settings_locations = [
|
|
86
86
|
# Try package resource first (for installed packages)
|
|
87
87
|
lambda: json.loads(get_package_resource('catocli', 'clisettings.json')),
|
|
88
|
-
# Try repository location (for development)
|
|
89
|
-
lambda: json.load(open(os.path.join(os.path.dirname(__file__), '../../clisettings.json'), 'r', encoding='utf-8')),
|
|
90
88
|
# Try adjacent file location (for development - new location)
|
|
91
|
-
lambda: json.load(open(os.path.join(os.path.dirname(__file__), '../clisettings.json'), 'r', encoding='utf-8'))
|
|
89
|
+
lambda: json.load(open(os.path.join(os.path.dirname(__file__), '../clisettings.json'), 'r', encoding='utf-8')),
|
|
90
|
+
# Try repository location (for development - fallback)
|
|
91
|
+
lambda: json.load(open(os.path.join(os.path.dirname(__file__), '../../clisettings.json'), 'r', encoding='utf-8'))
|
|
92
92
|
]
|
|
93
93
|
|
|
94
94
|
for i, load_func in enumerate(settings_locations):
|
|
@@ -112,7 +112,9 @@ def get_cli_settings_path():
|
|
|
112
112
|
str or None: Path to the settings file if found, None otherwise
|
|
113
113
|
"""
|
|
114
114
|
possible_paths = [
|
|
115
|
-
#
|
|
115
|
+
# Adjacent file location (for development - new location)
|
|
116
|
+
os.path.join(os.path.dirname(__file__), '../clisettings.json'),
|
|
117
|
+
# Repository location (for development - fallback)
|
|
116
118
|
os.path.join(os.path.dirname(__file__), '../../clisettings.json'),
|
|
117
119
|
# Current directory
|
|
118
120
|
os.path.join(os.getcwd(), 'clisettings.json'),
|
catocli/__init__.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "2.1.
|
|
1
|
+
__version__ = "2.1.8"
|
|
2
2
|
__cato_host__ = "https://api.catonetworks.com/api/v1/graphql2"
|
|
@@ -237,7 +237,7 @@ def export_socket_site_to_json(args, configuration):
|
|
|
237
237
|
nr_relay_group_name = nr_helper_fields.get('XXXXX', None)
|
|
238
238
|
nr_gateway = nr_helper_fields.get('XXXXX', None)
|
|
239
239
|
nr_translated_subnet = nr_helper_fields.get('XXXXX', None)
|
|
240
|
-
|
|
240
|
+
nr_internet_only = nr_helper_fields.get('XXXXX', None) # Default to None for JSON
|
|
241
241
|
nr_local_ip = nr_helper_fields.get('XXXXX', None)
|
|
242
242
|
nr_range_type = nr_helper_fields.get('XXXXX', None)
|
|
243
243
|
# Adding logic to pre-populate with default value
|
|
@@ -271,8 +271,7 @@ def export_socket_site_to_json(args, configuration):
|
|
|
271
271
|
cur_range['gateway'] = nr_gateway
|
|
272
272
|
cur_range['range_type'] = nr_range_type
|
|
273
273
|
cur_range['translated_subnet'] = nr_translated_subnet
|
|
274
|
-
|
|
275
|
-
# cur_range['internet_only'] = nr_internet_only
|
|
274
|
+
cur_range['internet_only'] = nr_internet_only
|
|
276
275
|
cur_range['local_ip'] = nr_local_ip # Use the calculated or original value
|
|
277
276
|
cur_range['dhcp_settings'] = {
|
|
278
277
|
'dhcp_type': nr_dhcp_type,
|
|
@@ -291,8 +290,7 @@ def export_socket_site_to_json(args, configuration):
|
|
|
291
290
|
site_native_range['gateway'] = nr_gateway
|
|
292
291
|
site_native_range['range_type'] = nr_range_type
|
|
293
292
|
site_native_range['translated_subnet'] = nr_translated_subnet
|
|
294
|
-
|
|
295
|
-
# site_native_range['internet_only'] = nr_internet_only
|
|
293
|
+
site_native_range['internet_only'] = nr_internet_only
|
|
296
294
|
site_native_range['local_ip'] = nr_local_ip
|
|
297
295
|
site_native_range['dhcp_settings'] = {
|
|
298
296
|
'dhcp_type': nr_dhcp_type,
|
|
@@ -314,8 +312,7 @@ def export_socket_site_to_json(args, configuration):
|
|
|
314
312
|
cur_range['gateway'] = nr_gateway
|
|
315
313
|
cur_range['range_type'] = nr_range_type
|
|
316
314
|
cur_range['translated_subnet'] = nr_translated_subnet
|
|
317
|
-
|
|
318
|
-
# cur_range['internet_only'] = nr_internet_only
|
|
315
|
+
cur_range['internet_only'] = nr_internet_only
|
|
319
316
|
cur_range['local_ip'] = nr_local_ip # Use the calculated or original value
|
|
320
317
|
cur_range['dhcp_settings'] = {
|
|
321
318
|
'dhcp_type': nr_dhcp_type,
|
|
@@ -594,6 +591,7 @@ def get_processed_site_data(args, configuration):
|
|
|
594
591
|
nr_relay_group_name = None
|
|
595
592
|
nr_gateway = None
|
|
596
593
|
nr_translated_subnet = None
|
|
594
|
+
nr_internet_only = None # Default to None for JSON
|
|
597
595
|
nr_local_ip = None
|
|
598
596
|
nr_range_type = "VLAN" if nr_vlan != None else "Direct"
|
|
599
597
|
|
|
@@ -612,7 +610,7 @@ def get_processed_site_data(args, configuration):
|
|
|
612
610
|
cur_range = {
|
|
613
611
|
'id': range_id, 'name': range_name, 'subnet': nr_subnet, 'vlan': nr_vlan,
|
|
614
612
|
'mdns_reflector': nr_mdns_reflector, 'gateway': nr_gateway, 'range_type': nr_range_type,
|
|
615
|
-
'translated_subnet': nr_translated_subnet, 'local_ip': nr_local_ip,
|
|
613
|
+
'translated_subnet': nr_translated_subnet, 'internet_only': nr_internet_only, 'local_ip': nr_local_ip,
|
|
616
614
|
'dhcp_settings': {
|
|
617
615
|
'dhcp_type': nr_dhcp_type, 'ip_range': nr_ip_range, 'relay_group_id': None,
|
|
618
616
|
'relay_group_name': nr_relay_group_name, 'dhcp_microsegmentation': nr_dhcp_microsegmentation
|
|
@@ -627,6 +625,7 @@ def get_processed_site_data(args, configuration):
|
|
|
627
625
|
site_native_range['gateway'] = nr_gateway
|
|
628
626
|
site_native_range['range_type'] = nr_range_type
|
|
629
627
|
site_native_range['translated_subnet'] = nr_translated_subnet
|
|
628
|
+
site_native_range['internet_only'] = nr_internet_only
|
|
630
629
|
site_native_range['local_ip'] = nr_local_ip
|
|
631
630
|
site_native_range['dhcp_settings'] = {
|
|
632
631
|
'dhcp_type': nr_dhcp_type, 'ip_range': nr_ip_range, 'relay_group_id': None,
|
|
@@ -638,7 +637,7 @@ def get_processed_site_data(args, configuration):
|
|
|
638
637
|
cur_range = {
|
|
639
638
|
'id': range_id, 'name': range_name, 'subnet': nr_subnet, 'vlan': nr_vlan,
|
|
640
639
|
'mdns_reflector': nr_mdns_reflector, 'gateway': nr_gateway, 'range_type': nr_range_type,
|
|
641
|
-
'translated_subnet': nr_translated_subnet, 'local_ip': nr_local_ip,
|
|
640
|
+
'translated_subnet': nr_translated_subnet, 'internet_only': nr_internet_only, 'local_ip': nr_local_ip,
|
|
642
641
|
'dhcp_settings': {
|
|
643
642
|
'dhcp_type': nr_dhcp_type, 'ip_range': nr_ip_range, 'relay_group_id': None,
|
|
644
643
|
'relay_group_name': nr_relay_group_name, 'dhcp_microsegmentation': nr_dhcp_microsegmentation
|
|
@@ -857,7 +856,7 @@ def export_network_ranges_to_csv(site, args, account_id):
|
|
|
857
856
|
'lan_interface_id', 'lan_interface_name', 'lan_interface_dest_type', 'is_native_range', 'lan_interface_index',
|
|
858
857
|
# Network Range columns (populated on all rows)
|
|
859
858
|
'network_range_id', 'network_range_name', 'subnet', 'vlan', 'mdns_reflector',
|
|
860
|
-
'gateway', 'range_type', 'translated_subnet', 'local_ip',
|
|
859
|
+
'gateway', 'range_type', 'translated_subnet', 'internet_only', 'local_ip',
|
|
861
860
|
'dhcp_type', 'dhcp_ip_range', 'dhcp_relay_group_id', 'dhcp_relay_group_name', 'dhcp_microsegmentation'
|
|
862
861
|
]
|
|
863
862
|
|
|
@@ -911,6 +910,7 @@ def export_network_ranges_to_csv(site, args, account_id):
|
|
|
911
910
|
'gateway': network_range.get('gateway', ''),
|
|
912
911
|
'range_type': network_range.get('range_type', ''),
|
|
913
912
|
'translated_subnet': network_range.get('translated_subnet', ''),
|
|
913
|
+
'internet_only': network_range.get('internet_only', ''),
|
|
914
914
|
'local_ip': network_range.get('local_ip', ''),
|
|
915
915
|
'dhcp_type': network_range.get('dhcp_settings', {}).get('dhcp_type', ''),
|
|
916
916
|
'dhcp_ip_range': network_range.get('dhcp_settings', {}).get('ip_range', ''),
|
|
@@ -958,6 +958,7 @@ def export_network_ranges_to_csv(site, args, account_id):
|
|
|
958
958
|
'gateway': '',
|
|
959
959
|
'range_type': '',
|
|
960
960
|
'translated_subnet': '',
|
|
961
|
+
'internet_only': '',
|
|
961
962
|
'local_ip': '',
|
|
962
963
|
'dhcp_type': '',
|
|
963
964
|
'dhcp_ip_range': '',
|
|
@@ -992,8 +993,9 @@ def export_network_ranges_to_csv(site, args, account_id):
|
|
|
992
993
|
'gateway': network_range.get('gateway', ''),
|
|
993
994
|
'range_type': network_range.get('range_type', ''),
|
|
994
995
|
'translated_subnet': network_range.get('translated_subnet', ''),
|
|
995
|
-
|
|
996
|
-
|
|
996
|
+
'internet_only': network_range.get('internet_only', ''),
|
|
997
|
+
'local_ip': network_range.get('local_ip', ''),
|
|
998
|
+
'dhcp_type': network_range.get('dhcp_settings', {}).get('dhcp_type', ''),
|
|
997
999
|
'dhcp_ip_range': network_range.get('dhcp_settings', {}).get('ip_range', ''),
|
|
998
1000
|
'dhcp_relay_group_id': network_range.get('dhcp_settings', {}).get('relay_group_id', ''),
|
|
999
1001
|
'dhcp_relay_group_name': network_range.get('dhcp_settings', {}).get('relay_group_name', ''),
|
|
@@ -695,23 +695,30 @@ def loadJSON(file):
|
|
|
695
695
|
Enhanced JSON loading with better error handling and path resolution
|
|
696
696
|
"""
|
|
697
697
|
module_dir = os.path.dirname(__file__)
|
|
698
|
-
# Navigate up two directory levels (from parsers/ to catocli/ to root)
|
|
699
|
-
module_dir = os.path.dirname(module_dir) # Go up from parsers/
|
|
700
|
-
module_dir = os.path.dirname(module_dir) # Go up from catocli/
|
|
701
698
|
|
|
702
|
-
|
|
699
|
+
# Special handling for clisettings.json - it's in catocli/ directory
|
|
700
|
+
if file == "clisettings.json":
|
|
701
|
+
# From parsers/ go up to catocli/ and look for clisettings.json
|
|
702
|
+
catocli_dir = os.path.dirname(module_dir) # Go up from parsers/ to catocli/
|
|
703
|
+
file_path = os.path.join(catocli_dir, file)
|
|
704
|
+
else:
|
|
705
|
+
# For other files (like models), navigate up two directory levels (from parsers/ to catocli/ to root)
|
|
706
|
+
module_dir = os.path.dirname(module_dir) # Go up from parsers/
|
|
707
|
+
module_dir = os.path.dirname(module_dir) # Go up from catocli/
|
|
703
708
|
file_path = os.path.join(module_dir, file)
|
|
709
|
+
|
|
710
|
+
try:
|
|
704
711
|
with open(file_path, 'r') as data:
|
|
705
712
|
config = json.load(data)
|
|
706
713
|
return config
|
|
707
714
|
except FileNotFoundError:
|
|
708
|
-
logging.error(f"File \"{
|
|
715
|
+
logging.error(f"File \"{file_path}\" not found.")
|
|
709
716
|
raise
|
|
710
717
|
except json.JSONDecodeError as e:
|
|
711
|
-
logging.error(f"Invalid JSON in file \"{
|
|
718
|
+
logging.error(f"Invalid JSON in file \"{file_path}\": {e}")
|
|
712
719
|
raise
|
|
713
720
|
except Exception as e:
|
|
714
|
-
logging.error(f"Error loading file \"{
|
|
721
|
+
logging.error(f"Error loading file \"{file_path}\": {e}")
|
|
715
722
|
raise
|
|
716
723
|
|
|
717
724
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
catocli/__init__.py,sha256=
|
|
1
|
+
catocli/__init__.py,sha256=ZhBcDUk-7qfuMgqngq1dhNqPKdjTBzu15-UjAJQxl8I,84
|
|
2
2
|
catocli/__main__.py,sha256=6Z0ns_k_kUcz1Qtrn1u7UyUnqB-3e85jM_nppOwFsv4,217
|
|
3
3
|
catocli/clisettings.json,sha256=Xxdm9qaeKQaK2hk35PeV5OljSYOJylqJfsgPzaj0D2s,1029
|
|
4
4
|
catocli/Utils/clidriver.py,sha256=29H5qNLW6JUi4jJbGvdr06QihC4n7yr0s7fGpLY8S4c,15965
|
|
5
|
-
catocli/Utils/cliutils.py,sha256=
|
|
5
|
+
catocli/Utils/cliutils.py,sha256=SxKaqjn2eU0NDh-bJF8WMQx3W4jBFXEDDk6eGzGlbio,6944
|
|
6
6
|
catocli/Utils/csv_formatter.py,sha256=4MnFlsau-KfeflJGTBAZ98wFt0QKWpAKsIPNeFV3rzk,23038
|
|
7
7
|
catocli/Utils/profile_manager.py,sha256=Stch-cU2rLA7r07hETIRsvG_JxpQx3Q42QwpfD7Qd2I,6379
|
|
8
8
|
catocli/Utils/version_checker.py,sha256=tCtsCn7xxMIxOm6cWJSA_yPt0j4mNMK4iWSJej0yM6A,6696
|
|
9
|
-
catocli/parsers/customParserApiClient.py,sha256=
|
|
9
|
+
catocli/parsers/customParserApiClient.py,sha256=21McO4QYY7_jLgqLEug1fnVf-P9XdFNBIVsZEVyxep8,69699
|
|
10
10
|
catocli/parsers/configure/__init__.py,sha256=Kq4OYGq_MXOQBHm8vxNkzJqCXp7zremYBfQ4Ai3_Lb4,3286
|
|
11
11
|
catocli/parsers/configure/configure.py,sha256=GyaOeuf0ZK3-wsZaczmO1OsKVJiPK04h6iI1u-EaKQc,12217
|
|
12
12
|
catocli/parsers/custom/README.md,sha256=UvCWAtF3Yh0UsvADb0ve1qJupgYHeyGu6V3Z0O5HEvo,8180
|
|
@@ -15,7 +15,7 @@ catocli/parsers/custom/customLib.py,sha256=Nv-agL_ewpe1x6GbwWCRb_Ey-NVW_w9L6qWwE
|
|
|
15
15
|
catocli/parsers/custom/export_rules/__init__.py,sha256=vst8auriTCLwy5AT2_ySM2puq3PIg920ZWa5yy03K_8,1813
|
|
16
16
|
catocli/parsers/custom/export_rules/export_rules.py,sha256=gXig4NC29yC5nW48ri-j0FEnaTz_kxKiuLF5y-5fZ_4,15646
|
|
17
17
|
catocli/parsers/custom/export_sites/__init__.py,sha256=z8K5IIq2N-muOTuDfEEE4pUiOaITEvhfKCLzB9e5Rok,2140
|
|
18
|
-
catocli/parsers/custom/export_sites/export_sites.py,sha256=
|
|
18
|
+
catocli/parsers/custom/export_sites/export_sites.py,sha256=61rqH_QBNvYEvX-x7QkMxvD33d7BG96pXpRP-7FrzEQ,66771
|
|
19
19
|
catocli/parsers/custom/import_rules_to_tf/__init__.py,sha256=jFCFceFv8zDW7nGLZOXkFE6NXAMPYRwKQwTbhSawYdM,3908
|
|
20
20
|
catocli/parsers/custom/import_rules_to_tf/import_rules_to_tf.py,sha256=WlyTDxUtWchu9CDs73ILHDfNXCAh7jFARBEKk5WWhwM,18714
|
|
21
21
|
catocli/parsers/custom/import_sites_to_tf/__init__.py,sha256=1ayoaaKIxWf5JBN62CO9F7-yaP9MqizTBCedqCyEc4k,4339
|
|
@@ -366,7 +366,7 @@ catocli/parsers/query_xdr_stories/README.md,sha256=eQJ81YiergQEhABkxi1yyzE_UXtS0
|
|
|
366
366
|
catocli/parsers/query_xdr_story/README.md,sha256=_JYyMJ8GYOZ1dv61QqLyhVoEubXAm2p3QqFKdfohQOE,813
|
|
367
367
|
catocli/parsers/raw/README.md,sha256=qvDLcg7U12yqacIQStOPtkqTsTLltJ06SSVmbqvlZhY,739
|
|
368
368
|
catocli/parsers/raw/__init__.py,sha256=fiSzQzNSG3vje-eEXuOcdhuL8pyavkufocOJumjdFXs,1356
|
|
369
|
-
catocli-2.1.
|
|
369
|
+
catocli-2.1.8.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
370
370
|
graphql_client/__init__.py,sha256=2nxD4YsWoOnALXi5cXbmtIN_i0NL_eyDTQRTxs52mkI,315
|
|
371
371
|
graphql_client/api_client.py,sha256=2Rc1Zo1xH9Jnk1AO68kLSofTShkZwSVF-WkVtczfIc4,5786
|
|
372
372
|
graphql_client/api_client_types.py,sha256=dM3zl6FA5SSp6nR6KmLfTL1BKaXX9uPMCZAm4v_FiUs,11569
|
|
@@ -640,7 +640,7 @@ models/query.socketPortMetricsTimeSeries.json,sha256=PHT_x1YaP8NQpaHXA4VWsZ4kC7W
|
|
|
640
640
|
models/query.subDomains.json,sha256=BkReQmylHZMv1iIakX984na9EKd_m0sPC0a-COsCxRI,7036
|
|
641
641
|
models/query.xdr.stories.json,sha256=a3rQ9j8Ru-iidGztB1yFnYSTTlJpPcDkhoI3phMdByk,714509
|
|
642
642
|
models/query.xdr.story.json,sha256=A3M-_cBIfup6vxG5nvAEH0EGRdEwkg_-G2lQR6eveB8,152375
|
|
643
|
-
schema/catolib.py,sha256=
|
|
643
|
+
schema/catolib.py,sha256=D2uCN6tTBbtHuIxdQBJQR5NodxiIgnhemrTpkaU4hlo,74803
|
|
644
644
|
schema/importSchema.py,sha256=LvXjylxsOWDcdceDE8nazOG1xcstxLGwyoVWSzW2Eg4,2508
|
|
645
645
|
scripts/catolib.py,sha256=6QaGZaHj1waZuta8gUFsfXmyoDiLabpU9gwnyq7pSXg,2145
|
|
646
646
|
scripts/export_if_rules_to_json.py,sha256=sTYzUbAtiFTy9vKpnyO8Sljshvg0qKd2gadanpeRVAM,10076
|
|
@@ -688,8 +688,8 @@ vendor/urllib3/util/timeout.py,sha256=4eT1FVeZZU7h7mYD1Jq2OXNe4fxekdNvhoWUkZusRp
|
|
|
688
688
|
vendor/urllib3/util/url.py,sha256=wHORhp80RAXyTlAIkTqLFzSrkU7J34ZDxX-tN65MBZk,15213
|
|
689
689
|
vendor/urllib3/util/util.py,sha256=j3lbZK1jPyiwD34T8IgJzdWEZVT-4E-0vYIJi9UjeNA,1146
|
|
690
690
|
vendor/urllib3/util/wait.py,sha256=_ph8IrUR3sqPqi0OopQgJUlH4wzkGeM5CiyA7XGGtmI,4423
|
|
691
|
-
catocli-2.1.
|
|
692
|
-
catocli-2.1.
|
|
693
|
-
catocli-2.1.
|
|
694
|
-
catocli-2.1.
|
|
695
|
-
catocli-2.1.
|
|
691
|
+
catocli-2.1.8.dist-info/METADATA,sha256=QFHIdGnW6t8YqVLR6iPbXEtG8MyLYXlIPuEN1lvwDJw,1286
|
|
692
|
+
catocli-2.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
693
|
+
catocli-2.1.8.dist-info/entry_points.txt,sha256=p4k9Orre6aWcqVrNmBbckmCs39h-1naMxRo2AjWmWZ4,50
|
|
694
|
+
catocli-2.1.8.dist-info/top_level.txt,sha256=F4qSgcjcW5wR9EFrO8Ud06F7ZQGFr04a9qALNQDyVxU,52
|
|
695
|
+
catocli-2.1.8.dist-info/RECORD,,
|
schema/catolib.py
CHANGED
|
@@ -94,7 +94,7 @@ def parseSchema(schema):
|
|
|
94
94
|
print(" - Loading settings and initializing...")
|
|
95
95
|
|
|
96
96
|
# Load settings to get childOperationParent and childOperationObjects configuration
|
|
97
|
-
settings = loadJSON("../clisettings.json")
|
|
97
|
+
settings = loadJSON("../catocli/clisettings.json")
|
|
98
98
|
childOperationParent = settings.get("childOperationParent", {})
|
|
99
99
|
childOperationObjects = settings.get("childOperationObjects", {})
|
|
100
100
|
|
|
@@ -968,7 +968,7 @@ def writeOperationParsers(catoApiSchema):
|
|
|
968
968
|
parserMapping = {"query":{},"mutation":{}}
|
|
969
969
|
|
|
970
970
|
# Load settings to get CSV-supported operations
|
|
971
|
-
settings = loadJSON("../clisettings.json")
|
|
971
|
+
settings = loadJSON("../catocli/clisettings.json")
|
|
972
972
|
csv_supported_operations = settings.get("queryOperationCsvOutput", {})
|
|
973
973
|
|
|
974
974
|
## Write the raw query parser ##
|
|
@@ -1363,7 +1363,7 @@ def renderSubParser(subParser, parentParserPath):
|
|
|
1363
1363
|
if not isinstance(subParser, dict):
|
|
1364
1364
|
return ""
|
|
1365
1365
|
|
|
1366
|
-
settings = loadJSON("../clisettings.json")
|
|
1366
|
+
settings = loadJSON("../catocli/clisettings.json")
|
|
1367
1367
|
csv_supported_operations = settings.get("queryOperationCsvOutput", {})
|
|
1368
1368
|
|
|
1369
1369
|
cliDriverStr = f"""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|