prancer-basic 0.1.1__tar.gz → 0.1.2__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.
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/populate_json +12 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/prancer +12 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/terraform_to_json +12 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/validator +12 -0
- {prancer-basic-0.1.1 → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/PKG-INFO +1 -1
- {prancer-basic-0.1.1/src/prancer_basic.egg-info → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/SOURCES.txt +2 -0
- {prancer-basic-0.1.1/src/prancer_basic.egg-info → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/entry_points.txt +1 -0
- {prancer-basic-0.1.1/src/prancer_basic.egg-info → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/requires.txt +4 -1
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/comparison_functions.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/interpreter.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorLexer.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorListener.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorParser.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/compare_types.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/rule_interpreter.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/test_comparator.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/comparatorLexer.py +189 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/comparatorListener.py +4 -1
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/rule_interpreter.py +7 -6
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_aws.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_azure.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_custom.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_google.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_utils.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/validation.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/vault.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot.py +228 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/connector/snapshot_aws.py +73 -16
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/connector/snapshot_azure.py +45 -17
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_custom.py +520 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_google.py +239 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_utils.py +23 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/connector/validation.py +47 -15
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/database/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/database/__pycache__/database.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/config/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/config/__pycache__/config_utils.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/config/__pycache__/rundata_utils.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/config/config_utils.py +15 -19
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/config/rundata_utils.py +1 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/file/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/file/__pycache__/file_utils.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/http_utils.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/restapi.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/restapi_azure.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/httpapi/restapi_azure.py +5 -4
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/json/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/json/__pycache__/json_utils.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/json/json_utils.py +17 -5
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/__pycache__/cli_populate_json.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/__pycache__/cli_terraform_to_json.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/__pycache__/cli_validator.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/utils/cli_populate_json.py +3 -1
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/cli_validator.py +221 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/logging/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/logging/__pycache__/log_handler.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/logging/log_handler.py +63 -12
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/reporting/__pycache__/__init__.cpython-36.pyc +0 -0
- home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/reporting/__pycache__/json_output.cpython-36.pyc +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/reporting/json_output.py +3 -0
- prancer-basic-0.1.1/README.md +0 -25
- prancer-basic-0.1.1/setup.cfg +0 -4
- prancer-basic-0.1.1/setup.py +0 -49
- prancer-basic-0.1.1/src/prancer_basic.egg-info/PKG-INFO +0 -18
- prancer-basic-0.1.1/src/processor/comparison/comparisonantlr/comparatorLexer.py +0 -182
- prancer-basic-0.1.1/src/processor/connector/snapshot.py +0 -132
- prancer-basic-0.1.1/src/processor/connector/snapshot_custom.py +0 -155
- prancer-basic-0.1.1/src/processor/helper/utils/cli_validator.py +0 -56
- {prancer-basic-0.1.1/src/prancer_basic.egg-info → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/dependency_links.txt +0 -0
- {prancer-basic-0.1.1/src/prancer_basic.egg-info → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/prancer_basic-0.1.2-py3.6.egg-info}/top_level.txt +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparison_functions.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/comparatorParser.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/compare_types.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/comparisonantlr/test_comparator.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/comparison/interpreter.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/connector/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/connector/vault.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/database/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/database/database.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/config/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/file/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/file/file_utils.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/httpapi/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/httpapi/http_utils.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/httpapi/restapi.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/json/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/utils/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/helper/utils/cli_terraform_to_json.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/logging/__init__.py +0 -0
- {prancer-basic-0.1.1/src → home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages}/processor/reporting/__init__.py +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/python
|
|
2
|
+
# EASY-INSTALL-ENTRY-SCRIPT: 'prancer-basic==0.1.2','console_scripts','populate_json'
|
|
3
|
+
__requires__ = 'prancer-basic==0.1.2'
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
from pkg_resources import load_entry_point
|
|
7
|
+
|
|
8
|
+
if __name__ == '__main__':
|
|
9
|
+
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
|
10
|
+
sys.exit(
|
|
11
|
+
load_entry_point('prancer-basic==0.1.2', 'console_scripts', 'populate_json')()
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/python
|
|
2
|
+
# EASY-INSTALL-ENTRY-SCRIPT: 'prancer-basic==0.1.2','console_scripts','prancer'
|
|
3
|
+
__requires__ = 'prancer-basic==0.1.2'
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
from pkg_resources import load_entry_point
|
|
7
|
+
|
|
8
|
+
if __name__ == '__main__':
|
|
9
|
+
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
|
10
|
+
sys.exit(
|
|
11
|
+
load_entry_point('prancer-basic==0.1.2', 'console_scripts', 'prancer')()
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/python
|
|
2
|
+
# EASY-INSTALL-ENTRY-SCRIPT: 'prancer-basic==0.1.2','console_scripts','terraform_to_json'
|
|
3
|
+
__requires__ = 'prancer-basic==0.1.2'
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
from pkg_resources import load_entry_point
|
|
7
|
+
|
|
8
|
+
if __name__ == '__main__':
|
|
9
|
+
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
|
10
|
+
sys.exit(
|
|
11
|
+
load_entry_point('prancer-basic==0.1.2', 'console_scripts', 'terraform_to_json')()
|
|
12
|
+
)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/python
|
|
2
|
+
# EASY-INSTALL-ENTRY-SCRIPT: 'prancer-basic==0.1.2','console_scripts','validator'
|
|
3
|
+
__requires__ = 'prancer-basic==0.1.2'
|
|
4
|
+
import re
|
|
5
|
+
import sys
|
|
6
|
+
from pkg_resources import load_entry_point
|
|
7
|
+
|
|
8
|
+
if __name__ == '__main__':
|
|
9
|
+
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
|
|
10
|
+
sys.exit(
|
|
11
|
+
load_entry_point('prancer-basic==0.1.2', 'console_scripts', 'validator')()
|
|
12
|
+
)
|
|
@@ -22,6 +22,8 @@ src/processor/connector/snapshot.py
|
|
|
22
22
|
src/processor/connector/snapshot_aws.py
|
|
23
23
|
src/processor/connector/snapshot_azure.py
|
|
24
24
|
src/processor/connector/snapshot_custom.py
|
|
25
|
+
src/processor/connector/snapshot_google.py
|
|
26
|
+
src/processor/connector/snapshot_utils.py
|
|
25
27
|
src/processor/connector/validation.py
|
|
26
28
|
src/processor/connector/vault.py
|
|
27
29
|
src/processor/database/__init__.py
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
[console_scripts]
|
|
2
2
|
populate_json = processor.helper.utils.cli_populate_json:populate_json_main
|
|
3
|
+
prancer = processor.helper.utils.cli_validator:validator_main
|
|
3
4
|
terraform_to_json = processor.helper.utils.cli_terraform_to_json:terraform_to_json_main
|
|
4
5
|
validator = processor.helper.utils.cli_validator:validator_main
|
|
5
6
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
ply==3.10
|
|
2
1
|
antlr4-python3-runtime==4.7.1
|
|
3
2
|
boto3==1.9.86
|
|
4
3
|
GitPython==2.1.11
|
|
@@ -10,3 +9,7 @@ python-dateutil==2.7.5
|
|
|
10
9
|
requests==2.20.1
|
|
11
10
|
ply==3.10
|
|
12
11
|
pyhcl==0.3.10
|
|
12
|
+
google-api-python-client==1.7.8
|
|
13
|
+
google-auth==1.6.3
|
|
14
|
+
google-auth-httplib2==0.0.3
|
|
15
|
+
oauth2client==4.1.3
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
# Generated from comparator.g4 by ANTLR 4.7.1
|
|
2
|
+
from antlr4 import *
|
|
3
|
+
from io import StringIO
|
|
4
|
+
from typing.io import TextIO
|
|
5
|
+
import sys
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def serializedATN():
|
|
9
|
+
with StringIO() as buf:
|
|
10
|
+
buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\31")
|
|
11
|
+
buf.write("\u0100\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7")
|
|
12
|
+
buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r")
|
|
13
|
+
buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23")
|
|
14
|
+
buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30")
|
|
15
|
+
buf.write("\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3")
|
|
16
|
+
buf.write("\4\3\4\3\4\3\4\3\4\3\4\3\4\5\4F\n\4\3\5\3\5\3\5\3\5\3")
|
|
17
|
+
buf.write("\5\3\5\3\5\3\5\3\5\5\5Q\n\5\3\6\3\6\3\7\3\7\3\7\3\7\3")
|
|
18
|
+
buf.write("\7\3\7\3\7\3\7\5\7]\n\7\3\b\3\b\3\b\3\b\3\b\3\b\5\be\n")
|
|
19
|
+
buf.write("\b\3\b\6\bh\n\b\r\b\16\bi\3\t\3\t\3\t\5\to\n\t\3\t\5\t")
|
|
20
|
+
buf.write("r\n\t\3\n\3\n\3\n\5\nw\n\n\3\n\3\n\5\n{\n\n\3\n\3\n\5")
|
|
21
|
+
buf.write("\n\177\n\n\3\n\3\n\5\n\u0083\n\n\3\n\5\n\u0086\n\n\3\n")
|
|
22
|
+
buf.write("\3\n\5\n\u008a\n\n\3\13\3\13\3\13\5\13\u008f\n\13\3\13")
|
|
23
|
+
buf.write("\3\13\5\13\u0093\n\13\3\13\3\13\5\13\u0097\n\13\3\13\3")
|
|
24
|
+
buf.write("\13\5\13\u009b\n\13\3\13\5\13\u009e\n\13\5\13\u00a0\n")
|
|
25
|
+
buf.write("\13\3\13\3\13\3\f\3\f\7\f\u00a6\n\f\f\f\16\f\u00a9\13")
|
|
26
|
+
buf.write("\f\3\r\3\r\3\r\5\r\u00ae\n\r\3\r\3\r\7\r\u00b2\n\r\f\r")
|
|
27
|
+
buf.write("\16\r\u00b5\13\r\3\r\3\r\7\r\u00b9\n\r\f\r\16\r\u00bc")
|
|
28
|
+
buf.write("\13\r\3\r\3\r\3\16\3\16\7\16\u00c2\n\16\f\16\16\16\u00c5")
|
|
29
|
+
buf.write("\13\16\3\16\3\16\3\17\3\17\3\17\3\17\3\20\6\20\u00ce\n")
|
|
30
|
+
buf.write("\20\r\20\16\20\u00cf\3\21\6\21\u00d3\n\21\r\21\16\21\u00d4")
|
|
31
|
+
buf.write("\3\21\3\21\6\21\u00d9\n\21\r\21\16\21\u00da\5\21\u00dd")
|
|
32
|
+
buf.write("\n\21\3\22\5\22\u00e0\n\22\3\22\3\22\3\22\3\22\3\22\3")
|
|
33
|
+
buf.write("\22\3\22\3\22\3\22\5\22\u00eb\n\22\3\22\5\22\u00ee\n\22")
|
|
34
|
+
buf.write("\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30")
|
|
35
|
+
buf.write("\6\30\u00fb\n\30\r\30\16\30\u00fc\3\30\3\30\3\u00c3\2")
|
|
36
|
+
buf.write("\31\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r")
|
|
37
|
+
buf.write("\31\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30")
|
|
38
|
+
buf.write("/\31\3\2\17\4\2HHhh\4\2CCcc\4\2NNnn\4\2UUuu\4\2GGgg\4")
|
|
39
|
+
buf.write("\2VVvv\4\2TTtt\4\2WWww\4\2>>@@\4\2C\\c|\7\2//\62;C\\a")
|
|
40
|
+
buf.write("ac|\3\2\62;\5\2\13\f\16\17\"\"\2\u0126\2\3\3\2\2\2\2\5")
|
|
41
|
+
buf.write("\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2")
|
|
42
|
+
buf.write("\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2")
|
|
43
|
+
buf.write("\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2")
|
|
44
|
+
buf.write("\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2")
|
|
45
|
+
buf.write("\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\3\61")
|
|
46
|
+
buf.write("\3\2\2\2\5\63\3\2\2\2\7E\3\2\2\2\tP\3\2\2\2\13R\3\2\2")
|
|
47
|
+
buf.write("\2\r\\\3\2\2\2\17^\3\2\2\2\21k\3\2\2\2\23s\3\2\2\2\25")
|
|
48
|
+
buf.write("\u008b\3\2\2\2\27\u00a3\3\2\2\2\31\u00aa\3\2\2\2\33\u00bf")
|
|
49
|
+
buf.write("\3\2\2\2\35\u00c8\3\2\2\2\37\u00cd\3\2\2\2!\u00d2\3\2")
|
|
50
|
+
buf.write("\2\2#\u00df\3\2\2\2%\u00ef\3\2\2\2\'\u00f1\3\2\2\2)\u00f3")
|
|
51
|
+
buf.write("\3\2\2\2+\u00f5\3\2\2\2-\u00f7\3\2\2\2/\u00fa\3\2\2\2")
|
|
52
|
+
buf.write("\61\62\7*\2\2\62\4\3\2\2\2\63\64\7+\2\2\64\6\3\2\2\2\65")
|
|
53
|
+
buf.write("\66\7g\2\2\66\67\7z\2\2\678\7k\2\289\7u\2\29F\7v\2\2:")
|
|
54
|
+
buf.write(";\7g\2\2;<\7z\2\2<=\7k\2\2=>\7u\2\2>?\7v\2\2?F\7u\2\2")
|
|
55
|
+
buf.write("@A\7e\2\2AB\7q\2\2BC\7w\2\2CD\7p\2\2DF\7v\2\2E\65\3\2")
|
|
56
|
+
buf.write("\2\2E:\3\2\2\2E@\3\2\2\2F\b\3\2\2\2GH\t\2\2\2HI\t\3\2")
|
|
57
|
+
buf.write("\2IJ\t\4\2\2JK\t\5\2\2KQ\t\6\2\2LM\t\7\2\2MN\t\b\2\2N")
|
|
58
|
+
buf.write("O\t\t\2\2OQ\t\6\2\2PG\3\2\2\2PL\3\2\2\2Q\n\3\2\2\2RS\7")
|
|
59
|
+
buf.write("-\2\2S\f\3\2\2\2T]\t\n\2\2UV\7@\2\2V]\7?\2\2WX\7>\2\2")
|
|
60
|
+
buf.write("X]\7?\2\2YZ\7#\2\2Z]\7?\2\2[]\7?\2\2\\T\3\2\2\2\\U\3\2")
|
|
61
|
+
buf.write("\2\2\\W\3\2\2\2\\Y\3\2\2\2\\[\3\2\2\2]\16\3\2\2\2^_\7")
|
|
62
|
+
buf.write("}\2\2_`\5\37\20\2`g\7\177\2\2ad\7\60\2\2be\5\21\t\2ce")
|
|
63
|
+
buf.write("\5\23\n\2db\3\2\2\2dc\3\2\2\2eh\3\2\2\2fh\5\25\13\2ga")
|
|
64
|
+
buf.write("\3\2\2\2gf\3\2\2\2hi\3\2\2\2ig\3\2\2\2ij\3\2\2\2j\20\3")
|
|
65
|
+
buf.write("\2\2\2kq\5\27\f\2ln\7]\2\2mo\5\37\20\2nm\3\2\2\2no\3\2")
|
|
66
|
+
buf.write("\2\2op\3\2\2\2pr\7_\2\2ql\3\2\2\2qr\3\2\2\2r\22\3\2\2")
|
|
67
|
+
buf.write("\2s\u0089\5\27\f\2tv\7]\2\2uw\5%\23\2vu\3\2\2\2vw\3\2")
|
|
68
|
+
buf.write("\2\2wx\3\2\2\2xz\5\27\f\2y{\5%\23\2zy\3\2\2\2z{\3\2\2")
|
|
69
|
+
buf.write("\2{|\3\2\2\2|~\7?\2\2}\177\5%\23\2~}\3\2\2\2~\177\3\2")
|
|
70
|
+
buf.write("\2\2\177\u0082\3\2\2\2\u0080\u0083\5\37\20\2\u0081\u0083")
|
|
71
|
+
buf.write("\5\27\f\2\u0082\u0080\3\2\2\2\u0082\u0081\3\2\2\2\u0083")
|
|
72
|
+
buf.write("\u0085\3\2\2\2\u0084\u0086\5%\23\2\u0085\u0084\3\2\2\2")
|
|
73
|
+
buf.write("\u0085\u0086\3\2\2\2\u0086\u0087\3\2\2\2\u0087\u0088\7")
|
|
74
|
+
buf.write("_\2\2\u0088\u008a\3\2\2\2\u0089t\3\2\2\2\u0089\u008a\3")
|
|
75
|
+
buf.write("\2\2\2\u008a\24\3\2\2\2\u008b\u009f\7]\2\2\u008c\u00a0")
|
|
76
|
+
buf.write("\5\37\20\2\u008d\u008f\5%\23\2\u008e\u008d\3\2\2\2\u008e")
|
|
77
|
+
buf.write("\u008f\3\2\2\2\u008f\u0090\3\2\2\2\u0090\u0092\5\27\f")
|
|
78
|
+
buf.write("\2\u0091\u0093\5%\23\2\u0092\u0091\3\2\2\2\u0092\u0093")
|
|
79
|
+
buf.write("\3\2\2\2\u0093\u0094\3\2\2\2\u0094\u0096\7?\2\2\u0095")
|
|
80
|
+
buf.write("\u0097\5%\23\2\u0096\u0095\3\2\2\2\u0096\u0097\3\2\2\2")
|
|
81
|
+
buf.write("\u0097\u009a\3\2\2\2\u0098\u009b\5\37\20\2\u0099\u009b")
|
|
82
|
+
buf.write("\5\27\f\2\u009a\u0098\3\2\2\2\u009a\u0099\3\2\2\2\u009b")
|
|
83
|
+
buf.write("\u009d\3\2\2\2\u009c\u009e\5%\23\2\u009d\u009c\3\2\2\2")
|
|
84
|
+
buf.write("\u009d\u009e\3\2\2\2\u009e\u00a0\3\2\2\2\u009f\u008c\3")
|
|
85
|
+
buf.write("\2\2\2\u009f\u008e\3\2\2\2\u009f\u00a0\3\2\2\2\u00a0\u00a1")
|
|
86
|
+
buf.write("\3\2\2\2\u00a1\u00a2\7_\2\2\u00a2\26\3\2\2\2\u00a3\u00a7")
|
|
87
|
+
buf.write("\t\13\2\2\u00a4\u00a6\t\f\2\2\u00a5\u00a4\3\2\2\2\u00a6")
|
|
88
|
+
buf.write("\u00a9\3\2\2\2\u00a7\u00a5\3\2\2\2\u00a7\u00a8\3\2\2\2")
|
|
89
|
+
buf.write("\u00a8\30\3\2\2\2\u00a9\u00a7\3\2\2\2\u00aa\u00ad\5\'")
|
|
90
|
+
buf.write("\24\2\u00ab\u00ae\5#\22\2\u00ac\u00ae\5\35\17\2\u00ad")
|
|
91
|
+
buf.write("\u00ab\3\2\2\2\u00ad\u00ac\3\2\2\2\u00ae\u00ba\3\2\2\2")
|
|
92
|
+
buf.write("\u00af\u00b3\7.\2\2\u00b0\u00b2\5/\30\2\u00b1\u00b0\3")
|
|
93
|
+
buf.write("\2\2\2\u00b2\u00b5\3\2\2\2\u00b3\u00b1\3\2\2\2\u00b3\u00b4")
|
|
94
|
+
buf.write("\3\2\2\2\u00b4\u00b6\3\2\2\2\u00b5\u00b3\3\2\2\2\u00b6")
|
|
95
|
+
buf.write("\u00b9\5#\22\2\u00b7\u00b9\5\35\17\2\u00b8\u00af\3\2\2")
|
|
96
|
+
buf.write("\2\u00b8\u00b7\3\2\2\2\u00b9\u00bc\3\2\2\2\u00ba\u00b8")
|
|
97
|
+
buf.write("\3\2\2\2\u00ba\u00bb\3\2\2\2\u00bb\u00bd\3\2\2\2\u00bc")
|
|
98
|
+
buf.write("\u00ba\3\2\2\2\u00bd\u00be\5)\25\2\u00be\32\3\2\2\2\u00bf")
|
|
99
|
+
buf.write("\u00c3\5+\26\2\u00c0\u00c2\13\2\2\2\u00c1\u00c0\3\2\2")
|
|
100
|
+
buf.write("\2\u00c2\u00c5\3\2\2\2\u00c3\u00c4\3\2\2\2\u00c3\u00c1")
|
|
101
|
+
buf.write("\3\2\2\2\u00c4\u00c6\3\2\2\2\u00c5\u00c3\3\2\2\2\u00c6")
|
|
102
|
+
buf.write("\u00c7\5-\27\2\u00c7\34\3\2\2\2\u00c8\u00c9\5%\23\2\u00c9")
|
|
103
|
+
buf.write("\u00ca\5\27\f\2\u00ca\u00cb\5%\23\2\u00cb\36\3\2\2\2\u00cc")
|
|
104
|
+
buf.write("\u00ce\t\r\2\2\u00cd\u00cc\3\2\2\2\u00ce\u00cf\3\2\2\2")
|
|
105
|
+
buf.write("\u00cf\u00cd\3\2\2\2\u00cf\u00d0\3\2\2\2\u00d0 \3\2\2")
|
|
106
|
+
buf.write("\2\u00d1\u00d3\t\r\2\2\u00d2\u00d1\3\2\2\2\u00d3\u00d4")
|
|
107
|
+
buf.write("\3\2\2\2\u00d4\u00d2\3\2\2\2\u00d4\u00d5\3\2\2\2\u00d5")
|
|
108
|
+
buf.write("\u00dc\3\2\2\2\u00d6\u00d8\7\60\2\2\u00d7\u00d9\t\r\2")
|
|
109
|
+
buf.write("\2\u00d8\u00d7\3\2\2\2\u00d9\u00da\3\2\2\2\u00da\u00d8")
|
|
110
|
+
buf.write("\3\2\2\2\u00da\u00db\3\2\2\2\u00db\u00dd\3\2\2\2\u00dc")
|
|
111
|
+
buf.write("\u00d6\3\2\2\2\u00dc\u00dd\3\2\2\2\u00dd\"\3\2\2\2\u00de")
|
|
112
|
+
buf.write("\u00e0\5%\23\2\u00df\u00de\3\2\2\2\u00df\u00e0\3\2\2\2")
|
|
113
|
+
buf.write("\u00e0\u00e1\3\2\2\2\u00e1\u00e2\5\37\20\2\u00e2\u00e3")
|
|
114
|
+
buf.write("\7\60\2\2\u00e3\u00e4\5\37\20\2\u00e4\u00e5\7\60\2\2\u00e5")
|
|
115
|
+
buf.write("\u00e6\5\37\20\2\u00e6\u00e7\7\60\2\2\u00e7\u00ea\5\37")
|
|
116
|
+
buf.write("\20\2\u00e8\u00e9\7\61\2\2\u00e9\u00eb\5\37\20\2\u00ea")
|
|
117
|
+
buf.write("\u00e8\3\2\2\2\u00ea\u00eb\3\2\2\2\u00eb\u00ed\3\2\2\2")
|
|
118
|
+
buf.write("\u00ec\u00ee\5%\23\2\u00ed\u00ec\3\2\2\2\u00ed\u00ee\3")
|
|
119
|
+
buf.write("\2\2\2\u00ee$\3\2\2\2\u00ef\u00f0\7)\2\2\u00f0&\3\2\2")
|
|
120
|
+
buf.write("\2\u00f1\u00f2\7]\2\2\u00f2(\3\2\2\2\u00f3\u00f4\7_\2")
|
|
121
|
+
buf.write("\2\u00f4*\3\2\2\2\u00f5\u00f6\7}\2\2\u00f6,\3\2\2\2\u00f7")
|
|
122
|
+
buf.write("\u00f8\7\177\2\2\u00f8.\3\2\2\2\u00f9\u00fb\t\16\2\2\u00fa")
|
|
123
|
+
buf.write("\u00f9\3\2\2\2\u00fb\u00fc\3\2\2\2\u00fc\u00fa\3\2\2\2")
|
|
124
|
+
buf.write("\u00fc\u00fd\3\2\2\2\u00fd\u00fe\3\2\2\2\u00fe\u00ff\b")
|
|
125
|
+
buf.write("\30\2\2\u00ff\60\3\2\2\2%\2EP\\dginqvz~\u0082\u0085\u0089")
|
|
126
|
+
buf.write("\u008e\u0092\u0096\u009a\u009d\u009f\u00a7\u00ad\u00b3")
|
|
127
|
+
buf.write("\u00b8\u00ba\u00c3\u00cf\u00d4\u00da\u00dc\u00df\u00ea")
|
|
128
|
+
buf.write("\u00ed\u00fc\3\b\2\2")
|
|
129
|
+
return buf.getvalue()
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class comparatorLexer(Lexer):
|
|
133
|
+
|
|
134
|
+
atn = ATNDeserializer().deserialize(serializedATN())
|
|
135
|
+
|
|
136
|
+
decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]
|
|
137
|
+
|
|
138
|
+
T__0 = 1
|
|
139
|
+
T__1 = 2
|
|
140
|
+
METHOD = 3
|
|
141
|
+
BOOL = 4
|
|
142
|
+
OP = 5
|
|
143
|
+
COMP = 6
|
|
144
|
+
FMT1 = 7
|
|
145
|
+
ATTRFMT1 = 8
|
|
146
|
+
ATTRFMT2 = 9
|
|
147
|
+
ATTRFMT3 = 10
|
|
148
|
+
STRING = 11
|
|
149
|
+
ARRSTRING = 12
|
|
150
|
+
DICTSTRING = 13
|
|
151
|
+
QUOTESTRING = 14
|
|
152
|
+
NUMBER = 15
|
|
153
|
+
FNUMBER = 16
|
|
154
|
+
IPADDRESS = 17
|
|
155
|
+
QUOTE = 18
|
|
156
|
+
SQOPEN = 19
|
|
157
|
+
SQCLOSE = 20
|
|
158
|
+
FLOPEN = 21
|
|
159
|
+
FLCLOSE = 22
|
|
160
|
+
WS = 23
|
|
161
|
+
|
|
162
|
+
channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]
|
|
163
|
+
|
|
164
|
+
modeNames = [ "DEFAULT_MODE" ]
|
|
165
|
+
|
|
166
|
+
literalNames = [ "<INVALID>",
|
|
167
|
+
"'('", "')'", "'+'", "'''", "'['", "']'", "'{'", "'}'" ]
|
|
168
|
+
|
|
169
|
+
symbolicNames = [ "<INVALID>",
|
|
170
|
+
"METHOD", "BOOL", "OP", "COMP", "FMT1", "ATTRFMT1", "ATTRFMT2",
|
|
171
|
+
"ATTRFMT3", "STRING", "ARRSTRING", "DICTSTRING", "QUOTESTRING",
|
|
172
|
+
"NUMBER", "FNUMBER", "IPADDRESS", "QUOTE", "SQOPEN", "SQCLOSE",
|
|
173
|
+
"FLOPEN", "FLCLOSE", "WS" ]
|
|
174
|
+
|
|
175
|
+
ruleNames = [ "T__0", "T__1", "METHOD", "BOOL", "OP", "COMP", "FMT1",
|
|
176
|
+
"ATTRFMT1", "ATTRFMT2", "ATTRFMT3", "STRING", "ARRSTRING",
|
|
177
|
+
"DICTSTRING", "QUOTESTRING", "NUMBER", "FNUMBER", "IPADDRESS",
|
|
178
|
+
"QUOTE", "SQOPEN", "SQCLOSE", "FLOPEN", "FLCLOSE", "WS" ]
|
|
179
|
+
|
|
180
|
+
grammarFileName = "comparator.g4"
|
|
181
|
+
|
|
182
|
+
def __init__(self, input=None, output:TextIO = sys.stdout):
|
|
183
|
+
super().__init__(input, output)
|
|
184
|
+
self.checkVersion("4.7.1")
|
|
185
|
+
self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
|
|
186
|
+
self._actions = None
|
|
187
|
+
self._predicates = None
|
|
188
|
+
|
|
189
|
+
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
# Generated from comparator.g4 by ANTLR 4.7.1
|
|
2
2
|
from antlr4 import *
|
|
3
|
-
|
|
3
|
+
if __name__ is not None and "." in __name__:
|
|
4
|
+
from .comparatorParser import comparatorParser
|
|
5
|
+
else:
|
|
6
|
+
from comparatorParser import comparatorParser
|
|
4
7
|
|
|
5
8
|
# This class defines a complete listener for a parse tree produced by comparatorParser.
|
|
6
9
|
class comparatorListener(ParseTreeListener):
|
|
@@ -211,8 +211,8 @@ class RuleInterpreter:
|
|
|
211
211
|
if self.is_method(expr):
|
|
212
212
|
method, method_args = self.match_method(expr)
|
|
213
213
|
if method == 'exist':
|
|
214
|
-
new_args = method_args.rsplit('.', 1)[0]
|
|
215
|
-
val = self.eval_expression(
|
|
214
|
+
# new_args = method_args.rsplit('.', 1)[0]
|
|
215
|
+
val = self.eval_expression(method_args)
|
|
216
216
|
else:
|
|
217
217
|
val = self.eval_expression(method_args)
|
|
218
218
|
return self.apply_method(method, val, method_args)
|
|
@@ -222,9 +222,10 @@ class RuleInterpreter:
|
|
|
222
222
|
|
|
223
223
|
def apply_method(self, method, val, method_args):
|
|
224
224
|
if method == 'exist':
|
|
225
|
-
new_args = method_args.rsplit('.', 1)[-1]
|
|
226
|
-
new_args = re.sub(r'\[(.*)\]', '', new_args)
|
|
227
|
-
val = True if val and new_args in val else False
|
|
225
|
+
# new_args = method_args.rsplit('.', 1)[-1]
|
|
226
|
+
# new_args = re.sub(r'\[(.*)\]', '', new_args)
|
|
227
|
+
# val = True if val and new_args in val else False
|
|
228
|
+
val = True if val else False
|
|
228
229
|
elif method == 'count':
|
|
229
230
|
val = len(val) if hasattr(val, '__len__') else 0
|
|
230
231
|
return val
|
|
@@ -266,7 +267,7 @@ class RuleInterpreter:
|
|
|
266
267
|
value = index_fields[-1].replace("'", '').strip()
|
|
267
268
|
arrretval = None
|
|
268
269
|
for index_doc in retval:
|
|
269
|
-
if name in index_doc and index_doc[name] == value:
|
|
270
|
+
if name in index_doc and str(index_doc[name]) == value:
|
|
270
271
|
arrretval = index_doc
|
|
271
272
|
break
|
|
272
273
|
retval = arrretval
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Common file for running snapshot functions.
|
|
3
|
+
Snapshot is the current configuration of a resource representation in cloud or a git repository.
|
|
4
|
+
For a given test or comparison or evaluation, the tests are mentioned in the a test file.
|
|
5
|
+
The test file references a snapshot file and snapshot file references a list of snapshots to be
|
|
6
|
+
populated using a connector.
|
|
7
|
+
This file is the entry point for all snapshots population.
|
|
8
|
+
Different of snapshots supported by the validation framework are:
|
|
9
|
+
1) azure: Microsoft Azure cloud.
|
|
10
|
+
2) aws: Amazon cloud servoices.
|
|
11
|
+
The snapshot structure has callables for each type of supported snapshot.
|
|
12
|
+
Each snapshot has been implemented in its own file viz aws in snapshot_aws.py, azure in snapshot_azure.py etc.
|
|
13
|
+
A new snapshot type xyz will have to be implemented in snapshot_xyz.py and callable function for this type 'xyz'
|
|
14
|
+
of snapshot should be populate_xyz_snapshot
|
|
15
|
+
A snapshot typically is a structure consisting these:
|
|
16
|
+
{
|
|
17
|
+
"source" : "azureStructure1",
|
|
18
|
+
"type" : "azure",
|
|
19
|
+
"testUser" : "ajey.khanapuri@liquware.com",
|
|
20
|
+
"subscriptionId" : "<sub id>",
|
|
21
|
+
"nodes" : [
|
|
22
|
+
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
OR
|
|
26
|
+
{
|
|
27
|
+
"source": "awsStructure",
|
|
28
|
+
"type": "aws",
|
|
29
|
+
"testUser": "ajeybk",
|
|
30
|
+
"account-id": "<AWS account-id>",
|
|
31
|
+
"nodes": [
|
|
32
|
+
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
"""
|
|
36
|
+
import json
|
|
37
|
+
from processor.logging.log_handler import getlogger
|
|
38
|
+
from processor.helper.json.json_utils import get_field_value, json_from_file,\
|
|
39
|
+
get_container_snapshot_json_files, SNAPSHOT, JSONTEST,\
|
|
40
|
+
collectiontypes, get_json_files, TEST
|
|
41
|
+
from processor.helper.config.config_utils import config_value, framework_dir
|
|
42
|
+
from processor.database.database import DATABASE, DBNAME, get_documents, sort_field
|
|
43
|
+
from processor.connector.snapshot_azure import populate_azure_snapshot
|
|
44
|
+
from processor.connector.snapshot_custom import populate_custom_snapshot
|
|
45
|
+
from processor.connector.snapshot_aws import populate_aws_snapshot
|
|
46
|
+
from processor.connector.snapshot_google import populate_google_snapshot
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
logger = getlogger()
|
|
50
|
+
# Different types of snapshots supported by the validation framework.
|
|
51
|
+
snapshot_fns = {
|
|
52
|
+
'azure': populate_azure_snapshot,
|
|
53
|
+
'git': populate_custom_snapshot,
|
|
54
|
+
'aws': populate_aws_snapshot,
|
|
55
|
+
'google': populate_google_snapshot
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def populate_snapshot(snapshot):
|
|
60
|
+
"""
|
|
61
|
+
Every snapshot should have collection of nodes which are to be populated.
|
|
62
|
+
Each node in the nodes list of the snapshot shall have a unique id in this
|
|
63
|
+
container so as not to clash with other node of a snapshots.
|
|
64
|
+
"""
|
|
65
|
+
snapshot_data = {}
|
|
66
|
+
snapshot_type = get_field_value(snapshot, 'type')
|
|
67
|
+
if snapshot_type and snapshot_type in snapshot_fns:
|
|
68
|
+
if 'nodes' not in snapshot or not snapshot['nodes']:
|
|
69
|
+
logger.error("No nodes in snapshot to be backed up!...")
|
|
70
|
+
return snapshot_data
|
|
71
|
+
snapshot_data = snapshot_fns[snapshot_type](snapshot)
|
|
72
|
+
logger.info('Snapshot: %s', snapshot_data)
|
|
73
|
+
return snapshot_data
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def populate_snapshots_from_json(snapshot_json_data):
|
|
77
|
+
"""
|
|
78
|
+
Get the snapshot and validate list of snapshots in the json.
|
|
79
|
+
The json could be from the database or from a filesystem.
|
|
80
|
+
"""
|
|
81
|
+
snapshot_data = {}
|
|
82
|
+
snapshots = get_field_value(snapshot_json_data, 'snapshots')
|
|
83
|
+
if not snapshots:
|
|
84
|
+
logger.error("Json Snapshot does not contain snapshots, next!...")
|
|
85
|
+
return snapshot_data
|
|
86
|
+
for snapshot in snapshots:
|
|
87
|
+
current_data = populate_snapshot(snapshot)
|
|
88
|
+
snapshot_data.update(current_data)
|
|
89
|
+
return snapshot_data
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def populate_snapshots_from_file(snapshot_file):
|
|
93
|
+
"""
|
|
94
|
+
Each snapshot file from the filesystem is loaded as a json datastructue
|
|
95
|
+
and populate all the nodes in this json datastructure.
|
|
96
|
+
"""
|
|
97
|
+
file_name = '%s.json' % snapshot_file if snapshot_file and not \
|
|
98
|
+
snapshot_file.endswith('.json') else snapshot_file
|
|
99
|
+
snapshot_json_data = json_from_file(file_name)
|
|
100
|
+
if not snapshot_json_data:
|
|
101
|
+
logger.error("Snapshot file %s looks to be empty, next!...", snapshot_file)
|
|
102
|
+
return {}
|
|
103
|
+
logger.debug(json.dumps(snapshot_json_data, indent=2))
|
|
104
|
+
return populate_snapshots_from_json(snapshot_json_data)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def populate_container_snapshots(container, dbsystem=True):
|
|
108
|
+
"""
|
|
109
|
+
All snapshots are contained in a workspace which is called as a container.
|
|
110
|
+
So tests are run for a container. The snapshots can be present in a filesystem or
|
|
111
|
+
a database as storage.
|
|
112
|
+
This function is starting point for snapshot population.
|
|
113
|
+
The default location for snapshots of the container is the database.
|
|
114
|
+
"""
|
|
115
|
+
logger.critical("SNAPSHOTS: Populate snapshots for '%s' container from %s",
|
|
116
|
+
container, "the database." if dbsystem else "file system.")
|
|
117
|
+
if dbsystem:
|
|
118
|
+
return populate_container_snapshots_database(container)
|
|
119
|
+
else:
|
|
120
|
+
return populate_container_snapshots_filesystem(container)
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def populate_container_snapshots_filesystem(container):
|
|
124
|
+
"""
|
|
125
|
+
Get the snapshot files from the container with storage system as filesystem.
|
|
126
|
+
The path for looking into the container is configured in the config.ini, for the
|
|
127
|
+
default location configuration is $SOLUTIONDIR/relam/validation/<container>
|
|
128
|
+
"""
|
|
129
|
+
snapshots_status = {}
|
|
130
|
+
snapshot_dir, snapshot_files = get_container_snapshot_json_files(container)
|
|
131
|
+
if not snapshot_files:
|
|
132
|
+
logger.error("No Snapshot files in %s, exiting!...", snapshot_dir)
|
|
133
|
+
return snapshots_status
|
|
134
|
+
logger.info('\n'.join(snapshot_files))
|
|
135
|
+
snapshots = container_snapshots_filesystem(container)
|
|
136
|
+
populated = []
|
|
137
|
+
for snapshot_file in snapshot_files:
|
|
138
|
+
parts = snapshot_file.rsplit('/', 1)
|
|
139
|
+
if parts[-1] in snapshots and parts[-1] not in populated:
|
|
140
|
+
# Take the snapshot and populate whether it was susccessful or not.
|
|
141
|
+
# Then pass it back to the validation tests, so that tests for those
|
|
142
|
+
# snapshots that have been susccessfully fetched shall be executed.
|
|
143
|
+
snapshot_file_data = populate_snapshots_from_file(snapshot_file)
|
|
144
|
+
populated.append(parts[-1])
|
|
145
|
+
name = parts[-1].replace('.json', '') if parts[-1].endswith('.json') else parts[-1]
|
|
146
|
+
snapshots_status[name] = snapshot_file_data
|
|
147
|
+
return snapshots_status
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def populate_container_snapshots_database(container):
|
|
151
|
+
"""
|
|
152
|
+
Get the snapshot files from the container with storage system as database.
|
|
153
|
+
The table or collection and database is configured in the config.ini, for the default
|
|
154
|
+
location configuration is "validator" database with "snapshots" as its collections.
|
|
155
|
+
"""
|
|
156
|
+
snapshots_status = {}
|
|
157
|
+
dbname = config_value(DATABASE, DBNAME)
|
|
158
|
+
collection = config_value(DATABASE, collectiontypes[SNAPSHOT])
|
|
159
|
+
qry = {'container': container}
|
|
160
|
+
sort = [sort_field('timestamp', False)]
|
|
161
|
+
docs = get_documents(collection, dbname=dbname, sort=sort, query=qry)
|
|
162
|
+
if docs and len(docs):
|
|
163
|
+
logger.info('Number of Snapshot Documents: %s', len(docs))
|
|
164
|
+
snapshots = container_snapshots_database(container)
|
|
165
|
+
populated = []
|
|
166
|
+
for doc in docs:
|
|
167
|
+
if doc['json']:
|
|
168
|
+
snapshot = doc['name']
|
|
169
|
+
if snapshot in snapshots and snapshot not in populated:
|
|
170
|
+
# Take the snapshot and populate whether it was susccessful or not.
|
|
171
|
+
# Then pass it back to the validation tests, so that tests for those
|
|
172
|
+
# snapshots that have been susccessfully fetched shall be executed.
|
|
173
|
+
snapshot_file_data = populate_snapshots_from_json(doc['json'])
|
|
174
|
+
populated.append(snapshot)
|
|
175
|
+
snapshots_status[snapshot] = snapshot_file_data
|
|
176
|
+
return snapshots_status
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def container_snapshots_filesystem(container):
|
|
180
|
+
"""
|
|
181
|
+
Get snapshot list used in all test files of a container from the filesystem.
|
|
182
|
+
This gets list of all the snapshots used in the container.
|
|
183
|
+
The list will be used to not populate the snapshots multiple times, if the same
|
|
184
|
+
snapshots are used in different test files of a container.
|
|
185
|
+
The configuration of the default path is configured in config.ini.
|
|
186
|
+
"""
|
|
187
|
+
snapshots = []
|
|
188
|
+
logger.info("Starting to get list of snapshots")
|
|
189
|
+
reporting_path = config_value('REPORTING', 'reportOutputFolder')
|
|
190
|
+
json_dir = '%s/%s/%s' % (framework_dir(), reporting_path, container)
|
|
191
|
+
logger.info(json_dir)
|
|
192
|
+
test_files = get_json_files(json_dir, JSONTEST)
|
|
193
|
+
logger.info('\n'.join(test_files))
|
|
194
|
+
for test_file in test_files:
|
|
195
|
+
test_json_data = json_from_file(test_file)
|
|
196
|
+
if test_json_data:
|
|
197
|
+
snapshot = test_json_data['snapshot'] if 'snapshot' in test_json_data else ''
|
|
198
|
+
if snapshot:
|
|
199
|
+
file_name = snapshot if snapshot.endswith('.json') else '%s.json' % snapshot
|
|
200
|
+
snapshots.append(file_name)
|
|
201
|
+
return list(set(snapshots))
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def container_snapshots_database(container):
|
|
205
|
+
"""
|
|
206
|
+
Get snapshot list used in test files of a container from the database.
|
|
207
|
+
The snapshots list are read from database. The default configuration of database and
|
|
208
|
+
snapshot collections is configured in config.ini file.
|
|
209
|
+
"""
|
|
210
|
+
snapshots = []
|
|
211
|
+
logger.info("Starting to get list of snapshots from database")
|
|
212
|
+
dbname = config_value(DATABASE, DBNAME)
|
|
213
|
+
collection = config_value(DATABASE, collectiontypes[TEST])
|
|
214
|
+
qry = {'container': container}
|
|
215
|
+
sort = [sort_field('timestamp', False)]
|
|
216
|
+
docs = get_documents(collection, dbname=dbname, sort=sort, query=qry)
|
|
217
|
+
logger.info('Number of test Documents: %s', len(docs))
|
|
218
|
+
if docs and len(docs):
|
|
219
|
+
for doc in docs:
|
|
220
|
+
if doc['json']:
|
|
221
|
+
snapshot = doc['json']['snapshot'] if 'snapshot' in doc['json'] else ''
|
|
222
|
+
if snapshot:
|
|
223
|
+
if snapshot.endswith('.json'):
|
|
224
|
+
parts = snapshot.split('.')
|
|
225
|
+
snapshots.append(parts[0])
|
|
226
|
+
else:
|
|
227
|
+
snapshots.append(snapshot)
|
|
228
|
+
return list(set(snapshots))
|