diff --git a/playbooks/manual/mirrormanager-move-to-archive.yml b/playbooks/manual/mirrormanager/move-to-archive.yml similarity index 64% rename from playbooks/manual/mirrormanager-move-to-archive.yml rename to playbooks/manual/mirrormanager/move-to-archive.yml index 01e6af7c6c..ea7bbbb986 100644 --- a/playbooks/manual/mirrormanager-move-to-archive.yml +++ b/playbooks/manual/mirrormanager/move-to-archive.yml @@ -16,8 +16,6 @@ - /srv/web/infra/ansible/vars/apps/mirrormanager.yml handlers: - import_tasks: "{{ handlers_path }}/restart_services.yml" - vars: - job_name: move-to-archive-{{ product|lower|replace(" ", "-") }}-{{ version|lower|replace(" ", "-") }}-{{ ansible_date_time.epoch }} pre_tasks: - name: Validate the product {{ product }} @@ -33,16 +31,7 @@ fail_msg: "The 'version' variable is not defined" roles: - - role: openshift/object + - role: openshift/job app: mirrormanager - template: cmd-move-to-archive.yml - objectname: cmd-move-to-archive.yml - always_apply: true - - tasks: - - debug: - msg: "Job started. You can watch the logs with: oc -n mirrormanager logs -f job/{{job_name}}" - - debug: - msg: "You can cancel it with: oc -n mirrormanager delete job/{{job_name}}" - - debug: - msg: "When it's done, clean it up with: oc -n mirrormanager delete job/{{job_name}}" + name: move-to-archive-{{ product|lower|replace(" ", "-") }}-{{ version|lower|replace(" ", "-") }} + command: "/opt/app-root/bin/mm2_move-to-archive --product {{ product }} --version {{ version }}" diff --git a/roles/openshift-apps/mirrormanager/templates/cmd-move-to-archive.yml b/roles/openshift-apps/mirrormanager/templates/job.yml similarity index 80% rename from roles/openshift-apps/mirrormanager/templates/cmd-move-to-archive.yml rename to roles/openshift-apps/mirrormanager/templates/job.yml index 3f7c4e1beb..34b5003719 100644 --- a/roles/openshift-apps/mirrormanager/templates/cmd-move-to-archive.yml +++ b/roles/openshift-apps/mirrormanager/templates/job.yml @@ -1,10 +1,10 @@ {% from "_macros.yml" import common_volume_mounts, common_volumes, common_env, security_context with context %} -# Manual command: move-to-archive +# A template for manual commands --- apiVersion: batch/v1 kind: Job metadata: - name: "{{ job_name }}" + name: "job-{{ name }}" spec: parallelism: 1 completions: 1 @@ -16,12 +16,7 @@ spec: containers: - name: mirrormanager image: image-registry.openshift-image-registry.svc:5000/mirrormanager/mirrormanager2:latest - command: - - "/opt/app-root/bin/mm2_move-to-archive" - - "--product" - - "{{ product }}" - - "--version" - - "{{ version }}" + command: ["/bin/bash", "-euxc", "{{command}}"] env: {{ common_env() }} volumeMounts: diff --git a/roles/openshift/job/defaults/main.yml b/roles/openshift/job/defaults/main.yml new file mode 100644 index 0000000000..de4dc17659 --- /dev/null +++ b/roles/openshift/job/defaults/main.yml @@ -0,0 +1,2 @@ +os_app: "{{app}}" +template: job.yml diff --git a/roles/openshift/job/tasks/main.yml b/roles/openshift/job/tasks/main.yml new file mode 100644 index 0000000000..239e1aa923 --- /dev/null +++ b/roles/openshift/job/tasks/main.yml @@ -0,0 +1,30 @@ +- name: Validate the job name {{ name }} + assert: + that: + - name is defined + fail_msg: "The 'name' variable is not defined" + +- name: Validate the command {{ command }} + assert: + that: + - command is defined + fail_msg: "The 'command' variable is not defined" + +- name: Copy job template to a temporary file + template: + src: "{{roles_path}}/openshift-apps/{{app}}/templates/{{template}}" + dest: "/etc/openshift_apps/{{app}}/job-{{name}}.yml" + +- name: Delete previous job (if any) + shell: oc -n {{os_app}} delete --ignore-not-found=true -f /etc/openshift_apps/{{app}}/job-{{name}}.yml + +- name: Start job + shell: oc -n {{os_app}} create -f /etc/openshift_apps/{{app}}/job-{{name}}.yml + +- debug: + msg: "Job started. You can watch the logs with: oc -n {{os_app}} logs -f job/job-{{name}}" +- debug: + msg: "You can cancel it with: oc -n {{os_app}} delete job/job-{{name}}" + +- name: Wait for job to complete + shell: oc -n {{os_app}} wait job/job-{{name}} --for condition=complete