Skip to content
Snippets Groups Projects
Commit d3b8ef0d authored by Juraj Paluba's avatar Juraj Paluba
Browse files

Merge branch '16-add-attribute-to-entrypoint-sh-for-kypo-answers-storage-api-url' into 'master'

Resolve "Add attribute to entrypoint.sh for kypo-answers-storage API url"

Closes #16

See merge request muni-kypo-crp/backend-python/kypo-ansible-runner!18
parents 53e01937 045ffc60
No related branches found
No related tags found
No related merge requests found
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
usage() { echo "kypo-ansible-runner.sh -r [git repo url] -i [inventory file path]"; } usage() { echo "kypo-ansible-runner.sh -r [git repo url] -i [inventory file path]"; }
while getopts ":u:r:i:h" opt; do while getopts ":u:r:i:a:h" opt; do
case ${opt} in case ${opt} in
u) REPO_URL=$OPTARG ;; u) REPO_URL=$OPTARG ;;
r) REVISION=$OPTARG ;; r) REVISION=$OPTARG ;;
i) INVENTORY=$OPTARG ;; # realpath -e on some systems i) INVENTORY=$OPTARG ;; # realpath -e on some systems
a) ANSWERS_STORAGE_API=$OPTARG ;;
h) h)
usage usage
exit exit
...@@ -61,7 +62,7 @@ echo {} > "$ANSWERS_FILE" ...@@ -61,7 +62,7 @@ echo {} > "$ANSWERS_FILE"
VARIABLES_FILE='variables.yml' VARIABLES_FILE='variables.yml'
PREPARE_ANSWERS_PY='../manage_answers.py' PREPARE_ANSWERS_PY='../manage_answers.py'
if [ -f $VARIABLES_FILE ]; then if [ -f $VARIABLES_FILE ]; then
python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" "$ANSWERS_STORAGE_API"
fi fi
git submodule update --init --recursive || exit 1 git submodule update --init --recursive || exit 1
......
...@@ -8,7 +8,6 @@ from generator.var_parser import parser_var_file ...@@ -8,7 +8,6 @@ from generator.var_parser import parser_var_file
from requests.exceptions import ConnectionError, HTTPError from requests.exceptions import ConnectionError, HTTPError
VARIABLE_FILE_PATH = 'variables.yml' VARIABLE_FILE_PATH = 'variables.yml'
KYPO_ANSWERS_STORAGE_API_URL = 'http://answers-storage:8087/kypo-rest-answers-storage/api/v1'
HEADERS = { HEADERS = {
'accept': 'application/json', 'accept': 'application/json',
'Content-Type': 'application/json' 'Content-Type': 'application/json'
...@@ -20,8 +19,8 @@ def load_inventory_variables(inventory_path): ...@@ -20,8 +19,8 @@ def load_inventory_variables(inventory_path):
return yaml.full_load(file)['all']['vars'] return yaml.full_load(file)['all']['vars']
def create_answers_file(generated_answers, answers_path): def create_answers_file(generated_answers, answers_file_path):
with open(answers_path, 'w') as file: with open(answers_file_path, 'w') as file:
json.dump(generated_answers, file) json.dump(generated_answers, file)
...@@ -51,44 +50,47 @@ def get_post_data_json(sandbox_id, generated_answers): ...@@ -51,44 +50,47 @@ def get_post_data_json(sandbox_id, generated_answers):
return json.dumps(post_data, indent=4) return json.dumps(post_data, indent=4)
def get_answers(sandbox_id): def get_answers(answers_storage_api, sandbox_id):
return requests.get(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes/' + str(sandbox_id) + '/answers') return requests.get(answers_storage_api + '/sandboxes/' + str(sandbox_id) + '/answers')
def delete_answers(sandbox_id): def delete_answers(answers_storage_api, sandbox_id):
return requests.delete(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes/' + str(sandbox_id)) requests.delete(answers_storage_api + '/sandboxes/' + str(sandbox_id)).raise_for_status()
def post_answers(sandbox_id, generated_answers): def post_answers(answers_storage_api, sandbox_id, generated_answers):
post_data_json = get_post_data_json(sandbox_id, generated_answers) post_data_json = get_post_data_json(sandbox_id, generated_answers)
post_response = requests.post(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes', post_response = requests.post(answers_storage_api + '/sandboxes',
data=post_data_json, headers=HEADERS) data=post_data_json, headers=HEADERS)
post_response.raise_for_status() post_response.raise_for_status()
def manage_answers(inventory_variables, generated_answers): def manage_answers(inventory_variables, generated_answers, answers_storage_api):
sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id'] sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id']
if get_answers(sandbox_id).status_code == 404: if get_answers(answers_storage_api, sandbox_id).status_code == 404:
post_answers(sandbox_id, generated_answers) post_answers(answers_storage_api, sandbox_id, generated_answers)
return 'post'
else: else:
delete_response = delete_answers(sandbox_id) delete_answers(answers_storage_api, sandbox_id)
delete_response.raise_for_status() return 'delete'
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('inventory_path') parser.add_argument('inventory_path')
parser.add_argument('answers_path') parser.add_argument('answers_file_path')
parser.add_argument('answers_storage_api')
args = parser.parse_args() args = parser.parse_args()
inventory_variables = load_inventory_variables(args.inventory_path) inventory_variables = load_inventory_variables(args.inventory_path)
answers_file_path = args.answers_file_path
answers_storage_api = args.answers_storage_api
generated_answers = generate_answers(inventory_variables) generated_answers = generate_answers(inventory_variables)
create_answers_file(generated_answers, args.answers_path) create_answers_file(generated_answers, answers_file_path)
try: try:
manage_answers(inventory_variables, generated_answers) operation = manage_answers(inventory_variables, generated_answers, answers_storage_api)
print('\n[OK]: Answers are generated successfully and uploaded to answers-storage' print(f'\n[OK]: Operation [{operation}] upon answers-storage container was successful.\n')
' container.\n')
except ConnectionError: except ConnectionError:
print('\n[Warning]: Service answers-storage is unavailable.\n') print('\n[Warning]: Service answers-storage is unavailable.\n')
except HTTPError as exc: except HTTPError as exc:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment