catocli 1.0.13__py3-none-any.whl → 1.0.15__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/clidriver.py +15 -2
- catocli/__init__.py +1 -1
- catocli/parsers/custom/customLib.py +3 -1
- catocli/parsers/mutation_accountManagement/README.md +7 -0
- catocli/parsers/mutation_accountManagement/__init__.py +51 -0
- catocli/parsers/mutation_accountManagement_addAccount/README.md +17 -0
- catocli/parsers/mutation_accountManagement_removeAccount/README.md +16 -0
- catocli/parsers/mutation_accountManagement_updateAccount/README.md +17 -0
- catocli/parsers/mutation_admin_addAdmin/README.md +2 -2
- catocli/parsers/mutation_admin_updateAdmin/README.md +2 -2
- catocli/parsers/mutation_container_delete/README.md +2 -2
- catocli/parsers/mutation_policy_internetFirewall_addRule/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_addSection/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_createPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_discardPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_moveRule/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_moveSection/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_publishPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_removeRule/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_removeSection/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_updatePolicy/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_updateRule/README.md +3 -3
- catocli/parsers/mutation_policy_internetFirewall_updateSection/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_addRule/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_addSection/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_createPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_discardPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_moveRule/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_moveSection/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_publishPolicyRevision/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_removeRule/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_removeSection/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_updatePolicy/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_updateRule/README.md +3 -3
- catocli/parsers/mutation_policy_wanFirewall_updateSection/README.md +3 -3
- catocli/parsers/mutation_site/__init__.py +14 -0
- catocli/parsers/mutation_site_addIpsecIkeV2Site/README.md +2 -2
- catocli/parsers/mutation_site_addIpsecIkeV2SiteTunnels/README.md +2 -2
- catocli/parsers/mutation_site_addNetworkRange/README.md +2 -2
- catocli/parsers/mutation_site_addSocketSite/README.md +2 -2
- catocli/parsers/mutation_site_addStaticHost/README.md +2 -2
- catocli/parsers/mutation_site_removeIpsecIkeV2SiteTunnels/README.md +18 -0
- catocli/parsers/mutation_site_updateHa/README.md +2 -2
- catocli/parsers/mutation_site_updateIpsecIkeV2SiteGeneralDetails/README.md +2 -2
- catocli/parsers/mutation_site_updateIpsecIkeV2SiteTunnels/README.md +2 -2
- catocli/parsers/mutation_site_updateNetworkRange/README.md +2 -2
- catocli/parsers/mutation_site_updateSiteGeneralDetails/README.md +2 -2
- catocli/parsers/mutation_site_updateSocketInterface/README.md +2 -2
- catocli/parsers/mutation_site_updateStaticHost/README.md +2 -2
- catocli/parsers/mutation_sites/__init__.py +14 -0
- catocli/parsers/mutation_sites_addIpsecIkeV2Site/README.md +2 -2
- catocli/parsers/mutation_sites_addIpsecIkeV2SiteTunnels/README.md +2 -2
- catocli/parsers/mutation_sites_addNetworkRange/README.md +2 -2
- catocli/parsers/mutation_sites_addSocketSite/README.md +2 -2
- catocli/parsers/mutation_sites_addStaticHost/README.md +2 -2
- catocli/parsers/mutation_sites_removeIpsecIkeV2SiteTunnels/README.md +18 -0
- catocli/parsers/mutation_sites_updateHa/README.md +2 -2
- catocli/parsers/mutation_sites_updateIpsecIkeV2SiteGeneralDetails/README.md +2 -2
- catocli/parsers/mutation_sites_updateIpsecIkeV2SiteTunnels/README.md +2 -2
- catocli/parsers/mutation_sites_updateNetworkRange/README.md +2 -2
- catocli/parsers/mutation_sites_updateSiteGeneralDetails/README.md +2 -2
- catocli/parsers/mutation_sites_updateSocketInterface/README.md +2 -2
- catocli/parsers/mutation_sites_updateStaticHost/README.md +2 -2
- catocli/parsers/parserApiClient.py +7 -4
- catocli/parsers/query_accountManagement/README.md +16 -0
- catocli/parsers/query_accountManagement/__init__.py +17 -0
- catocli/parsers/query_admins/README.md +2 -2
- catocli/parsers/query_appStats/README.md +5 -5
- catocli/parsers/query_appStatsTimeSeries/README.md +4 -4
- catocli/parsers/query_auditFeed/README.md +2 -2
- catocli/parsers/query_container/README.md +8 -8
- catocli/parsers/query_entityLookup/README.md +6 -6
- catocli/parsers/query_events/README.md +5 -5
- catocli/parsers/query_eventsFeed/README.md +2 -2
- catocli/parsers/query_eventsTimeSeries/README.md +4 -4
- catocli/parsers/query_hardwareManagement/README.md +2 -2
- catocli/parsers/query_policy/README.md +3 -3
- catocli/parsers/query_xdr_stories/README.md +2 -2
- {catocli-1.0.13.dist-info → catocli-1.0.15.dist-info}/METADATA +1 -1
- catocli-1.0.15.dist-info/RECORD +275 -0
- {catocli-1.0.13.dist-info → catocli-1.0.15.dist-info}/top_level.txt +0 -2
- graphql_client/api_client_types.py +4 -0
- models/mutation.accountManagement.addAccount.json +908 -0
- models/mutation.accountManagement.removeAccount.json +446 -0
- models/mutation.accountManagement.updateAccount.json +524 -0
- models/mutation.admin.addAdmin.json +103 -103
- models/mutation.admin.removeAdmin.json +3 -3
- models/mutation.admin.updateAdmin.json +121 -121
- models/mutation.container.delete.json +67 -67
- models/mutation.policy.internetFirewall.addRule.json +2497 -1889
- models/mutation.policy.internetFirewall.addSection.json +92 -92
- models/mutation.policy.internetFirewall.createPolicyRevision.json +734 -546
- models/mutation.policy.internetFirewall.discardPolicyRevision.json +734 -546
- models/mutation.policy.internetFirewall.moveRule.json +723 -535
- models/mutation.policy.internetFirewall.moveSection.json +85 -85
- models/mutation.policy.internetFirewall.publishPolicyRevision.json +734 -546
- models/mutation.policy.internetFirewall.removeRule.json +710 -522
- models/mutation.policy.internetFirewall.removeSection.json +72 -72
- models/mutation.policy.internetFirewall.updatePolicy.json +734 -546
- models/mutation.policy.internetFirewall.updateRule.json +2476 -1885
- models/mutation.policy.internetFirewall.updateSection.json +85 -85
- models/mutation.policy.wanFirewall.addRule.json +2577 -1225
- models/mutation.policy.wanFirewall.addSection.json +92 -92
- models/mutation.policy.wanFirewall.createPolicyRevision.json +800 -455
- models/mutation.policy.wanFirewall.discardPolicyRevision.json +800 -455
- models/mutation.policy.wanFirewall.moveRule.json +789 -444
- models/mutation.policy.wanFirewall.moveSection.json +85 -85
- models/mutation.policy.wanFirewall.publishPolicyRevision.json +800 -455
- models/mutation.policy.wanFirewall.removeRule.json +776 -431
- models/mutation.policy.wanFirewall.removeSection.json +72 -72
- models/mutation.policy.wanFirewall.updatePolicy.json +800 -455
- models/mutation.policy.wanFirewall.updateRule.json +2597 -1265
- models/mutation.policy.wanFirewall.updateSection.json +85 -85
- models/mutation.site.addIpsecIkeV2Site.json +43 -43
- models/mutation.site.addIpsecIkeV2SiteTunnels.json +505 -102
- models/mutation.site.addNetworkRange.json +53 -53
- models/mutation.site.addSocketSite.json +43 -43
- models/mutation.site.addStaticHost.json +33 -33
- models/mutation.site.removeIpsecIkeV2SiteTunnels.json +861 -0
- models/mutation.site.removeNetworkRange.json +3 -3
- models/mutation.site.removeSite.json +3 -3
- models/mutation.site.removeStaticHost.json +3 -3
- models/mutation.site.updateHa.json +54 -54
- models/mutation.site.updateIpsecIkeV2SiteGeneralDetails.json +79 -79
- models/mutation.site.updateIpsecIkeV2SiteTunnels.json +123 -123
- models/mutation.site.updateNetworkRange.json +74 -74
- models/mutation.site.updateSiteGeneralDetails.json +73 -73
- models/mutation.site.updateSocketInterface.json +282 -282
- models/mutation.site.updateStaticHost.json +54 -54
- models/mutation.sites.addIpsecIkeV2Site.json +43 -43
- models/mutation.sites.addIpsecIkeV2SiteTunnels.json +505 -102
- models/mutation.sites.addNetworkRange.json +53 -53
- models/mutation.sites.addSocketSite.json +43 -43
- models/mutation.sites.addStaticHost.json +33 -33
- models/mutation.sites.removeIpsecIkeV2SiteTunnels.json +861 -0
- models/mutation.sites.removeNetworkRange.json +3 -3
- models/mutation.sites.removeSite.json +3 -3
- models/mutation.sites.removeStaticHost.json +3 -3
- models/mutation.sites.updateHa.json +54 -54
- models/mutation.sites.updateIpsecIkeV2SiteGeneralDetails.json +79 -79
- models/mutation.sites.updateIpsecIkeV2SiteTunnels.json +123 -123
- models/mutation.sites.updateNetworkRange.json +74 -74
- models/mutation.sites.updateSiteGeneralDetails.json +73 -73
- models/mutation.sites.updateSocketInterface.json +282 -282
- models/mutation.sites.updateStaticHost.json +54 -54
- models/query.accountManagement.json +355 -0
- models/query.accountMetrics.json +235 -235
- models/query.accountRoles.json +3 -3
- models/query.accountSnapshot.json +278 -118
- models/query.admin.json +24 -24
- models/query.admins.json +138 -138
- models/query.appStats.json +92 -92
- models/query.appStatsTimeSeries.json +78 -78
- models/query.auditFeed.json +77 -77
- models/query.container.json +192 -192
- models/query.entityLookup.json +154 -154
- models/query.events.json +54 -54
- models/query.eventsFeed.json +38 -38
- models/query.eventsTimeSeries.json +78 -78
- models/query.hardwareManagement.json +125 -125
- models/query.licensing.json +933 -249
- models/query.policy.json +1502 -970
- models/query.xdr.stories.json +842 -842
- models/query.xdr.story.json +610 -610
- schema/catolib.py +12 -13
- build/lib/catocli/Utils/clidriver.py +0 -117
- build/lib/catocli/__init__.py +0 -2
- build/lib/catocli/__main__.py +0 -12
- build/lib/catocli/parsers/custom/__init__.py +0 -47
- build/lib/catocli/parsers/custom/customLib.py +0 -70
- build/lib/catocli/parsers/mutation_admin/__init__.py +0 -51
- build/lib/catocli/parsers/mutation_container/__init__.py +0 -23
- build/lib/catocli/parsers/mutation_policy/__init__.py +0 -357
- build/lib/catocli/parsers/mutation_site/__init__.py +0 -219
- build/lib/catocli/parsers/mutation_sites/__init__.py +0 -219
- build/lib/catocli/parsers/parserApiClient.py +0 -309
- build/lib/catocli/parsers/query_accountBySubdomain/__init__.py +0 -17
- build/lib/catocli/parsers/query_accountMetrics/__init__.py +0 -17
- build/lib/catocli/parsers/query_accountRoles/__init__.py +0 -17
- build/lib/catocli/parsers/query_accountSnapshot/__init__.py +0 -17
- build/lib/catocli/parsers/query_admin/__init__.py +0 -17
- build/lib/catocli/parsers/query_admins/__init__.py +0 -17
- build/lib/catocli/parsers/query_appStats/__init__.py +0 -17
- build/lib/catocli/parsers/query_appStatsTimeSeries/__init__.py +0 -17
- build/lib/catocli/parsers/query_auditFeed/__init__.py +0 -17
- build/lib/catocli/parsers/query_container/__init__.py +0 -17
- build/lib/catocli/parsers/query_entityLookup/__init__.py +0 -17
- build/lib/catocli/parsers/query_events/__init__.py +0 -17
- build/lib/catocli/parsers/query_eventsFeed/__init__.py +0 -17
- build/lib/catocli/parsers/query_eventsTimeSeries/__init__.py +0 -17
- build/lib/catocli/parsers/query_hardwareManagement/__init__.py +0 -17
- build/lib/catocli/parsers/query_licensing/__init__.py +0 -17
- build/lib/catocli/parsers/query_policy/__init__.py +0 -17
- build/lib/catocli/parsers/query_siteLocation/__init__.py +0 -17
- build/lib/catocli/parsers/query_subDomains/__init__.py +0 -17
- build/lib/catocli/parsers/query_xdr/__init__.py +0 -37
- build/lib/catocli/parsers/raw/__init__.py +0 -9
- build/lib/graphql_client/__init__.py +0 -11
- build/lib/graphql_client/api/__init__.py +0 -3
- build/lib/graphql_client/api/call_api.py +0 -73
- build/lib/graphql_client/api_client.py +0 -192
- build/lib/graphql_client/api_client_types.py +0 -404
- build/lib/graphql_client/configuration.py +0 -230
- build/lib/graphql_client/models/__init__.py +0 -13
- build/lib/graphql_client/models/no_schema.py +0 -71
- build/lib/schema/catolib.py +0 -1016
- build/lib/schema/importSchema.py +0 -60
- build/lib/vendor/certifi/__init__.py +0 -4
- build/lib/vendor/certifi/__main__.py +0 -12
- build/lib/vendor/certifi/core.py +0 -114
- build/lib/vendor/certifi/py.typed +0 -0
- build/lib/vendor/six.py +0 -998
- build/lib/vendor/urllib3/__init__.py +0 -211
- build/lib/vendor/urllib3/_base_connection.py +0 -172
- build/lib/vendor/urllib3/_collections.py +0 -483
- build/lib/vendor/urllib3/_request_methods.py +0 -278
- build/lib/vendor/urllib3/_version.py +0 -16
- build/lib/vendor/urllib3/connection.py +0 -1033
- build/lib/vendor/urllib3/connectionpool.py +0 -1182
- build/lib/vendor/urllib3/contrib/__init__.py +0 -0
- build/lib/vendor/urllib3/contrib/emscripten/__init__.py +0 -18
- build/lib/vendor/urllib3/contrib/emscripten/connection.py +0 -254
- build/lib/vendor/urllib3/contrib/emscripten/fetch.py +0 -418
- build/lib/vendor/urllib3/contrib/emscripten/request.py +0 -22
- build/lib/vendor/urllib3/contrib/emscripten/response.py +0 -285
- build/lib/vendor/urllib3/contrib/pyopenssl.py +0 -552
- build/lib/vendor/urllib3/contrib/socks.py +0 -228
- build/lib/vendor/urllib3/exceptions.py +0 -321
- build/lib/vendor/urllib3/fields.py +0 -341
- build/lib/vendor/urllib3/filepost.py +0 -89
- build/lib/vendor/urllib3/http2/__init__.py +0 -53
- build/lib/vendor/urllib3/http2/connection.py +0 -356
- build/lib/vendor/urllib3/http2/probe.py +0 -87
- build/lib/vendor/urllib3/poolmanager.py +0 -637
- build/lib/vendor/urllib3/py.typed +0 -2
- build/lib/vendor/urllib3/response.py +0 -1265
- build/lib/vendor/urllib3/util/__init__.py +0 -42
- build/lib/vendor/urllib3/util/connection.py +0 -137
- build/lib/vendor/urllib3/util/proxy.py +0 -43
- build/lib/vendor/urllib3/util/request.py +0 -256
- build/lib/vendor/urllib3/util/response.py +0 -101
- build/lib/vendor/urllib3/util/retry.py +0 -533
- build/lib/vendor/urllib3/util/ssl_.py +0 -513
- build/lib/vendor/urllib3/util/ssl_match_hostname.py +0 -159
- build/lib/vendor/urllib3/util/ssltransport.py +0 -276
- build/lib/vendor/urllib3/util/timeout.py +0 -275
- build/lib/vendor/urllib3/util/url.py +0 -471
- build/lib/vendor/urllib3/util/util.py +0 -42
- build/lib/vendor/urllib3/util/wait.py +0 -124
- catocli-1.0.13.dist-info/RECORD +0 -344
- {catocli-1.0.13.dist-info → catocli-1.0.15.dist-info}/LICENSE +0 -0
- {catocli-1.0.13.dist-info → catocli-1.0.15.dist-info}/WHEEL +0 -0
- {catocli-1.0.13.dist-info → catocli-1.0.15.dist-info}/entry_points.txt +0 -0
schema/catolib.py
CHANGED
|
@@ -167,7 +167,7 @@ def getChildOperations(operationType, curType, parentType, parentPath):
|
|
|
167
167
|
def getNestedArgDefinitions(argsAry, parentParamPath, childOperations, parentFields):
|
|
168
168
|
newArgsList = {}
|
|
169
169
|
for arg in argsAry:
|
|
170
|
-
curParamPath = arg["name"] if (parentParamPath == None or parentParamPath == "") else parentParamPath.replace("___",".") + "." + arg["name"]
|
|
170
|
+
curParamPath = renderCamelCase(arg["name"]) if (parentParamPath == None or parentParamPath == "") else parentParamPath.replace("___",".") + "." + renderCamelCase(arg["name"])
|
|
171
171
|
if "path" in arg and '.' not in arg["path"]:
|
|
172
172
|
arg["child"] = True
|
|
173
173
|
arg["parent"] = arg["path"]
|
|
@@ -511,6 +511,7 @@ import catocli
|
|
|
511
511
|
from graphql_client import Configuration
|
|
512
512
|
from graphql_client.api_client import ApiException
|
|
513
513
|
from ..parsers.parserApiClient import get_help
|
|
514
|
+
import traceback
|
|
514
515
|
import sys
|
|
515
516
|
sys.path.insert(0, 'vendor')
|
|
516
517
|
import urllib3
|
|
@@ -578,8 +579,16 @@ def main(args=None):
|
|
|
578
579
|
else:
|
|
579
580
|
if response!=None:
|
|
580
581
|
print(json.dumps(response[0], sort_keys=True, indent=4))
|
|
581
|
-
except
|
|
582
|
-
|
|
582
|
+
except Exception as e:
|
|
583
|
+
if isinstance(e, AttributeError):
|
|
584
|
+
print('Missing arguments. Usage: catocli <operation> -h')
|
|
585
|
+
if args.v==True:
|
|
586
|
+
print('ERROR: ',e)
|
|
587
|
+
traceback.print_exc()
|
|
588
|
+
else:
|
|
589
|
+
print('ERROR: ',e)
|
|
590
|
+
traceback.print_exc()
|
|
591
|
+
exit(1)
|
|
583
592
|
"""
|
|
584
593
|
writeFile("../catocli/Utils/clidriver.py",cliDriverStr)
|
|
585
594
|
|
|
@@ -920,16 +929,6 @@ def generateGraphqlPayload(variablesObj,operation,operationName):
|
|
|
920
929
|
}
|
|
921
930
|
return body
|
|
922
931
|
|
|
923
|
-
def renderCamelCase(pathStr):
|
|
924
|
-
str = "";
|
|
925
|
-
pathAry = pathStr.split(".")
|
|
926
|
-
for i, path in enumerate(pathAry):
|
|
927
|
-
if i == 0:
|
|
928
|
-
str += path
|
|
929
|
-
else:
|
|
930
|
-
str += path[0].upper() + path[1:]
|
|
931
|
-
return str
|
|
932
|
-
|
|
933
932
|
def renderArgsAndFields(responseArgStr, variablesObj, curOperation, definition, indent):
|
|
934
933
|
for fieldName in definition['fields']:
|
|
935
934
|
field = definition['fields'][fieldName]
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import os
|
|
3
|
-
import argparse
|
|
4
|
-
import json
|
|
5
|
-
import catocli
|
|
6
|
-
from graphql_client import Configuration
|
|
7
|
-
from graphql_client.api_client import ApiException
|
|
8
|
-
from ..parsers.parserApiClient import get_help
|
|
9
|
-
import sys
|
|
10
|
-
sys.path.insert(0, 'vendor')
|
|
11
|
-
import urllib3
|
|
12
|
-
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
13
|
-
if "CATO_TOKEN" not in os.environ:
|
|
14
|
-
print("Missing authentication, please set the CATO_TOKEN environment variable with your api key.")
|
|
15
|
-
exit()
|
|
16
|
-
CATO_TOKEN = os.getenv("CATO_TOKEN")
|
|
17
|
-
CATO_DEBUG = bool(os.getenv("CATO_DEBUG", False))
|
|
18
|
-
from ..parsers.raw import raw_parse
|
|
19
|
-
from ..parsers.custom import custom_parse
|
|
20
|
-
from ..parsers.query_siteLocation import query_siteLocation_parse
|
|
21
|
-
from ..parsers.mutation_admin import mutation_admin_parse
|
|
22
|
-
from ..parsers.mutation_container import mutation_container_parse
|
|
23
|
-
from ..parsers.mutation_policy import mutation_policy_parse
|
|
24
|
-
from ..parsers.mutation_site import mutation_site_parse
|
|
25
|
-
from ..parsers.mutation_sites import mutation_sites_parse
|
|
26
|
-
from ..parsers.query_accountBySubdomain import query_accountBySubdomain_parse
|
|
27
|
-
from ..parsers.query_accountMetrics import query_accountMetrics_parse
|
|
28
|
-
from ..parsers.query_accountRoles import query_accountRoles_parse
|
|
29
|
-
from ..parsers.query_accountSnapshot import query_accountSnapshot_parse
|
|
30
|
-
from ..parsers.query_admin import query_admin_parse
|
|
31
|
-
from ..parsers.query_admins import query_admins_parse
|
|
32
|
-
from ..parsers.query_appStats import query_appStats_parse
|
|
33
|
-
from ..parsers.query_appStatsTimeSeries import query_appStatsTimeSeries_parse
|
|
34
|
-
from ..parsers.query_auditFeed import query_auditFeed_parse
|
|
35
|
-
from ..parsers.query_container import query_container_parse
|
|
36
|
-
from ..parsers.query_entityLookup import query_entityLookup_parse
|
|
37
|
-
from ..parsers.query_events import query_events_parse
|
|
38
|
-
from ..parsers.query_eventsFeed import query_eventsFeed_parse
|
|
39
|
-
from ..parsers.query_eventsTimeSeries import query_eventsTimeSeries_parse
|
|
40
|
-
from ..parsers.query_hardwareManagement import query_hardwareManagement_parse
|
|
41
|
-
from ..parsers.query_licensing import query_licensing_parse
|
|
42
|
-
from ..parsers.query_policy import query_policy_parse
|
|
43
|
-
from ..parsers.query_subDomains import query_subDomains_parse
|
|
44
|
-
from ..parsers.query_xdr import query_xdr_parse
|
|
45
|
-
|
|
46
|
-
configuration = Configuration()
|
|
47
|
-
configuration.verify_ssl = False
|
|
48
|
-
configuration.api_key["x-api-key"] = CATO_TOKEN
|
|
49
|
-
configuration.host = "{}".format(catocli.__cato_host__)
|
|
50
|
-
configuration.debug = CATO_DEBUG
|
|
51
|
-
configuration.version = "{}".format(catocli.__version__)
|
|
52
|
-
|
|
53
|
-
parser = argparse.ArgumentParser(prog='catocli', usage='%(prog)s <operationType> <operationName> [options]', description="CLI for query on CATO via API.")
|
|
54
|
-
parser.add_argument('--version', action='version', version=catocli.__version__)
|
|
55
|
-
subparsers = parser.add_subparsers()
|
|
56
|
-
custom_parsers = custom_parse(subparsers)
|
|
57
|
-
raw_parsers = subparsers.add_parser('raw', help='Raw GraphQL', usage=get_help("raw"))
|
|
58
|
-
raw_parser = raw_parse(raw_parsers)
|
|
59
|
-
query_parser = subparsers.add_parser('query', help='Query', usage='catocli query <operationName> [options]')
|
|
60
|
-
query_subparsers = query_parser.add_subparsers(description='valid subcommands', help='additional help')
|
|
61
|
-
query_siteLocation_parser = query_siteLocation_parse(query_subparsers)
|
|
62
|
-
mutation_parser = subparsers.add_parser('mutation', help='Mutation', usage='catocli mutation <operationName> [options]')
|
|
63
|
-
mutation_subparsers = mutation_parser.add_subparsers(description='valid subcommands', help='additional help')
|
|
64
|
-
|
|
65
|
-
mutation_admin_parser = mutation_admin_parse(mutation_subparsers)
|
|
66
|
-
mutation_container_parser = mutation_container_parse(mutation_subparsers)
|
|
67
|
-
mutation_policy_parser = mutation_policy_parse(mutation_subparsers)
|
|
68
|
-
mutation_site_parser = mutation_site_parse(mutation_subparsers)
|
|
69
|
-
mutation_sites_parser = mutation_sites_parse(mutation_subparsers)
|
|
70
|
-
query_accountBySubdomain_parser = query_accountBySubdomain_parse(query_subparsers)
|
|
71
|
-
query_accountMetrics_parser = query_accountMetrics_parse(query_subparsers)
|
|
72
|
-
query_accountRoles_parser = query_accountRoles_parse(query_subparsers)
|
|
73
|
-
query_accountSnapshot_parser = query_accountSnapshot_parse(query_subparsers)
|
|
74
|
-
query_admin_parser = query_admin_parse(query_subparsers)
|
|
75
|
-
query_admins_parser = query_admins_parse(query_subparsers)
|
|
76
|
-
query_appStats_parser = query_appStats_parse(query_subparsers)
|
|
77
|
-
query_appStatsTimeSeries_parser = query_appStatsTimeSeries_parse(query_subparsers)
|
|
78
|
-
query_auditFeed_parser = query_auditFeed_parse(query_subparsers)
|
|
79
|
-
query_container_parser = query_container_parse(query_subparsers)
|
|
80
|
-
query_entityLookup_parser = query_entityLookup_parse(query_subparsers)
|
|
81
|
-
query_events_parser = query_events_parse(query_subparsers)
|
|
82
|
-
query_eventsFeed_parser = query_eventsFeed_parse(query_subparsers)
|
|
83
|
-
query_eventsTimeSeries_parser = query_eventsTimeSeries_parse(query_subparsers)
|
|
84
|
-
query_hardwareManagement_parser = query_hardwareManagement_parse(query_subparsers)
|
|
85
|
-
query_licensing_parser = query_licensing_parse(query_subparsers)
|
|
86
|
-
query_policy_parser = query_policy_parse(query_subparsers)
|
|
87
|
-
query_subDomains_parser = query_subDomains_parse(query_subparsers)
|
|
88
|
-
query_xdr_parser = query_xdr_parse(query_subparsers)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def main(args=None):
|
|
92
|
-
args = parser.parse_args(args=args)
|
|
93
|
-
try:
|
|
94
|
-
CATO_ACCOUNT_ID = os.getenv("CATO_ACCOUNT_ID")
|
|
95
|
-
if args.func.__name__!="createRawRequest":
|
|
96
|
-
if CATO_ACCOUNT_ID==None and args.accountID==None:
|
|
97
|
-
print("Missing accountID, please specify an accountID:\n")
|
|
98
|
-
print('Option 1: Set the CATO_ACCOUNT_ID environment variable with the value of your account ID.')
|
|
99
|
-
print('export CATO_ACCOUNT_ID="12345"\n')
|
|
100
|
-
print("Option 2: Override the accountID value as a cli argument, example:")
|
|
101
|
-
print('catocli <operationType> <operationName> -accountID=12345 <json>')
|
|
102
|
-
print("catocli query entityLookup -accountID=12345 '{\"type\":\"country\"}'\n")
|
|
103
|
-
exit()
|
|
104
|
-
elif args.accountID!=None:
|
|
105
|
-
configuration.accountID = args.accountID
|
|
106
|
-
else:
|
|
107
|
-
configuration.accountID = CATO_ACCOUNT_ID
|
|
108
|
-
response = args.func(args, configuration)
|
|
109
|
-
|
|
110
|
-
if type(response) == ApiException:
|
|
111
|
-
print("ERROR! Status code: {}".format(response.status))
|
|
112
|
-
print(response)
|
|
113
|
-
else:
|
|
114
|
-
if response!=None:
|
|
115
|
-
print(json.dumps(response[0], sort_keys=True, indent=4))
|
|
116
|
-
except AttributeError:
|
|
117
|
-
print('Missing arguments. Usage: catocli <operation> -h')
|
build/lib/catocli/__init__.py
DELETED
build/lib/catocli/__main__.py
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import catocli.parsers.custom.customLib as customLib
|
|
3
|
-
|
|
4
|
-
def custom_parse(subparsers):
|
|
5
|
-
entityTypes = ["account","admin","allocatedIP","any","availablePooledUsage","availableSiteUsage","dhcpRelayGroup","groupSubscription","host","lanFirewall","localRouting","location","mailingListSubscription","networkInterface","portProtocol","simpleService","site","siteRange","timezone","vpnUser","webhookSubscription"]
|
|
6
|
-
entity_parser = subparsers.add_parser('entity', help='Entity Lookup', usage='catocli entity <operationName> [options]')
|
|
7
|
-
entity_subparsers = entity_parser.add_subparsers(description='valid subcommands', help='additional help')
|
|
8
|
-
|
|
9
|
-
for entity in entityTypes:
|
|
10
|
-
item_parser = entity_subparsers.add_parser(entity, help="entityLookup() for type: "+entity, usage='catocli entity '+entity+' <operationName> [options]')
|
|
11
|
-
item_subparsers = item_parser.add_subparsers(description='valid subcommands', help='additional help')
|
|
12
|
-
|
|
13
|
-
item_list_parser = item_subparsers.add_parser('list',
|
|
14
|
-
help='entity '+entity+' list',
|
|
15
|
-
usage=get_help_custom("entity_"+entity+"_list"))
|
|
16
|
-
|
|
17
|
-
item_list_parser.add_argument('-accountID', help='The Account ID.')
|
|
18
|
-
item_list_parser.add_argument('-s', help='Search string', default='', nargs='?')
|
|
19
|
-
item_list_parser.add_argument('-f', default="csv", choices=["json","csv"], nargs='?',
|
|
20
|
-
help='Specify format for output')
|
|
21
|
-
item_list_parser.add_argument('-t', const=True, default=False, nargs='?',
|
|
22
|
-
help='Print test request preview without sending api call')
|
|
23
|
-
item_list_parser.add_argument('-v', const=True, default=False, nargs='?',
|
|
24
|
-
help='Verbose output')
|
|
25
|
-
item_list_parser.add_argument('-p', const=True, default=False, nargs='?',
|
|
26
|
-
help='Pretty print')
|
|
27
|
-
|
|
28
|
-
item_list_parser.set_defaults(func=customLib.entityTypeList,operation_name=entity)
|
|
29
|
-
|
|
30
|
-
def get_help_custom(path):
|
|
31
|
-
matchCmd = "catocli "+path.replace("_"," ")
|
|
32
|
-
import os
|
|
33
|
-
pwd = os.path.dirname(__file__)
|
|
34
|
-
# doc = path+"/README.md"
|
|
35
|
-
abs_path = os.path.join(pwd, "README.md")
|
|
36
|
-
new_line = "\nEXAMPLES:\n"
|
|
37
|
-
lines = open(abs_path, "r").readlines()
|
|
38
|
-
for line in lines:
|
|
39
|
-
if f"{matchCmd}" in line:
|
|
40
|
-
clean_line = line.replace("<br /><br />", "").replace("`","")
|
|
41
|
-
new_line += f"{clean_line}\n"
|
|
42
|
-
# matchArg = path.replace("_",".")
|
|
43
|
-
# for line in lines:
|
|
44
|
-
# if f"`{matchArg}" in line:
|
|
45
|
-
# clean_line = line.replace("<br /><br />", "").replace("`","")
|
|
46
|
-
# new_line += f"{clean_line}\n"
|
|
47
|
-
return new_line
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from graphql_client.api.call_api import ApiClient, CallApi
|
|
3
|
-
from graphql_client.api_client import ApiException
|
|
4
|
-
import logging
|
|
5
|
-
from ..parserApiClient import validateArgs
|
|
6
|
-
|
|
7
|
-
def entityTypeList(args, configuration):
|
|
8
|
-
params = vars(args)
|
|
9
|
-
operation = {
|
|
10
|
-
"operationArgs": {
|
|
11
|
-
"accountID": {
|
|
12
|
-
"name": "accountID",
|
|
13
|
-
"required": True,
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
variablesObj = { "accountID": (params.get("accountID") if params.get("accountID") else params.get("accountId"))}
|
|
18
|
-
|
|
19
|
-
instance = CallApi(ApiClient(configuration))
|
|
20
|
-
operationName = params["operation_name"]
|
|
21
|
-
query = '''query entityLookup ( $type:EntityType! $accountID:ID! $search:String ) {
|
|
22
|
-
entityLookup ( accountID:$accountID type:$type search:$search ) {
|
|
23
|
-
'''+params["operation_name"]+'''s: items {
|
|
24
|
-
description
|
|
25
|
-
'''+params["operation_name"]+''': entity {
|
|
26
|
-
id
|
|
27
|
-
name
|
|
28
|
-
type
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}'''
|
|
33
|
-
body = {
|
|
34
|
-
"query": query,
|
|
35
|
-
"operationName": "entityLookup",
|
|
36
|
-
"variables": {
|
|
37
|
-
"accountID": configuration.accountID,
|
|
38
|
-
"type": params["operation_name"],
|
|
39
|
-
"search": (params.get("s") if params.get("s")!=None else "")
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
isOk, invalidVars, message = validateArgs(variablesObj,operation)
|
|
44
|
-
if isOk==True:
|
|
45
|
-
if params["t"]==True:
|
|
46
|
-
if params["p"]==True:
|
|
47
|
-
print(json.dumps(body,indent=2,sort_keys=True).replace("\\n", "\n").replace("\\t", " "))
|
|
48
|
-
else:
|
|
49
|
-
print(json.dumps(body).replace("\\n", " ").replace("\\t", " ").replace(" "," ").replace(" "," "))
|
|
50
|
-
return None
|
|
51
|
-
else:
|
|
52
|
-
try:
|
|
53
|
-
response = instance.call_api(body,params)
|
|
54
|
-
if params["f"]=="json":
|
|
55
|
-
if params["p"]==True:
|
|
56
|
-
print(json.dumps(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"),indent=2,sort_keys=True).replace("\\n", "\n").replace("\\t", " "))
|
|
57
|
-
else:
|
|
58
|
-
print(json.dumps(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s")))
|
|
59
|
-
else:
|
|
60
|
-
if len(response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"))==0:
|
|
61
|
-
print("No results found")
|
|
62
|
-
else:
|
|
63
|
-
print("id,name,type,description")
|
|
64
|
-
for site in response[0].get("data").get("entityLookup").get(params["operation_name"]+"s"):
|
|
65
|
-
print(site.get(params["operation_name"]).get('id')+","+site.get(params["operation_name"]).get('name')+","+site.get(params["operation_name"]).get('type')+","+site.get('description'))
|
|
66
|
-
except ApiException as e:
|
|
67
|
-
return e
|
|
68
|
-
else:
|
|
69
|
-
print("ERROR: "+message,", ".join(invalidVars))
|
|
70
|
-
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
from ..parserApiClient import createRequest, get_help
|
|
3
|
-
|
|
4
|
-
def mutation_admin_parse(mutation_subparsers):
|
|
5
|
-
mutation_admin_parser = mutation_subparsers.add_parser('admin',
|
|
6
|
-
help='admin() mutation operation',
|
|
7
|
-
usage=get_help("mutation_admin"))
|
|
8
|
-
|
|
9
|
-
mutation_admin_subparsers = mutation_admin_parser.add_subparsers()
|
|
10
|
-
|
|
11
|
-
mutation_admin_addAdmin_parser = mutation_admin_subparsers.add_parser('addAdmin',
|
|
12
|
-
help='addAdmin() admin operation',
|
|
13
|
-
usage=get_help("mutation_admin_addAdmin"))
|
|
14
|
-
|
|
15
|
-
mutation_admin_addAdmin_parser.add_argument('json', help='Variables in JSON format.')
|
|
16
|
-
mutation_admin_addAdmin_parser.add_argument('-accountID', help='Override the CATO_ACCOUNT_ID environment variable with this value.')
|
|
17
|
-
mutation_admin_addAdmin_parser.add_argument('-t', const=True, default=False, nargs='?',
|
|
18
|
-
help='Print test request preview without sending api call')
|
|
19
|
-
mutation_admin_addAdmin_parser.add_argument('-v', const=True, default=False, nargs='?',
|
|
20
|
-
help='Verbose output')
|
|
21
|
-
mutation_admin_addAdmin_parser.add_argument('-p', const=True, default=False, nargs='?',
|
|
22
|
-
help='Pretty print')
|
|
23
|
-
mutation_admin_addAdmin_parser.set_defaults(func=createRequest,operation_name='mutation.admin.addAdmin')
|
|
24
|
-
|
|
25
|
-
mutation_admin_removeAdmin_parser = mutation_admin_subparsers.add_parser('removeAdmin',
|
|
26
|
-
help='removeAdmin() admin operation',
|
|
27
|
-
usage=get_help("mutation_admin_removeAdmin"))
|
|
28
|
-
|
|
29
|
-
mutation_admin_removeAdmin_parser.add_argument('json', help='Variables in JSON format.')
|
|
30
|
-
mutation_admin_removeAdmin_parser.add_argument('-accountID', help='Override the CATO_ACCOUNT_ID environment variable with this value.')
|
|
31
|
-
mutation_admin_removeAdmin_parser.add_argument('-t', const=True, default=False, nargs='?',
|
|
32
|
-
help='Print test request preview without sending api call')
|
|
33
|
-
mutation_admin_removeAdmin_parser.add_argument('-v', const=True, default=False, nargs='?',
|
|
34
|
-
help='Verbose output')
|
|
35
|
-
mutation_admin_removeAdmin_parser.add_argument('-p', const=True, default=False, nargs='?',
|
|
36
|
-
help='Pretty print')
|
|
37
|
-
mutation_admin_removeAdmin_parser.set_defaults(func=createRequest,operation_name='mutation.admin.removeAdmin')
|
|
38
|
-
|
|
39
|
-
mutation_admin_updateAdmin_parser = mutation_admin_subparsers.add_parser('updateAdmin',
|
|
40
|
-
help='updateAdmin() admin operation',
|
|
41
|
-
usage=get_help("mutation_admin_updateAdmin"))
|
|
42
|
-
|
|
43
|
-
mutation_admin_updateAdmin_parser.add_argument('json', help='Variables in JSON format.')
|
|
44
|
-
mutation_admin_updateAdmin_parser.add_argument('-accountID', help='Override the CATO_ACCOUNT_ID environment variable with this value.')
|
|
45
|
-
mutation_admin_updateAdmin_parser.add_argument('-t', const=True, default=False, nargs='?',
|
|
46
|
-
help='Print test request preview without sending api call')
|
|
47
|
-
mutation_admin_updateAdmin_parser.add_argument('-v', const=True, default=False, nargs='?',
|
|
48
|
-
help='Verbose output')
|
|
49
|
-
mutation_admin_updateAdmin_parser.add_argument('-p', const=True, default=False, nargs='?',
|
|
50
|
-
help='Pretty print')
|
|
51
|
-
mutation_admin_updateAdmin_parser.set_defaults(func=createRequest,operation_name='mutation.admin.updateAdmin')
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
from ..parserApiClient import createRequest, get_help
|
|
3
|
-
|
|
4
|
-
def mutation_container_parse(mutation_subparsers):
|
|
5
|
-
mutation_container_parser = mutation_subparsers.add_parser('container',
|
|
6
|
-
help='container() mutation operation',
|
|
7
|
-
usage=get_help("mutation_container"))
|
|
8
|
-
|
|
9
|
-
mutation_container_subparsers = mutation_container_parser.add_subparsers()
|
|
10
|
-
|
|
11
|
-
mutation_container_delete_parser = mutation_container_subparsers.add_parser('delete',
|
|
12
|
-
help='delete() container operation',
|
|
13
|
-
usage=get_help("mutation_container_delete"))
|
|
14
|
-
|
|
15
|
-
mutation_container_delete_parser.add_argument('json', help='Variables in JSON format.')
|
|
16
|
-
mutation_container_delete_parser.add_argument('-accountID', help='Override the CATO_ACCOUNT_ID environment variable with this value.')
|
|
17
|
-
mutation_container_delete_parser.add_argument('-t', const=True, default=False, nargs='?',
|
|
18
|
-
help='Print test request preview without sending api call')
|
|
19
|
-
mutation_container_delete_parser.add_argument('-v', const=True, default=False, nargs='?',
|
|
20
|
-
help='Verbose output')
|
|
21
|
-
mutation_container_delete_parser.add_argument('-p', const=True, default=False, nargs='?',
|
|
22
|
-
help='Pretty print')
|
|
23
|
-
mutation_container_delete_parser.set_defaults(func=createRequest,operation_name='mutation.container.delete')
|