diff --git a/Dockerfile b/Dockerfile index b7a6704aa0f09d3ad9518d6cc66dd3c45e0948bc..37e82429ad6de3a31502695a70f4ba68ed10897d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ RUN rm -rf /var/cache/apt/ RUN mkdir -p /root/.ssh COPY ./entrypoint.sh /app/ -COPY prepare_answers.py /app/ +COPY manage_answers.py /app/ WORKDIR /app diff --git a/entrypoint.sh b/entrypoint.sh index 1021b4ecd7ee79a39f87cb10cfe519873a870fa3..09f871380ba37a27878f977dad675ec9c97327b9 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -59,7 +59,7 @@ ANSWERS_FILE=$(realpath 'answers.json') echo {} > "$ANSWERS_FILE" VARIABLES_FILE='variables.yml' -PREPARE_ANSWERS_PY='../prepare_answers.py' +PREPARE_ANSWERS_PY='../manage_answers.py' if [ -f $VARIABLES_FILE ]; then python3.8 "$PREPARE_ANSWERS_PY" "$INVENTORY_FILE" "$ANSWERS_FILE" fi diff --git a/prepare_answers.py b/manage_answers.py similarity index 73% rename from prepare_answers.py rename to manage_answers.py index 37ff72fecef6dc9594a962d475a9e47180a898d6..19523b99ef983680b7969e014d3e24e9bf307e83 100644 --- a/prepare_answers.py +++ b/manage_answers.py @@ -36,8 +36,7 @@ def generate_answers(inventory_variables): return generate(variable_list, seed) -def get_post_data_json(inventory_variables, generated_answers): - sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id'] +def get_post_data_json(sandbox_id, generated_answers): post_data = { 'sandbox_ref_id': sandbox_id, 'sandbox_answers': [] @@ -52,13 +51,30 @@ def get_post_data_json(inventory_variables, generated_answers): return json.dumps(post_data, indent=4) -def send_post_request(inventory_variables, generated_answers): - post_data_json = get_post_data_json(inventory_variables, generated_answers) - post_response = requests.post(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes', data=post_data_json, - headers=HEADERS) +def get_answers(sandbox_id): + return requests.get(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes/' + str(sandbox_id) + '/answers') + + +def delete_answers(sandbox_id): + return requests.delete(KYPO_ANSWERS_STORAGE_API_URL + '/sandboxes/' + str(sandbox_id)) + + +def post_answers(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', + data=post_data_json, headers=HEADERS) post_response.raise_for_status() +def manage_answers(inventory_variables, generated_answers): + sandbox_id = inventory_variables['kypo_global_sandbox_allocation_unit_id'] + if get_answers(sandbox_id).status_code == 404: + post_answers(sandbox_id, generated_answers) + else: + delete_response = delete_answers(sandbox_id) + delete_response.raise_for_status() + + def main(): parser = argparse.ArgumentParser() parser.add_argument('inventory_path') @@ -70,7 +86,7 @@ def main(): generated_answers = generate_answers(inventory_variables) create_answers_file(generated_answers, args.answers_path) try: - send_post_request(inventory_variables, generated_answers) + manage_answers(inventory_variables, generated_answers) print('\n[OK]: Answers are generated successfully and uploaded to answers-storage' ' container.\n') except ConnectionError: