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

Resolve "Revise user ansible cleanup stage flow"

parent 897a6d60
No related branches found
No related tags found
No related merge requests found
...@@ -63,10 +63,13 @@ ANSWERS_FILE=$(realpath 'answers.json') ...@@ -63,10 +63,13 @@ ANSWERS_FILE=$(realpath 'answers.json')
echo {} > "$ANSWERS_FILE" echo {} > "$ANSWERS_FILE"
VARIABLES_FILE='variables.yml' VARIABLES_FILE='variables.yml'
PREPARE_ANSWERS_PY='../manage_answers.py' PREPARE_ANSWERS_PY=$(realpath "manage_answers.py")
if [ -f $VARIABLES_FILE ]; then if [ -f $VARIABLES_FILE ]; then
python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" "$ANSWERS_STORAGE_API" python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" "$ANSWERS_STORAGE_API"
fi fi
if $USER_CLEANUP; then
python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" "$ANSWERS_STORAGE_API" --cleanup
fi
git submodule update --init --recursive || exit 1 git submodule update --init --recursive || exit 1
cd provisioning || exit 1 cd provisioning || exit 1
...@@ -89,6 +92,4 @@ if [ -f $PRE_PLAYBOOK_FILE ]; then ...@@ -89,6 +92,4 @@ if [ -f $PRE_PLAYBOOK_FILE ]; then
fi fi
PLAYBOOK_FILE="playbook.yml" PLAYBOOK_FILE="playbook.yml"
if ! $USER_CLEANUP; then ansible-playbook $PLAYBOOK_FILE -i "${INVENTORY_FILE}" -e "@$ANSWERS_FILE" -vv || exit "$?"
ansible-playbook $PLAYBOOK_FILE -i "${INVENTORY_FILE}" -e "@$ANSWERS_FILE" -vv || exit "$?"
fi
\ No newline at end of file
...@@ -50,10 +50,6 @@ def get_post_data_json(sandbox_id, generated_answers): ...@@ -50,10 +50,6 @@ 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(answers_storage_api, sandbox_id):
return requests.get(answers_storage_api + '/sandboxes/' + str(sandbox_id) + '/answers')
def delete_answers(answers_storage_api, sandbox_id): def delete_answers(answers_storage_api, sandbox_id):
requests.delete(answers_storage_api + '/sandboxes/' + str(sandbox_id)).raise_for_status() requests.delete(answers_storage_api + '/sandboxes/' + str(sandbox_id)).raise_for_status()
...@@ -65,37 +61,37 @@ def post_answers(answers_storage_api, sandbox_id, generated_answers): ...@@ -65,37 +61,37 @@ def post_answers(answers_storage_api, sandbox_id, generated_answers):
post_response.raise_for_status() post_response.raise_for_status()
def manage_answers(inventory_variables, generated_answers, answers_storage_api):
sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id']
if get_answers(answers_storage_api, sandbox_id).status_code == 404:
post_answers(answers_storage_api, sandbox_id, generated_answers)
return 'post'
else:
delete_answers(answers_storage_api, sandbox_id)
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_file_path') parser.add_argument('answers_file_path')
parser.add_argument('answers_storage_api') parser.add_argument('answers_storage_api')
parser.add_argument('--cleanup', action='store_true')
args = parser.parse_args() args = parser.parse_args()
inventory_variables = load_inventory_variables(args.inventory_path) inventory_variables = load_inventory_variables(args.inventory_path)
sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id']
answers_file_path = args.answers_file_path answers_file_path = args.answers_file_path
answers_storage_api = args.answers_storage_api answers_storage_api = args.answers_storage_api
generated_answers = generate_answers(inventory_variables) _success_msg = "\n[OK]: Successful {} upon answers-storage container.\n"
create_answers_file(generated_answers, answers_file_path) _request_error_msg = "\n[WARNING]: Failed {} upon answers-storage container." \
"Status code {}.\n"
try: try:
operation = manage_answers(inventory_variables, generated_answers, answers_storage_api) if args.cleanup:
print(f'\n[OK]: Operation [{operation}] upon answers-storage container was successful.\n') delete_answers(answers_storage_api, sandbox_id)
print(_success_msg.format('DELETE'))
return
generated_answers = generate_answers(inventory_variables)
create_answers_file(generated_answers, answers_file_path)
post_answers(answers_storage_api, sandbox_id, generated_answers)
print(_success_msg.format('POST'))
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:
print(f'\n[Warning]: Unable to send generated answers to kypo-answers-storage service,' print(_request_error_msg.format('DELETE' if args.cleanup else 'POST', exc.response))
f' status code {exc.response}.\n')
if __name__ == '__main__': if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment