prancer-basic 3.0.26__tar.gz → 3.0.28__tar.gz
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.
- {prancer-basic-3.0.26/src/prancer_basic.egg-info → prancer-basic-3.0.28}/PKG-INFO +1 -1
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/setup.py +1 -1
- {prancer-basic-3.0.26 → prancer-basic-3.0.28/src/prancer_basic.egg-info}/PKG-INFO +1 -1
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/SOURCES.txt +3 -0
- prancer-basic-3.0.28/src/processor/__init__.py +3 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_azure.py +1 -1
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_google.py +35 -14
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_crawler/azure_crawler.py +3 -1
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_crawler/base_crawler.py +1 -2
- prancer-basic-3.0.28/src/processor/connector/special_crawler/google_crawler.py +173 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/crawler/utils.py +4 -1
- prancer-basic-3.0.28/src/processor/helper/xml/xml_utils.py +19 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/logging/log_handler.py +17 -2
- prancer-basic-3.0.28/src/processor/templates/terraform/helper/function/__init__.py +0 -0
- prancer-basic-3.0.26/src/processor/__init__.py +0 -3
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/LICENSE +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/MANIFEST.in +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/README.md +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/setup.cfg +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/dependency_links.txt +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/entry_points.txt +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/requires.txt +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/top_level.txt +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/collection_config/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/collection_config/config_handler.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparison_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/comparatorLexer.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/comparatorListener.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/comparatorParser.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/compare_types.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/rule_interpreter.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/test_comparator.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/interpreter.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/arm/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/arm/secret_azure_iac.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/cloudformation/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/cloudformation/secret_aws_iac.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/common/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/common/sensitive_extension.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/deploymentmanager/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/deploymentmanager/secret_gcp_iac.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/terraform/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/terraform/secret_tf.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/arn_parser.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/git_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/git_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/populate_json.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_aws.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_azure_refactor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_base.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_custom.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_custom_refactor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_db.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_exception.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_fs.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_kubernetes.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_compliance/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_compliance/compliances.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_crawler/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_node_pull/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_node_pull/azure_node_pull.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_node_pull/base_node_pull.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/validation.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/vault.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/crawler/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/crawler/master_snapshot.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/database/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/database/database.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/config/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/config/config_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/config/remote_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/config/rundata_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/file/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/file/file_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/hcl/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/hcl/hcl_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/hcl/parser.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/hcl/transformer.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/hcl/yacc.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/httpapi/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/httpapi/http_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/httpapi/restapi.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/httpapi/restapi_azure.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/jinja/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/jinja/jinja_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/json/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/json/commentjson.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/json/json_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_generate_azure_vault_key.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_populate_json.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_terraform_to_json.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_validator.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/compliance_utils.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/fs_connector.json +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/git_connector.json +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/mastersnapshot.json +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/mastertest.json +0 -0
- {prancer-basic-3.0.26/src/processor/helper/yaml → prancer-basic-3.0.28/src/processor/helper/xml}/__init__.py +0 -0
- {prancer-basic-3.0.26/src/processor/logging → prancer-basic-3.0.28/src/processor/helper/yaml}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/yaml/yaml_utils.py +0 -0
- {prancer-basic-3.0.26/src/processor/reporting → prancer-basic-3.0.28/src/processor/logging}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/logging/dburl_kv.py +0 -0
- {prancer-basic-3.0.26/src/processor/template_processor → prancer-basic-3.0.28/src/processor/reporting}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/reporting/json_output.py +0 -0
- {prancer-basic-3.0.26/src/processor/template_processor/base → prancer-basic-3.0.28/src/processor/template_processor}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/ack_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/aso_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/aws_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/azure_template_processor.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates → prancer-basic-3.0.28/src/processor/template_processor/base}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/base/base_template_constatns.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/base/base_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/google_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/helm_chart_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/json_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/kcc_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/kubernetes_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/terraform_template_processor.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/yaml_template_processor.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/aws → prancer-basic-3.0.28/src/processor/templates}/__init__.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/azure → prancer-basic-3.0.28/src/processor/templates/aws}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/aws/aws_parser.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/base → prancer-basic-3.0.28/src/processor/templates/azure}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/azure/azure_parser.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/google → prancer-basic-3.0.28/src/processor/templates/base}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/base/template_parser.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/helm → prancer-basic-3.0.28/src/processor/templates/google}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/google/google_parser.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/google/util.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/kubernetes → prancer-basic-3.0.28/src/processor/templates/helm}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/helm/helm_parser.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/terraform → prancer-basic-3.0.28/src/processor/templates/kubernetes}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/kubernetes/kubernetes_parser.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/terraform/helper → prancer-basic-3.0.28/src/processor/templates/terraform}/__init__.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/terraform/helper/expression → prancer-basic-3.0.28/src/processor/templates/terraform/helper}/__init__.py +0 -0
- {prancer-basic-3.0.26/src/processor/templates/terraform/helper/function → prancer-basic-3.0.28/src/processor/templates/terraform/helper/expression}/__init__.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/expression/base_expressions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/expression/terraform_expressions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/function/collection_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/function/encoding_function.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/function/numeric_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/function/string_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/function/terraform_functions.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/helper/module_parser.py +0 -0
- {prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/terraform_parser.py +0 -0
|
@@ -18,7 +18,7 @@ LONG_DESCRIPTION = """
|
|
|
18
18
|
setup(
|
|
19
19
|
name='prancer-basic',
|
|
20
20
|
# also update the version in processor.__init__.py file
|
|
21
|
-
version='3.0.
|
|
21
|
+
version='3.0.28',
|
|
22
22
|
description='Prancer Basic, http://prancer.io/',
|
|
23
23
|
long_description=LONG_DESCRIPTION,
|
|
24
24
|
license = "BSD",
|
|
@@ -58,6 +58,7 @@ src/processor/connector/special_compliance/compliances.py
|
|
|
58
58
|
src/processor/connector/special_crawler/__init__.py
|
|
59
59
|
src/processor/connector/special_crawler/azure_crawler.py
|
|
60
60
|
src/processor/connector/special_crawler/base_crawler.py
|
|
61
|
+
src/processor/connector/special_crawler/google_crawler.py
|
|
61
62
|
src/processor/connector/special_node_pull/__init__.py
|
|
62
63
|
src/processor/connector/special_node_pull/azure_node_pull.py
|
|
63
64
|
src/processor/connector/special_node_pull/base_node_pull.py
|
|
@@ -98,6 +99,8 @@ src/processor/helper/utils/jinjatemplates/fs_connector.json
|
|
|
98
99
|
src/processor/helper/utils/jinjatemplates/git_connector.json
|
|
99
100
|
src/processor/helper/utils/jinjatemplates/mastersnapshot.json
|
|
100
101
|
src/processor/helper/utils/jinjatemplates/mastertest.json
|
|
102
|
+
src/processor/helper/xml/__init__.py
|
|
103
|
+
src/processor/helper/xml/xml_utils.py
|
|
101
104
|
src/processor/helper/yaml/__init__.py
|
|
102
105
|
src/processor/helper/yaml/yaml_utils.py
|
|
103
106
|
src/processor/logging/__init__.py
|
|
@@ -133,7 +133,7 @@ def get_all_nodes(token, sub_name, sub_id, node, user, snapshot_source):
|
|
|
133
133
|
put_in_currentdata('errors', data)
|
|
134
134
|
logger.info("Get Id returned invalid status: %s", status)
|
|
135
135
|
|
|
136
|
-
azure_crawler = AzureCrawler(resources, token=token, apiversions=get_api_versions(), subscription_id=sub_id, version=version, scope=scope)
|
|
136
|
+
azure_crawler = AzureCrawler(resources=resources, token=token, apiversions=get_api_versions(), subscription_id=sub_id, version=version, scope=scope)
|
|
137
137
|
resources = azure_crawler.check_for_special_crawl(nodetype)
|
|
138
138
|
if resources:
|
|
139
139
|
for idx, value in enumerate(resources):
|
|
@@ -20,6 +20,7 @@ import os
|
|
|
20
20
|
import re
|
|
21
21
|
from googleapiclient import discovery
|
|
22
22
|
from oauth2client.service_account import ServiceAccountCredentials
|
|
23
|
+
from processor.connector.special_crawler.google_crawler import GoogleCrawler
|
|
23
24
|
from processor.helper.file.file_utils import exists_file
|
|
24
25
|
from processor.logging.log_handler import getlogger
|
|
25
26
|
from processor.helper.httpapi.http_utils import http_get_request
|
|
@@ -191,6 +192,8 @@ def get_params_for_get_method(response, url_var, project_id):
|
|
|
191
192
|
elif item == r"{secret}":
|
|
192
193
|
secret_name = response['name']
|
|
193
194
|
params[item] = secret_name.split('/')[-1]
|
|
195
|
+
elif item == r"{selfLink}" and response.get("selfLink"):
|
|
196
|
+
params[item] = response['selfLink']
|
|
194
197
|
|
|
195
198
|
return params
|
|
196
199
|
except Exception as ex:
|
|
@@ -198,6 +201,9 @@ def get_params_for_get_method(response, url_var, project_id):
|
|
|
198
201
|
|
|
199
202
|
def get_request_url_get_method(get_method, item, project_id=None):
|
|
200
203
|
request_url, _ = get_method_api_path(get_method)
|
|
204
|
+
if not request_url:
|
|
205
|
+
return request_url
|
|
206
|
+
|
|
201
207
|
url_list = request_url.split('/')
|
|
202
208
|
url_var = []
|
|
203
209
|
for elements in url_list:
|
|
@@ -207,6 +213,7 @@ def get_request_url_get_method(get_method, item, project_id=None):
|
|
|
207
213
|
|
|
208
214
|
params = get_params_for_get_method(item , url_var, project_id)
|
|
209
215
|
request_url = requested_get_method_url(request_url, params)
|
|
216
|
+
request_url = re.sub(r'(?<!:)\/\/', '/', request_url)
|
|
210
217
|
return request_url
|
|
211
218
|
|
|
212
219
|
def get_request_url_list_method(get_method, list_method, item, project_id=None, credentials=None):
|
|
@@ -273,6 +280,9 @@ def get_node(credentials, node, snapshot_source, snapshot):
|
|
|
273
280
|
"Authorization" : ("Bearer %s" % access_token)
|
|
274
281
|
}
|
|
275
282
|
|
|
283
|
+
status = False
|
|
284
|
+
data = {}
|
|
285
|
+
|
|
276
286
|
if get_method:
|
|
277
287
|
node_type = node['get_method'] if node and 'get_method' in node else ""
|
|
278
288
|
if isinstance(node_type, list) and len(node_type) > 1:
|
|
@@ -286,7 +296,14 @@ def get_node(credentials, node, snapshot_source, snapshot):
|
|
|
286
296
|
else:
|
|
287
297
|
logger.error("Invalid node type %s", node_type)
|
|
288
298
|
return db_record
|
|
289
|
-
|
|
299
|
+
|
|
300
|
+
google_crawler = GoogleCrawler(access_token=access_token, project_id=project_id)
|
|
301
|
+
process_status, data = google_crawler.check_for_data_process(path, node_type)
|
|
302
|
+
|
|
303
|
+
if process_status:
|
|
304
|
+
status = 200
|
|
305
|
+
|
|
306
|
+
elif method == "POST":
|
|
290
307
|
base_url = "%s%s" % (base_node_type, ".googleapis.com")
|
|
291
308
|
request_url = "https://%s/%s" % (base_url, path)
|
|
292
309
|
logger.info("Invoke request for get snapshot: %s", request_url)
|
|
@@ -391,22 +408,26 @@ def get_all_nodes(credentials, node, snapshot_source, snapshot, snapshot_data):
|
|
|
391
408
|
"Authorization" : ("Bearer %s" % access_token)
|
|
392
409
|
}
|
|
393
410
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
base_node_type = "/".join(base_node_type_list[1:])
|
|
397
|
-
else:
|
|
398
|
-
logger.error("Invalid node type '%s'", node_type)
|
|
399
|
-
return db_record
|
|
411
|
+
google_crawler = GoogleCrawler(access_token=access_token, project_id=project_id)
|
|
412
|
+
crawler_status, data = google_crawler.check_for_special_crawl(node_type)
|
|
400
413
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
414
|
+
if not crawler_status:
|
|
415
|
+
base_node_type_list = node_type.split("/")
|
|
416
|
+
if len(base_node_type_list) > 1:
|
|
417
|
+
base_node_type = "/".join(base_node_type_list[1:])
|
|
418
|
+
else:
|
|
419
|
+
logger.error("Invalid node type '%s'", node_type)
|
|
420
|
+
return db_record
|
|
421
|
+
|
|
422
|
+
request_url = get_api_path(base_node_type)
|
|
423
|
+
if not request_url:
|
|
424
|
+
logger.error("API URL not set in google parameters for resource type: %s", base_node_type)
|
|
404
425
|
|
|
405
|
-
|
|
406
|
-
|
|
426
|
+
request_url = generate_request_url(request_url, project_id)
|
|
427
|
+
logger.info("Invoke request for get snapshot: %s", request_url)
|
|
407
428
|
|
|
408
|
-
|
|
409
|
-
|
|
429
|
+
status, data = http_get_request(request_url, header)
|
|
430
|
+
logger.info('Get snapshot status: %s', status)
|
|
410
431
|
|
|
411
432
|
fn_str_list = ""
|
|
412
433
|
if node and 'type' in node and node['type']:
|
|
@@ -6,7 +6,9 @@ from processor.helper.httpapi.restapi_azure import get_access_token, GRAPH_TOKEN
|
|
|
6
6
|
class AzureCrawler(BaseCrawler):
|
|
7
7
|
|
|
8
8
|
def __init__(self, resources, **kwargs):
|
|
9
|
-
super().__init__(
|
|
9
|
+
super().__init__(**kwargs)
|
|
10
|
+
|
|
11
|
+
self.resources = resources
|
|
10
12
|
self.token = kwargs.get("token")
|
|
11
13
|
self.apiversions = kwargs.get("apiversions")
|
|
12
14
|
self.subscription_id = kwargs.get("subscription_id")
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
from processor.logging.log_handler import getlogger
|
|
2
|
+
from processor.connector.special_crawler.base_crawler import BaseCrawler
|
|
3
|
+
from processor.helper.xml.xml_utils import xml_to_json
|
|
4
|
+
import requests
|
|
5
|
+
import zipfile
|
|
6
|
+
import io
|
|
7
|
+
import re
|
|
8
|
+
|
|
9
|
+
logger = getlogger()
|
|
10
|
+
|
|
11
|
+
class GoogleCrawler(BaseCrawler):
|
|
12
|
+
|
|
13
|
+
def __init__(self, **kwargs):
|
|
14
|
+
super().__init__(**kwargs)
|
|
15
|
+
|
|
16
|
+
self.response_data = None
|
|
17
|
+
self.status = False
|
|
18
|
+
self.project_id = kwargs.get("project_id")
|
|
19
|
+
self.access_token = kwargs.get("access_token")
|
|
20
|
+
self.special_resource_types = {
|
|
21
|
+
"apigee/organizations.apis.deployments.list" : self.crawl_apigee_deployments,
|
|
22
|
+
}
|
|
23
|
+
self.data_processing_resource_types = {
|
|
24
|
+
"apigee/organizations.apis.revisions.get" : self.process_apigee_version_data,
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
def get_header(self):
|
|
28
|
+
return {
|
|
29
|
+
"Authorization" : ("Bearer %s" % self.access_token)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
def check_for_special_crawl(self, resource_type):
|
|
33
|
+
"""
|
|
34
|
+
check the resource type need special crawling or not. if it need special crawling then
|
|
35
|
+
it will process the special crawler and returns the updated resources
|
|
36
|
+
"""
|
|
37
|
+
if resource_type in self.special_resource_types:
|
|
38
|
+
self.status = True
|
|
39
|
+
crawl_function = self.special_resource_types.get(resource_type)
|
|
40
|
+
self.response_data = crawl_function()
|
|
41
|
+
|
|
42
|
+
return self.status, self.response_data
|
|
43
|
+
|
|
44
|
+
def check_for_data_process(self, path, resource_type):
|
|
45
|
+
"""
|
|
46
|
+
check the resource type need processing on the data. if it need processing then
|
|
47
|
+
it will process it and returns the updated resource data
|
|
48
|
+
"""
|
|
49
|
+
self.path = path
|
|
50
|
+
if resource_type in self.data_processing_resource_types:
|
|
51
|
+
self.status = True
|
|
52
|
+
process_data_function = self.data_processing_resource_types.get(resource_type)
|
|
53
|
+
self.response_data = process_data_function()
|
|
54
|
+
|
|
55
|
+
return self.status, self.response_data
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def process_apigee_version_data(self):
|
|
59
|
+
response_data = {}
|
|
60
|
+
match = re.search(r"organizations/([^/]+)/apis/([^/]+)/revisions/([^/]+)", self.path)
|
|
61
|
+
if match:
|
|
62
|
+
organization = match.group(1)
|
|
63
|
+
api = match.group(2)
|
|
64
|
+
revision = match.group(3)
|
|
65
|
+
else:
|
|
66
|
+
logger.error("Invalid path for process apigee version")
|
|
67
|
+
return
|
|
68
|
+
|
|
69
|
+
request_url = f"https://apigee.googleapis.com/{self.path}?format=bundle"
|
|
70
|
+
response = requests.get(url=request_url, headers=self.get_header())
|
|
71
|
+
|
|
72
|
+
pattern_dict = {
|
|
73
|
+
"policies": r'.+/policies/[^/]+\.xml',
|
|
74
|
+
"proxies": r'.+/proxies/[^/]+\.xml',
|
|
75
|
+
"targets": r'.+/targets/[^/]+\.xml'
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if response.status_code == 200:
|
|
79
|
+
bundle_zip = io.BytesIO(response.content)
|
|
80
|
+
policies_json = []
|
|
81
|
+
proxies_json = []
|
|
82
|
+
targets_json = []
|
|
83
|
+
with zipfile.ZipFile(bundle_zip, 'r') as zip_ref:
|
|
84
|
+
for file in zip_ref.filelist:
|
|
85
|
+
for pattern_key, pattern in pattern_dict.items():
|
|
86
|
+
matches = re.findall(pattern, file.filename)
|
|
87
|
+
if matches:
|
|
88
|
+
with zip_ref.open(file.filename) as xml_file:
|
|
89
|
+
xml_content = xml_file.read()
|
|
90
|
+
json_content = xml_to_json(xml_content)
|
|
91
|
+
|
|
92
|
+
if pattern_key == "policies":
|
|
93
|
+
policies_json.append(json_content)
|
|
94
|
+
elif pattern_key == "proxies":
|
|
95
|
+
proxies_json.append(json_content)
|
|
96
|
+
elif pattern_key == "targets":
|
|
97
|
+
targets_json.append(json_content)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
response_data = {
|
|
101
|
+
"organization" : organization,
|
|
102
|
+
"api" : api,
|
|
103
|
+
"revision" : revision,
|
|
104
|
+
"policies" : policies_json,
|
|
105
|
+
"proxies" : proxies_json,
|
|
106
|
+
"targets" : targets_json
|
|
107
|
+
}
|
|
108
|
+
return response_data
|
|
109
|
+
else:
|
|
110
|
+
logger.error(f"Failed to retrieve API bundle. Status code: {response.status_code}, Error: {response.content}")
|
|
111
|
+
return response_data
|
|
112
|
+
|
|
113
|
+
def get_apigee_organizations(self):
|
|
114
|
+
organizations = []
|
|
115
|
+
request_url = "https://apigee.googleapis.com/v1/organizations"
|
|
116
|
+
response = requests.get(url=request_url, headers=self.get_header())
|
|
117
|
+
if response.status_code != 200:
|
|
118
|
+
logger.error(f"Failed to get the organization list. Status code: {response.status_code}, Error: {response.content}")
|
|
119
|
+
return organizations
|
|
120
|
+
|
|
121
|
+
data = response.json()
|
|
122
|
+
organizations = data.get("organizations", [])
|
|
123
|
+
return organizations
|
|
124
|
+
|
|
125
|
+
def get_apigee_apis(self, organization):
|
|
126
|
+
apis = []
|
|
127
|
+
request_url = f"https://apigee.googleapis.com/v1/organizations/{organization}/apis"
|
|
128
|
+
response = requests.get(url=request_url, headers=self.get_header())
|
|
129
|
+
if response.status_code != 200:
|
|
130
|
+
logger.error(f"Failed to get the apigee apis. Status code: {response.status_code}, Error: {response.content}")
|
|
131
|
+
return apis
|
|
132
|
+
|
|
133
|
+
data = response.json()
|
|
134
|
+
apis = data.get("proxies", [])
|
|
135
|
+
return apis
|
|
136
|
+
|
|
137
|
+
def get_apigee_deployments(self, organization, api):
|
|
138
|
+
deployments = []
|
|
139
|
+
request_url = f"https://apigee.googleapis.com/v1/organizations/{organization}/apis/{api}/deployments"
|
|
140
|
+
response = requests.get(url=request_url, headers=self.get_header())
|
|
141
|
+
if response.status_code != 200:
|
|
142
|
+
logger.error(f"Failed to get the apigee deployments. Status code: {response.status_code}, Error: {response.content}")
|
|
143
|
+
return deployments
|
|
144
|
+
|
|
145
|
+
data = response.json()
|
|
146
|
+
deployments = data.get("deployments", [])
|
|
147
|
+
return deployments
|
|
148
|
+
|
|
149
|
+
def crawl_apigee_deployments(self):
|
|
150
|
+
"""
|
|
151
|
+
crawl "apigee/organizations.apis.deployments.list" resource type
|
|
152
|
+
"""
|
|
153
|
+
deployment_list = []
|
|
154
|
+
organizations = self.get_apigee_organizations()
|
|
155
|
+
for organization in organizations:
|
|
156
|
+
if organization.get("projectId") != self.project_id:
|
|
157
|
+
continue
|
|
158
|
+
organization_name = organization.get("organization")
|
|
159
|
+
apigee_apis = self.get_apigee_apis(organization_name)
|
|
160
|
+
for api in apigee_apis:
|
|
161
|
+
api_name = api.get("name")
|
|
162
|
+
deployments = self.get_apigee_deployments(organization_name, api_name)
|
|
163
|
+
for deployment in deployments:
|
|
164
|
+
revision = deployment.get("revision")
|
|
165
|
+
deployment["selfLink"] = f"/organizations/{organization_name}/apis/{api_name}/revisions/{revision}"
|
|
166
|
+
deployment_list.append(deployment)
|
|
167
|
+
response_data = {
|
|
168
|
+
"items" : deployment_list
|
|
169
|
+
}
|
|
170
|
+
return response_data
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
@@ -166,6 +166,8 @@ def populate_gcp_projects(container, source, structure_data):
|
|
|
166
166
|
private_key = user.get("private_key")
|
|
167
167
|
name = re.sub(r"-\d+$", "", name)
|
|
168
168
|
account_list += get_projects_list(private_key_id, private_key, client_email, client_id, name)
|
|
169
|
+
else:
|
|
170
|
+
account_list = structure_data.get("projects")
|
|
169
171
|
updated_data = copy.deepcopy(structure_data)
|
|
170
172
|
updated_data["projects"] = account_list
|
|
171
173
|
update_collection_data(container, source, updated_data, dbname, collection)
|
|
@@ -199,6 +201,7 @@ def get_projects_list(private_key_id, private_key, client_email, client_id, test
|
|
|
199
201
|
""" Get google projects list """
|
|
200
202
|
project_list = []
|
|
201
203
|
isremote = get_from_currentdata('remote')
|
|
204
|
+
private_key_set = True if private_key else False
|
|
202
205
|
if not private_key and isremote:
|
|
203
206
|
private_key = get_value_from_customer_keyvault(private_key_id)
|
|
204
207
|
logger.info('Private key from customer keyvault, Secret: %s', '*' * len(private_key))
|
|
@@ -233,7 +236,7 @@ def get_projects_list(private_key_id, private_key, client_email, client_id, test
|
|
|
233
236
|
"client_id": client_id,
|
|
234
237
|
"name": "%s-%s" % (test_user, index),
|
|
235
238
|
"private_key_id": private_key_id,
|
|
236
|
-
"private_key" : private_key if
|
|
239
|
+
"private_key" : private_key if private_key_set else "",
|
|
237
240
|
"type": "service_account"
|
|
238
241
|
}
|
|
239
242
|
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import xml.etree.ElementTree as ET
|
|
2
|
+
|
|
3
|
+
def parse_element(element):
|
|
4
|
+
parsed = {
|
|
5
|
+
"name": element.tag,
|
|
6
|
+
"text": element.text.strip() if element.text and element.text.strip() else None,
|
|
7
|
+
"attributes": element.attrib,
|
|
8
|
+
"children": []
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
for child in element:
|
|
12
|
+
parsed["children"].append(parse_element(child))
|
|
13
|
+
|
|
14
|
+
return parsed
|
|
15
|
+
|
|
16
|
+
def xml_to_json(xml_content):
|
|
17
|
+
root = ET.fromstring(xml_content)
|
|
18
|
+
parsed_xml = parse_element(root)
|
|
19
|
+
return parsed_xml
|
|
@@ -196,6 +196,11 @@ class MongoDBHandler(logging.Handler):
|
|
|
196
196
|
"""
|
|
197
197
|
def __init__(self, dburl, dbname, collection='logs', log_type=None):
|
|
198
198
|
logging.Handler.__init__(self)
|
|
199
|
+
|
|
200
|
+
self.max_docsize = 15.5*1024*1024
|
|
201
|
+
self.cursize = 0
|
|
202
|
+
self.index = 0
|
|
203
|
+
|
|
199
204
|
try:
|
|
200
205
|
dbconnection = MongoClient(host=dburl, serverSelectionTimeoutMS=3000)
|
|
201
206
|
_ = dbconnection.list_database_names()
|
|
@@ -220,7 +225,7 @@ class MongoDBHandler(logging.Handler):
|
|
|
220
225
|
self.collection = self.db[self.coll_name]
|
|
221
226
|
DBLOGGER = get_dblog_name(log_type)
|
|
222
227
|
self.dblog_name = DBLOGGER
|
|
223
|
-
self.collection.insert_one({'name': self.dblog_name, 'logs': []})
|
|
228
|
+
self.collection.insert_one({'name': self.dblog_name, 'index': self.index, 'logs': []})
|
|
224
229
|
|
|
225
230
|
def get_log_collection(self):
|
|
226
231
|
return self.dblog_name
|
|
@@ -242,10 +247,20 @@ class MongoDBHandler(logging.Handler):
|
|
|
242
247
|
"log_type": getattr(record, "type", "DEFAULT")
|
|
243
248
|
}
|
|
244
249
|
|
|
250
|
+
try:
|
|
251
|
+
self.cursize += len(json.dumps(db_record))
|
|
252
|
+
except:
|
|
253
|
+
self.cursize += len(str(db_record))
|
|
254
|
+
|
|
255
|
+
if self.cursize // self.max_docsize >= 1:
|
|
256
|
+
self.index += 1
|
|
257
|
+
self.cursize = 0
|
|
258
|
+
self.collection.insert_one({'name': self.dblog_name, 'index': self.index, 'logs': []})
|
|
259
|
+
|
|
245
260
|
try:
|
|
246
261
|
if self.collection is not None and self.dblog_name:
|
|
247
262
|
# self.collection.insert(db_record, check_keys=False)
|
|
248
|
-
self.collection.update_one({'name': self.dblog_name}, {'$push': {'logs': db_record}})
|
|
263
|
+
self.collection.update_one({'name': self.dblog_name, 'index': self.index}, {'$push': {'logs': db_record}})
|
|
249
264
|
except Exception as e:
|
|
250
265
|
print('CRITICAL Logger DB ERROR: Logging to database not possible!')
|
|
251
266
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/prancer_basic.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/collection_config/config_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparison_functions.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/comparisonantlr/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/arm/__init__.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/arm/secret_azure_iac.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/terraform/__init__.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/comparison/rules/terraform/secret_tf.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/__init__.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/git_functions.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/git_connector/git_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_azure_refactor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_custom_refactor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/snapshot_kubernetes.py
RENAMED
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_compliance/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_crawler/__init__.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/connector/special_node_pull/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_populate_json.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/cli_terraform_to_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/compliance_utils.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/helper/utils/jinjatemplates/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/ack_processor.py
RENAMED
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/aso_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/template_processor/kcc_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/base/template_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/google/google_parser.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{prancer-basic-3.0.26 → prancer-basic-3.0.28}/src/processor/templates/terraform/terraform_parser.py
RENAMED
|
File without changes
|