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.
Files changed (102) hide show
  1. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/populate_json +12 -0
  2. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/prancer +12 -0
  3. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/terraform_to_json +12 -0
  4. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/bin/validator +12 -0
  5. {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
  6. {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
  7. {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
  8. {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
  9. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/__pycache__/__init__.cpython-36.pyc +0 -0
  10. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/__init__.cpython-36.pyc +0 -0
  11. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/comparison_functions.cpython-36.pyc +0 -0
  12. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/__pycache__/interpreter.cpython-36.pyc +0 -0
  13. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/__init__.cpython-36.pyc +0 -0
  14. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorLexer.cpython-36.pyc +0 -0
  15. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorListener.cpython-36.pyc +0 -0
  16. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/__pycache__/comparatorParser.cpython-36.pyc +0 -0
  17. 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
  18. 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
  19. 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
  20. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/comparison/comparisonantlr/comparatorLexer.py +189 -0
  21. {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
  22. {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
  23. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/__init__.cpython-36.pyc +0 -0
  24. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot.cpython-36.pyc +0 -0
  25. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_aws.cpython-36.pyc +0 -0
  26. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_azure.cpython-36.pyc +0 -0
  27. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_custom.cpython-36.pyc +0 -0
  28. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_google.cpython-36.pyc +0 -0
  29. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/snapshot_utils.cpython-36.pyc +0 -0
  30. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/validation.cpython-36.pyc +0 -0
  31. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/__pycache__/vault.cpython-36.pyc +0 -0
  32. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot.py +228 -0
  33. {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
  34. {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
  35. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_custom.py +520 -0
  36. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_google.py +239 -0
  37. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/connector/snapshot_utils.py +23 -0
  38. {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
  39. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/database/__pycache__/__init__.cpython-36.pyc +0 -0
  40. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/database/__pycache__/database.cpython-36.pyc +0 -0
  41. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/__pycache__/__init__.cpython-36.pyc +0 -0
  42. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/config/__pycache__/__init__.cpython-36.pyc +0 -0
  43. 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
  44. 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
  45. {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
  46. {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
  47. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/file/__pycache__/__init__.cpython-36.pyc +0 -0
  48. 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
  49. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/__init__.cpython-36.pyc +0 -0
  50. 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
  51. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/httpapi/__pycache__/restapi.cpython-36.pyc +0 -0
  52. 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
  53. {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
  54. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/json/__pycache__/__init__.cpython-36.pyc +0 -0
  55. 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
  56. {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
  57. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/__pycache__/__init__.cpython-36.pyc +0 -0
  58. 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
  59. 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
  60. 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
  61. {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
  62. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/helper/utils/cli_validator.py +221 -0
  63. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/logging/__pycache__/__init__.cpython-36.pyc +0 -0
  64. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/logging/__pycache__/log_handler.cpython-36.pyc +0 -0
  65. {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
  66. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/reporting/__pycache__/__init__.cpython-36.pyc +0 -0
  67. home/ajey/projects/upwork/liquware/cloud-validation-framework/githubenv/lib/python3.6/site-packages/processor/reporting/__pycache__/json_output.cpython-36.pyc +0 -0
  68. {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
  69. prancer-basic-0.1.1/README.md +0 -25
  70. prancer-basic-0.1.1/setup.cfg +0 -4
  71. prancer-basic-0.1.1/setup.py +0 -49
  72. prancer-basic-0.1.1/src/prancer_basic.egg-info/PKG-INFO +0 -18
  73. prancer-basic-0.1.1/src/processor/comparison/comparisonantlr/comparatorLexer.py +0 -182
  74. prancer-basic-0.1.1/src/processor/connector/snapshot.py +0 -132
  75. prancer-basic-0.1.1/src/processor/connector/snapshot_custom.py +0 -155
  76. prancer-basic-0.1.1/src/processor/helper/utils/cli_validator.py +0 -56
  77. {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
  78. {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
  79. {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
  80. {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
  81. {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
  82. {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
  83. {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
  84. {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
  85. {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
  86. {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
  87. {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
  88. {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
  89. {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
  90. {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
  91. {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
  92. {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
  93. {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
  94. {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
  95. {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
  96. {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
  97. {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
  98. {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
  99. {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
  100. {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
  101. {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
  102. {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
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: prancer-basic
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Prancer Basic, http://prancer.io/
5
5
  Home-page: https://github.com/prancer-io/cloud-validation-framework
6
6
  Author: Farshid M/Ajey Khanapuri
@@ -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
@@ -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
- from processor.comparison.comparisonantlr.comparatorParser import comparatorParser
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(new_args)
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
@@ -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))