From 0a2d1763e9ae806bcc1d06e9fcba800ab85ad127 Mon Sep 17 00:00:00 2001 From: Matej Stajduhar Date: Tue, 25 Feb 2025 07:29:31 +0100 Subject: [PATCH 1/3] Updating-Backup-validation-role --- .../aws/aws_backup_validation/tasks/main.yml | 5 +++ .../templates/validation_report.j2 | 37 ++++++++++++------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/roles/aws/aws_backup_validation/tasks/main.yml b/roles/aws/aws_backup_validation/tasks/main.yml index cea43de51..c43fb8d55 100644 --- a/roles/aws/aws_backup_validation/tasks/main.yml +++ b/roles/aws/aws_backup_validation/tasks/main.yml @@ -100,6 +100,11 @@ mode: put loop: "{{ aws_backup_validation.resources }}" +- name: Get info about newly created restore testing plan. + ansible.builtin.command: > + aws backup list-restore-testing-plans --region {{ _aws_region }} + register: _testing_plans + - name: Create Lambda functions amazon.aws.lambda: name: "{{ aws_backup_validation.name }}_{{ item }}" diff --git a/roles/aws/aws_backup_validation/templates/validation_report.j2 b/roles/aws/aws_backup_validation/templates/validation_report.j2 index 9626042d6..d51a7c289 100644 --- a/roles/aws/aws_backup_validation/templates/validation_report.j2 +++ b/roles/aws/aws_backup_validation/templates/validation_report.j2 @@ -42,15 +42,20 @@ def lambda_handler(event, context): failed_validation = False global mail_body last_restore_valdation_date = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime('%Y-%m-%d') - - print("Getting list of successful restoration.") - completed_jobs = backup_cli.list_restore_jobs( - ByCreatedAfter=last_restore_valdation_date, - ByStatus='COMPLETED' - ) + completed_jobs=[] + failed_jobs=[] + + for plan in _testing_plans['RestoreTestingPlans'] + print("Getting list of successful restoration.") + completed_job = backup_cli.list_restore_jobs( + ByCreatedAfter=last_restore_valdation_date, + ByStatus='COMPLETED', + ByRestoreTestingPlanArn=plan['{{ RestoreTestingPlanArn }}'] + ) + completed_jobs+=completed_job['RestoreJobs'] print("Getting instance details.") - for inst in completed_jobs['RestoreJobs']: + for inst in completed_jobs: success_restore = True print("Getting instance arn.") ami_arn = inst['RecoveryPointArn'].split(':')[2] @@ -82,20 +87,24 @@ def lambda_handler(event, context): print(mail_body) - failed_jobs = backup_cli.list_restore_jobs( - ByCreatedAfter=last_restore_valdation_date, - ByStatus='FAILED' - ) + for plan in _testing_plans['RestoreTestingPlans'] + print("Getting list of failed restoration.") + failed_job = backup_cli.list_restore_jobs( + ByCreatedAfter=last_restore_valdation_date, + ByStatus='FAILED', + ByRestoreTestingPlanArn=plan['{{ RestoreTestingPlanArn }}'] + ) + failed_jobs += failed_job['RestoreJobs'] - if len(failed_jobs['RestoreJobs']) > 0: + if len(failed_jobs) > 0: mail_title = "Failed!" else: mail_title = "Success!" print("Successful restore jobs:") - print(completed_jobs['RestoreJobs']) + print(completed_jobs) print("Failed restore jobs:") - print(failed_jobs['RestoreJobs']) + print(failed_jobs) print("Sending email!") response = ses_cli.send_email( From 83f809de4a2446c2c99834051c5af673e3ca7f44 Mon Sep 17 00:00:00 2001 From: Matej Stajduhar Date: Tue, 25 Feb 2025 11:26:26 +0100 Subject: [PATCH 2/3] Updating-lambda-function --- .../templates/validation_report.j2 | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/roles/aws/aws_backup_validation/templates/validation_report.j2 b/roles/aws/aws_backup_validation/templates/validation_report.j2 index d51a7c289..9c29baea4 100644 --- a/roles/aws/aws_backup_validation/templates/validation_report.j2 +++ b/roles/aws/aws_backup_validation/templates/validation_report.j2 @@ -45,14 +45,15 @@ def lambda_handler(event, context): completed_jobs=[] failed_jobs=[] - for plan in _testing_plans['RestoreTestingPlans'] - print("Getting list of successful restoration.") - completed_job = backup_cli.list_restore_jobs( - ByCreatedAfter=last_restore_valdation_date, - ByStatus='COMPLETED', - ByRestoreTestingPlanArn=plan['{{ RestoreTestingPlanArn }}'] - ) - completed_jobs+=completed_job['RestoreJobs'] + print("Getting list of successful restoration.") + {% for plan in _testing_plans.stdout | from_json | json_query('RestoreTestingPlans') %} +completed_job = backup_cli.list_restore_jobs( + ByCreatedAfter=last_restore_valdation_date, + ByStatus='COMPLETED', + ByRestoreTestingPlanArn='{{ plan['RestoreTestingPlanArn'] }}' + ) + completed_jobs+=completed_job['RestoreJobs'] + {% endfor %} print("Getting instance details.") for inst in completed_jobs: @@ -86,15 +87,15 @@ def lambda_handler(event, context): set_mail_body(success_restore, inst, instance_name, ami_id) print(mail_body) - - for plan in _testing_plans['RestoreTestingPlans'] - print("Getting list of failed restoration.") - failed_job = backup_cli.list_restore_jobs( - ByCreatedAfter=last_restore_valdation_date, - ByStatus='FAILED', - ByRestoreTestingPlanArn=plan['{{ RestoreTestingPlanArn }}'] - ) - failed_jobs += failed_job['RestoreJobs'] + print("Getting list of failed restoration.") + {% for plan in _testing_plans.stdout | from_json | json_query('RestoreTestingPlans') %} +failed_job = backup_cli.list_restore_jobs( + ByCreatedAfter=last_restore_valdation_date, + ByStatus='FAILED', + ByRestoreTestingPlanArn='{{ plan['RestoreTestingPlanArn'] }}' + ) + failed_jobs += failed_job['RestoreJobs'] + {% endfor %} if len(failed_jobs) > 0: mail_title = "Failed!" From 7e7019ac8ab47322242cdedb0104107539c2b0e2 Mon Sep 17 00:00:00 2001 From: Matej Stajduhar Date: Tue, 25 Feb 2025 11:26:48 +0100 Subject: [PATCH 3/3] Updating-tasks --- roles/aws/aws_backup_validation/tasks/main.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/roles/aws/aws_backup_validation/tasks/main.yml b/roles/aws/aws_backup_validation/tasks/main.yml index c43fb8d55..5ebb5d90b 100644 --- a/roles/aws/aws_backup_validation/tasks/main.yml +++ b/roles/aws/aws_backup_validation/tasks/main.yml @@ -66,6 +66,15 @@ dest: "{{ _ce_provision_build_dir }}/{{ item }}_validation.py" loop: "{{ aws_backup_validation.resources }}" + - name: Get info about newly created restore testing plan. + ansible.builtin.command: > + aws backup list-restore-testing-plans --region {{ _aws_region }} + register: _testing_plans + + - name: Print return information from the previous task + ansible.builtin.debug: + var: _testing_plans + - name: Write validation report functions ansible.builtin.template: src: "validation_report.j2" @@ -100,11 +109,6 @@ mode: put loop: "{{ aws_backup_validation.resources }}" -- name: Get info about newly created restore testing plan. - ansible.builtin.command: > - aws backup list-restore-testing-plans --region {{ _aws_region }} - register: _testing_plans - - name: Create Lambda functions amazon.aws.lambda: name: "{{ aws_backup_validation.name }}_{{ item }}"