From 06069f99c7b0616e72ca9716552b7eaae0d05028 Mon Sep 17 00:00:00 2001 From: sfulmer Date: Mon, 6 Apr 2026 12:53:18 -0400 Subject: [PATCH 1/6] feat(mtv-warm-cutover): add warm migration cutover role Add a new role and playbook to trigger cutover on active warm migrations. Patches the Migration resource with a cutover timestamp to initiate the final CBT sync, source VM shutdown, and target VM boot. Supports targeting by migration name, label selector, or plan name, with optional wait-for-completion verification. Resolves: MFG-216 Co-Authored-By: Claude Opus 4.6 --- playbooks/mtv_warm_cutover.yml | 11 ++ roles/mtv_warm_cutover/defaults/main.yml | 35 ++++++ roles/mtv_warm_cutover/meta/main.yml | 10 ++ .../mtv_warm_cutover/tasks/_apply_cutover.yml | 69 ++++++++++++ .../tasks/_process_cutover.yml | 100 ++++++++++++++++++ roles/mtv_warm_cutover/tasks/main.yml | 20 ++++ roles/mtv_warm_cutover/tests/inventory | 1 + roles/mtv_warm_cutover/tests/test.yml | 7 ++ 8 files changed, 253 insertions(+) create mode 100644 playbooks/mtv_warm_cutover.yml create mode 100644 roles/mtv_warm_cutover/defaults/main.yml create mode 100644 roles/mtv_warm_cutover/meta/main.yml create mode 100644 roles/mtv_warm_cutover/tasks/_apply_cutover.yml create mode 100644 roles/mtv_warm_cutover/tasks/_process_cutover.yml create mode 100644 roles/mtv_warm_cutover/tasks/main.yml create mode 100644 roles/mtv_warm_cutover/tests/inventory create mode 100644 roles/mtv_warm_cutover/tests/test.yml diff --git a/playbooks/mtv_warm_cutover.yml b/playbooks/mtv_warm_cutover.yml new file mode 100644 index 0000000..f38da45 --- /dev/null +++ b/playbooks/mtv_warm_cutover.yml @@ -0,0 +1,11 @@ +--- + +- name: Finish Warm Migration Cutover + hosts: localhost + connection: local + gather_facts: false + tasks: + - name: Invoke Warm Migration Cutover + ansible.builtin.include_role: + name: infra.openshift_virtualization_migration.mtv_warm_cutover +... diff --git a/roles/mtv_warm_cutover/defaults/main.yml b/roles/mtv_warm_cutover/defaults/main.yml new file mode 100644 index 0000000..81b0a51 --- /dev/null +++ b/roles/mtv_warm_cutover/defaults/main.yml @@ -0,0 +1,35 @@ +--- +# defaults file for mtv_warm_cutover + +# title: Warm Cutover Request +# required: True +# description: List of warm migration cutover requests +mtv_warm_cutover_request: [] +# - namespace: # Namespace containing the Migration resources. +# names: # List of Migration resource names to trigger cutover for. \ +# Optional when using label_selectors or plan_name. +# - +# label_selectors: # Label selectors to match Migration resources. +# - = +# plan_name: # Name of the Plan to find associated Migrations for cutover. +# cutover: # ISO 8601 timestamp for scheduled cutover \ +# (e.g., '2026-04-07T02:00:00Z'). If empty, uses current time. + +# title: MTV Namespace +# required: False +# description: Default namespace for MTV resources +mtv_warm_cutover_default_namespace: openshift-mtv +# title: Verify Cutover Complete +# required: False +# description: Wait until cutover migrations complete +mtv_warm_cutover_verify_complete: true +# title: Verify Complete Retries +# required: False +# description: Number of retries when waiting for cutover completion +mtv_warm_cutover_verify_retries: 360 +# title: Verify Complete Delay +# required: False +# description: Seconds to wait between retries +mtv_warm_cutover_verify_delay: 20 + +... diff --git a/roles/mtv_warm_cutover/meta/main.yml b/roles/mtv_warm_cutover/meta/main.yml new file mode 100644 index 0000000..492e78b --- /dev/null +++ b/roles/mtv_warm_cutover/meta/main.yml @@ -0,0 +1,10 @@ +--- +galaxy_info: + author: "" + description: Trigger cutover for warm migrations to finish the migration process. + company: Red Hat + license: GPL-3.0-only + min_ansible_version: 2.15.0 + galaxy_tags: [] +dependencies: [] +... diff --git a/roles/mtv_warm_cutover/tasks/_apply_cutover.yml b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml new file mode 100644 index 0000000..8dddf9a --- /dev/null +++ b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml @@ -0,0 +1,69 @@ +--- + +- name: _apply_cutover | Verify Migration Is a Warm Migration + ansible.builtin.assert: + that: + - >- + mtv_warm_cutover_migration.spec.cutover is not defined or + mtv_warm_cutover_migration.spec.cutover | default("", true) | length == 0 + fail_msg: >- + Migration '{{ mtv_warm_cutover_migration.metadata.name }}' already has + a cutover timestamp set + ('{{ mtv_warm_cutover_migration.spec.cutover | default("") }}') + quiet: true + +- name: _apply_cutover | Patch Migration with Cutover Timestamp + kubernetes.core.k8s_json_patch: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_migration.metadata.namespace }}" + name: "{{ mtv_warm_cutover_migration.metadata.name }}" + patch: + - op: add + path: /spec/cutover + value: "{{ mtv_warm_cutover_timestamp }}" + register: mtv_warm_cutover_patch_result + +- name: _apply_cutover | Report Cutover Triggered + ansible.builtin.debug: + msg: >- + Cutover triggered for Migration + '{{ mtv_warm_cutover_migration.metadata.name }}' + at {{ mtv_warm_cutover_timestamp }} + +- name: _apply_cutover | Wait for Migration to Complete + when: mtv_warm_cutover_verify_complete | bool + kubernetes.core.k8s_info: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_migration.metadata.namespace }}" + name: "{{ mtv_warm_cutover_migration.metadata.name }}" + register: mtv_warm_cutover_status + until: > + mtv_warm_cutover_status is defined and + 'resources' in mtv_warm_cutover_status and + mtv_warm_cutover_status.resources | length == 1 and + 'status' in mtv_warm_cutover_status.resources | first and + 'completed' in (mtv_warm_cutover_status.resources | first).status and + (mtv_warm_cutover_status.resources | first).status.completed + | trim | length > 0 + retries: "{{ mtv_warm_cutover_verify_retries }}" + delay: "{{ mtv_warm_cutover_verify_delay }}" + +- name: _apply_cutover | Verify Migration Succeeded + when: mtv_warm_cutover_verify_complete | bool + ansible.builtin.assert: + that: + - >- + (mtv_warm_cutover_status.resources | first).status.conditions + | selectattr('type', 'defined') + | selectattr('status', 'defined') + | selectattr('type', 'equalto', 'Succeeded') + | selectattr('status', 'equalto', 'True') + | list | length == 1 + fail_msg: >- + Migration '{{ mtv_warm_cutover_migration.metadata.name }}' + cutover did not succeed + quiet: true + +... diff --git a/roles/mtv_warm_cutover/tasks/_process_cutover.yml b/roles/mtv_warm_cutover/tasks/_process_cutover.yml new file mode 100644 index 0000000..225b972 --- /dev/null +++ b/roles/mtv_warm_cutover/tasks/_process_cutover.yml @@ -0,0 +1,100 @@ +--- + +- name: _process_cutover | Set Working Namespace + ansible.builtin.set_fact: + mtv_warm_cutover_namespace: >- + {{ mtv_warm_cutover_item.namespace + | default(mtv_warm_cutover_default_namespace) }} + +- name: _process_cutover | Query Migrations by Name + when: mtv_warm_cutover_item.names | default([], true) | length > 0 + kubernetes.core.k8s_info: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_namespace }}" + name: "{{ mtv_warm_cutover_migration_name }}" + register: mtv_warm_cutover_by_name + loop: "{{ mtv_warm_cutover_item.names }}" + loop_control: + loop_var: mtv_warm_cutover_migration_name + label: "{{ mtv_warm_cutover_migration_name }}" + +- name: _process_cutover | Query Migrations by Label Selector + when: + - mtv_warm_cutover_item.names | default([], true) | length == 0 + - mtv_warm_cutover_item.label_selectors | default([], true) | length > 0 + kubernetes.core.k8s_info: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_namespace }}" + label_selectors: "{{ mtv_warm_cutover_item.label_selectors }}" + register: mtv_warm_cutover_by_selector + +- name: _process_cutover | Query Migrations by Plan Name + when: + - mtv_warm_cutover_item.names | default([], true) | length == 0 + - mtv_warm_cutover_item.label_selectors | default([], true) | length == 0 + - mtv_warm_cutover_item.plan_name | default("", true) | length > 0 + kubernetes.core.k8s_info: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_namespace }}" + register: mtv_warm_cutover_by_plan_query + +- name: _process_cutover | Filter Migrations for Plan + when: mtv_warm_cutover_by_plan_query is not skipped + ansible.builtin.set_fact: + mtv_warm_cutover_by_plan: + resources: >- + {{ mtv_warm_cutover_by_plan_query.resources + | selectattr('spec.plan.name', 'equalto', mtv_warm_cutover_item.plan_name) + | list }} + +- name: _process_cutover | Build Migration List from Named Queries + when: mtv_warm_cutover_by_name is not skipped + ansible.builtin.set_fact: + mtv_warm_cutover_migrations: >- + {{ mtv_warm_cutover_by_name.results + | selectattr('resources', 'defined') + | map(attribute='resources') + | flatten }} + +- name: _process_cutover | Build Migration List from Selector + when: mtv_warm_cutover_by_selector is not skipped + ansible.builtin.set_fact: + mtv_warm_cutover_migrations: >- + {{ mtv_warm_cutover_by_selector.resources | default([]) }} + +- name: _process_cutover | Build Migration List from Plan + when: + - mtv_warm_cutover_by_plan is defined + - mtv_warm_cutover_by_plan is not skipped + ansible.builtin.set_fact: + mtv_warm_cutover_migrations: >- + {{ mtv_warm_cutover_by_plan.resources | default([]) }} + +- name: _process_cutover | Verify Migrations Found + ansible.builtin.assert: + that: + - mtv_warm_cutover_migrations | default([], true) | length > 0 + fail_msg: >- + No Migration resources found in namespace + '{{ mtv_warm_cutover_namespace }}' + matching the provided criteria + quiet: true + +- name: _process_cutover | Determine Cutover Timestamp + ansible.builtin.set_fact: + mtv_warm_cutover_timestamp: >- + {{ mtv_warm_cutover_item.cutover + | default(now(utc=true, fmt='%Y-%m-%dT%H:%M:%SZ')) }} + +- name: _process_cutover | Trigger Cutover on Migrations + ansible.builtin.include_tasks: + file: _apply_cutover.yml + loop: "{{ mtv_warm_cutover_migrations }}" + loop_control: + loop_var: mtv_warm_cutover_migration + label: "{{ mtv_warm_cutover_migration.metadata.name }}" + +... diff --git a/roles/mtv_warm_cutover/tasks/main.yml b/roles/mtv_warm_cutover/tasks/main.yml new file mode 100644 index 0000000..7134ffc --- /dev/null +++ b/roles/mtv_warm_cutover/tasks/main.yml @@ -0,0 +1,20 @@ +--- + +- name: Verify mtv_warm_cutover_request Variable Provided + ansible.builtin.assert: + that: + - mtv_warm_cutover_request | default("", true) | length > 0 + fail_msg: "'mtv_warm_cutover_request' Variable Not Provided" + quiet: true + +- name: Process Warm Cutover Requests + ansible.builtin.include_tasks: + file: _process_cutover.yml + loop: "{{ mtv_warm_cutover_request }}" + loop_control: + loop_var: mtv_warm_cutover_item + label: >- + Namespace: {{ mtv_warm_cutover_item.namespace + | default(mtv_warm_cutover_default_namespace) }} + +... diff --git a/roles/mtv_warm_cutover/tests/inventory b/roles/mtv_warm_cutover/tests/inventory new file mode 100644 index 0000000..2fbb50c --- /dev/null +++ b/roles/mtv_warm_cutover/tests/inventory @@ -0,0 +1 @@ +localhost diff --git a/roles/mtv_warm_cutover/tests/test.yml b/roles/mtv_warm_cutover/tests/test.yml new file mode 100644 index 0000000..fa741e2 --- /dev/null +++ b/roles/mtv_warm_cutover/tests/test.yml @@ -0,0 +1,7 @@ +--- +- name: Test + hosts: localhost + remote_user: root + roles: + - mtv_warm_cutover +... From eb9803e708429f0cd24c69e022613f58fa8a7698 Mon Sep 17 00:00:00 2001 From: sfulmer Date: Wed, 22 Apr 2026 13:50:40 -0400 Subject: [PATCH 2/6] fix(mtv-warm-cutover): address review feedback from spyrexd - Update min_ansible_version to 2.16.0 - Skip migrations that already have a cutover timestamp instead of failing - Add argument_specs.yml declaring all role inputs Co-Authored-By: Claude Opus 4.6 --- .../mtv_warm_cutover/meta/argument_specs.yml | 49 +++++++++++++++++++ roles/mtv_warm_cutover/meta/main.yml | 2 +- .../mtv_warm_cutover/tasks/_apply_cutover.yml | 34 ++++++++----- 3 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 roles/mtv_warm_cutover/meta/argument_specs.yml diff --git a/roles/mtv_warm_cutover/meta/argument_specs.yml b/roles/mtv_warm_cutover/meta/argument_specs.yml new file mode 100644 index 0000000..56a45a4 --- /dev/null +++ b/roles/mtv_warm_cutover/meta/argument_specs.yml @@ -0,0 +1,49 @@ +--- +argument_specs: + main: + short_description: MTV Warm Cutover - Trigger cutover for warm migrations + options: + mtv_warm_cutover_request: + description: List of warm migration cutover requests + type: list + required: true + elements: dict + options: + namespace: + description: Namespace containing the Migration resources + type: str + names: + description: >- + List of Migration resource names to trigger cutover for. + Optional when using label_selectors or plan_name. + type: list + elements: str + label_selectors: + description: Label selectors to match Migration resources + type: list + elements: str + plan_name: + description: Name of the Plan to find associated Migrations for cutover + type: str + cutover: + description: >- + ISO 8601 timestamp for scheduled cutover + (e.g., '2026-04-07T02:00:00Z'). If omitted, uses current time. + type: str + mtv_warm_cutover_default_namespace: + description: Default namespace for MTV resources + type: str + default: openshift-mtv + mtv_warm_cutover_verify_complete: + description: Wait until cutover migrations complete + type: bool + default: true + mtv_warm_cutover_verify_retries: + description: Number of retries when waiting for cutover completion + type: int + default: 360 + mtv_warm_cutover_verify_delay: + description: Seconds to wait between retries + type: int + default: 20 +... diff --git a/roles/mtv_warm_cutover/meta/main.yml b/roles/mtv_warm_cutover/meta/main.yml index 492e78b..1829f4b 100644 --- a/roles/mtv_warm_cutover/meta/main.yml +++ b/roles/mtv_warm_cutover/meta/main.yml @@ -4,7 +4,7 @@ galaxy_info: description: Trigger cutover for warm migrations to finish the migration process. company: Red Hat license: GPL-3.0-only - min_ansible_version: 2.15.0 + min_ansible_version: 2.16.0 galaxy_tags: [] dependencies: [] ... diff --git a/roles/mtv_warm_cutover/tasks/_apply_cutover.yml b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml index 8dddf9a..d62c139 100644 --- a/roles/mtv_warm_cutover/tasks/_apply_cutover.yml +++ b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml @@ -1,18 +1,21 @@ --- -- name: _apply_cutover | Verify Migration Is a Warm Migration - ansible.builtin.assert: - that: - - >- - mtv_warm_cutover_migration.spec.cutover is not defined or - mtv_warm_cutover_migration.spec.cutover | default("", true) | length == 0 - fail_msg: >- - Migration '{{ mtv_warm_cutover_migration.metadata.name }}' already has - a cutover timestamp set - ('{{ mtv_warm_cutover_migration.spec.cutover | default("") }}') - quiet: true +- name: _apply_cutover | Check if Cutover Already Defined + ansible.builtin.set_fact: + mtv_warm_cutover_already_set: >- + {{ mtv_warm_cutover_migration.spec.cutover is defined and + mtv_warm_cutover_migration.spec.cutover | default("", true) | length > 0 }} + +- name: _apply_cutover | Skip Already-Cutover Migration + when: mtv_warm_cutover_already_set | bool + ansible.builtin.debug: + msg: >- + Skipping Migration '{{ mtv_warm_cutover_migration.metadata.name }}' + — cutover already set to + '{{ mtv_warm_cutover_migration.spec.cutover }}' - name: _apply_cutover | Patch Migration with Cutover Timestamp + when: not (mtv_warm_cutover_already_set | bool) kubernetes.core.k8s_json_patch: api_version: forklift.konveyor.io/v1beta1 kind: Migration @@ -25,6 +28,7 @@ register: mtv_warm_cutover_patch_result - name: _apply_cutover | Report Cutover Triggered + when: not (mtv_warm_cutover_already_set | bool) ansible.builtin.debug: msg: >- Cutover triggered for Migration @@ -32,7 +36,9 @@ at {{ mtv_warm_cutover_timestamp }} - name: _apply_cutover | Wait for Migration to Complete - when: mtv_warm_cutover_verify_complete | bool + when: + - not (mtv_warm_cutover_already_set | bool) + - mtv_warm_cutover_verify_complete | bool kubernetes.core.k8s_info: api_version: forklift.konveyor.io/v1beta1 kind: Migration @@ -51,7 +57,9 @@ delay: "{{ mtv_warm_cutover_verify_delay }}" - name: _apply_cutover | Verify Migration Succeeded - when: mtv_warm_cutover_verify_complete | bool + when: + - not (mtv_warm_cutover_already_set | bool) + - mtv_warm_cutover_verify_complete | bool ansible.builtin.assert: that: - >- From 4e93072cb7275aab8ec304ee76d572e958b4453f Mon Sep 17 00:00:00 2001 From: Steve Fulmer Date: Thu, 2 Jul 2026 13:44:52 -0400 Subject: [PATCH 3/6] fix(mtv-warm-cutover): address PR #19 review feedback - Fail on existing cutover instead of silently skipping; add force_cutover option (global + per-migration) to allow override with op:replace patch - Move verify_complete to per-migration level (mirrors mtv_migrate pattern), falling back to global default - Add force_cutover and verify_complete to argument_specs and defaults with full descriptions - Remove already_set guard from wait/verify tasks so forced cutovers also get verified --- roles/mtv_warm_cutover/defaults/main.yml | 12 ++++- .../mtv_warm_cutover/meta/argument_specs.yml | 20 +++++++- .../mtv_warm_cutover/tasks/_apply_cutover.yml | 47 ++++++++++++++----- .../tasks/_process_cutover.yml | 9 ++++ 4 files changed, 75 insertions(+), 13 deletions(-) diff --git a/roles/mtv_warm_cutover/defaults/main.yml b/roles/mtv_warm_cutover/defaults/main.yml index 81b0a51..56c5fa0 100644 --- a/roles/mtv_warm_cutover/defaults/main.yml +++ b/roles/mtv_warm_cutover/defaults/main.yml @@ -14,14 +14,24 @@ mtv_warm_cutover_request: [] # plan_name: # Name of the Plan to find associated Migrations for cutover. # cutover: # ISO 8601 timestamp for scheduled cutover \ # (e.g., '2026-04-07T02:00:00Z'). If empty, uses current time. +# force_cutover: # Override an existing cutover timestamp (default: false) +# verify_complete: # Wait until cutover migration completes (overrides global default) # title: MTV Namespace # required: False # description: Default namespace for MTV resources mtv_warm_cutover_default_namespace: openshift-mtv +# title: Force Cutover Override +# required: False +# description: >- +# Allow overriding an existing cutover timestamp on a Migration. +# Can be overridden per migration request via the force_cutover key. +mtv_warm_cutover_force_cutover: false # title: Verify Cutover Complete # required: False -# description: Wait until cutover migrations complete +# description: >- +# Wait until cutover migrations complete. +# Can be overridden per migration request via the verify_complete key. mtv_warm_cutover_verify_complete: true # title: Verify Complete Retries # required: False diff --git a/roles/mtv_warm_cutover/meta/argument_specs.yml b/roles/mtv_warm_cutover/meta/argument_specs.yml index 56a45a4..71facdb 100644 --- a/roles/mtv_warm_cutover/meta/argument_specs.yml +++ b/roles/mtv_warm_cutover/meta/argument_specs.yml @@ -30,12 +30,30 @@ argument_specs: ISO 8601 timestamp for scheduled cutover (e.g., '2026-04-07T02:00:00Z'). If omitted, uses current time. type: str + force_cutover: + description: >- + Override an existing cutover timestamp on a Migration. + Overrides the global mtv_warm_cutover_force_cutover default. + type: bool + verify_complete: + description: >- + Wait until the cutover migration completes. + Overrides the global mtv_warm_cutover_verify_complete default. + type: bool mtv_warm_cutover_default_namespace: description: Default namespace for MTV resources type: str default: openshift-mtv + mtv_warm_cutover_force_cutover: + description: >- + Allow overriding an existing cutover timestamp on a Migration. + Can be overridden per migration request via the force_cutover key. + type: bool + default: false mtv_warm_cutover_verify_complete: - description: Wait until cutover migrations complete + description: >- + Wait until cutover migrations complete. + Can be overridden per migration request via the verify_complete key. type: bool default: true mtv_warm_cutover_verify_retries: diff --git a/roles/mtv_warm_cutover/tasks/_apply_cutover.yml b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml index d62c139..1d79b9f 100644 --- a/roles/mtv_warm_cutover/tasks/_apply_cutover.yml +++ b/roles/mtv_warm_cutover/tasks/_apply_cutover.yml @@ -6,13 +6,42 @@ {{ mtv_warm_cutover_migration.spec.cutover is defined and mtv_warm_cutover_migration.spec.cutover | default("", true) | length > 0 }} -- name: _apply_cutover | Skip Already-Cutover Migration - when: mtv_warm_cutover_already_set | bool +- name: _apply_cutover | Fail When Cutover Already Set (No Force) + when: + - mtv_warm_cutover_already_set | bool + - not (mtv_warm_cutover_effective_force | bool) + ansible.builtin.fail: + msg: >- + Migration '{{ mtv_warm_cutover_migration.metadata.name }}' + already has cutover set to + '{{ mtv_warm_cutover_migration.spec.cutover }}'. + Set force_cutover: true to override. + +- name: _apply_cutover | Override Existing Cutover Timestamp + when: + - mtv_warm_cutover_already_set | bool + - mtv_warm_cutover_effective_force | bool + kubernetes.core.k8s_json_patch: + api_version: forklift.konveyor.io/v1beta1 + kind: Migration + namespace: "{{ mtv_warm_cutover_migration.metadata.namespace }}" + name: "{{ mtv_warm_cutover_migration.metadata.name }}" + patch: + - op: replace + path: /spec/cutover + value: "{{ mtv_warm_cutover_timestamp }}" + register: mtv_warm_cutover_patch_result + +- name: _apply_cutover | Report Cutover Overridden + when: + - mtv_warm_cutover_already_set | bool + - mtv_warm_cutover_effective_force | bool ansible.builtin.debug: msg: >- - Skipping Migration '{{ mtv_warm_cutover_migration.metadata.name }}' - — cutover already set to - '{{ mtv_warm_cutover_migration.spec.cutover }}' + Cutover overridden for Migration + '{{ mtv_warm_cutover_migration.metadata.name }}' + from '{{ mtv_warm_cutover_migration.spec.cutover }}' + to {{ mtv_warm_cutover_timestamp }} - name: _apply_cutover | Patch Migration with Cutover Timestamp when: not (mtv_warm_cutover_already_set | bool) @@ -36,9 +65,7 @@ at {{ mtv_warm_cutover_timestamp }} - name: _apply_cutover | Wait for Migration to Complete - when: - - not (mtv_warm_cutover_already_set | bool) - - mtv_warm_cutover_verify_complete | bool + when: mtv_warm_cutover_effective_verify | bool kubernetes.core.k8s_info: api_version: forklift.konveyor.io/v1beta1 kind: Migration @@ -57,9 +84,7 @@ delay: "{{ mtv_warm_cutover_verify_delay }}" - name: _apply_cutover | Verify Migration Succeeded - when: - - not (mtv_warm_cutover_already_set | bool) - - mtv_warm_cutover_verify_complete | bool + when: mtv_warm_cutover_effective_verify | bool ansible.builtin.assert: that: - >- diff --git a/roles/mtv_warm_cutover/tasks/_process_cutover.yml b/roles/mtv_warm_cutover/tasks/_process_cutover.yml index 225b972..8d1dc65 100644 --- a/roles/mtv_warm_cutover/tasks/_process_cutover.yml +++ b/roles/mtv_warm_cutover/tasks/_process_cutover.yml @@ -89,6 +89,15 @@ {{ mtv_warm_cutover_item.cutover | default(now(utc=true, fmt='%Y-%m-%dT%H:%M:%SZ')) }} +- name: _process_cutover | Resolve Per-Request Overrides + ansible.builtin.set_fact: + mtv_warm_cutover_effective_force: >- + {{ mtv_warm_cutover_item.force_cutover + | default(mtv_warm_cutover_force_cutover) | bool }} + mtv_warm_cutover_effective_verify: >- + {{ mtv_warm_cutover_item.verify_complete + | default(mtv_warm_cutover_verify_complete) | bool }} + - name: _process_cutover | Trigger Cutover on Migrations ansible.builtin.include_tasks: file: _apply_cutover.yml From 8374a0a11e971c4451caa6d259051d309bc8859b Mon Sep 17 00:00:00 2001 From: Steve Fulmer Date: Thu, 2 Jul 2026 13:55:06 -0400 Subject: [PATCH 4/6] docs: regenerate role and collection READMEs Run docsible to sync generated documentation with current argument_specs and role metadata after adding force_cutover and per-migration verify_complete options. --- roles/aap_deploy/README.md | 38 ++-- roles/aap_machine_credentials/README.md | 30 +-- roles/aap_seed/README.md | 120 ++++++------ roles/bootstrap/README.md | 38 ++-- roles/mtv_management/README.md | 222 +++++++++++----------- roles/mtv_migrate/README.md | 134 +++++++------- roles/mtv_warm_cutover/README.md | 237 ++++++++++++++++++++++++ roles/network_mgmt/README.md | 78 ++++---- roles/operator_management/README.md | 60 +++--- roles/validate_migration/README.md | 34 ++-- roles/vm_backup_restore/README.md | 20 +- roles/vm_hot_plug/README.md | 40 ++-- roles/vm_mac_address/README.md | 34 ++-- roles/vm_ssh/README.md | 78 ++++---- 14 files changed, 700 insertions(+), 463 deletions(-) create mode 100644 roles/mtv_warm_cutover/README.md diff --git a/roles/aap_deploy/README.md b/roles/aap_deploy/README.md index a62f3a6..23da700 100644 --- a/roles/aap_deploy/README.md +++ b/roles/aap_deploy/README.md @@ -104,25 +104,6 @@ Description: Deploys an instance of Ansible Automation Platform. ## Task Flow Graphs -### Graph for main.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Include task| Install_AAP_install_yml_0[install aap
When: **aap deploy aap install bool**
include_task: install yml]:::includeTasks - Install_AAP_install_yml_0-->|Include task| Attach_AAP_Subscriptions_subscribe_yml_1[attach aap subscriptions
When: **aap deploy aap install bool**
include_task: subscribe yml]:::includeTasks - Attach_AAP_Subscriptions_subscribe_yml_1-->End -``` - ### Graph for install.yml ```mermaid @@ -159,6 +140,25 @@ classDef rescue stroke:#665352,stroke-width:2px; install___Display_retrieved_password_for_non_bootstrap_mode4-->End ``` +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Include task| Install_AAP_install_yml_0[install aap
When: **aap deploy aap install bool**
include_task: install yml]:::includeTasks + Install_AAP_install_yml_0-->|Include task| Attach_AAP_Subscriptions_subscribe_yml_1[attach aap subscriptions
When: **aap deploy aap install bool**
include_task: subscribe yml]:::includeTasks + Attach_AAP_Subscriptions_subscribe_yml_1-->End +``` + ### Graph for subscribe.yml ```mermaid diff --git a/roles/aap_machine_credentials/README.md b/roles/aap_machine_credentials/README.md index a8734cc..44644c6 100644 --- a/roles/aap_machine_credentials/README.md +++ b/roles/aap_machine_credentials/README.md @@ -131,7 +131,7 @@ classDef rescue stroke:#665352,stroke-width:2px; _process_machine_credential___Render_Machine_Credential2-->End ``` -### Graph for main.yml +### Graph for _map_key_content.yml ```mermaid flowchart TD @@ -145,17 +145,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Initialize_Variables0[initialize variables]:::task - Initialize_Variables0-->|Include task| Process_Machine_Credentials__process_machine_credential_yml_1[process machine credentials
include_task: process machine credential yml]:::includeTasks - Process_Machine_Credentials__process_machine_credential_yml_1-->|Block Start| Manage_Credentials2_block_start_0[[manage credentials]]:::block - Manage_Credentials2_block_start_0-->|Task| Verify_Config_as_Code_parameters_required__for_AAP_2_4_and_below_0[verify config as code parameters required for aap
2 4 and below
When: **aap version is defined and aap version is version
2 5**]:::task - Verify_Config_as_Code_parameters_required__for_AAP_2_4_and_below_0-->|Task| Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1[verify config as code parameters required for aap
2 5 and above
When: **aap version is not defined or aap version is
version 2 5**]:::task - Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1-.->|End of Block| Manage_Credentials2_block_start_0 - Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1-->|Include role| Call_credential_config_as_code_role____aap_machine_credentials_cac_credentials_role____3(call credential config as code role
When: **aap machine credentials controller credentials
length 0**
include_role: aap machine credentials cac credentials role ):::includeRole - Call_credential_config_as_code_role____aap_machine_credentials_cac_credentials_role____3-->End + Start-->|Task| _map_key_content___Verify_required_variables_provided0[ map key content verify required variables
provided]:::task + _map_key_content___Verify_required_variables_provided0-->|Task| _map_key_content___Check_source_path_content1[ map key content check source path content]:::task + _map_key_content___Check_source_path_content1-->|Task| _map_key_content___Verify_source_path_exists2[ map key content verify source path exists]:::task + _map_key_content___Verify_source_path_exists2-->|Task| _map_key_content___Map_Variables3[ map key content map variables]:::task + _map_key_content___Map_Variables3-->End ``` -### Graph for _map_key_content.yml +### Graph for main.yml ```mermaid flowchart TD @@ -169,11 +166,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _map_key_content___Verify_required_variables_provided0[ map key content verify required variables
provided]:::task - _map_key_content___Verify_required_variables_provided0-->|Task| _map_key_content___Check_source_path_content1[ map key content check source path content]:::task - _map_key_content___Check_source_path_content1-->|Task| _map_key_content___Verify_source_path_exists2[ map key content verify source path exists]:::task - _map_key_content___Verify_source_path_exists2-->|Task| _map_key_content___Map_Variables3[ map key content map variables]:::task - _map_key_content___Map_Variables3-->End + Start-->|Task| Initialize_Variables0[initialize variables]:::task + Initialize_Variables0-->|Include task| Process_Machine_Credentials__process_machine_credential_yml_1[process machine credentials
include_task: process machine credential yml]:::includeTasks + Process_Machine_Credentials__process_machine_credential_yml_1-->|Block Start| Manage_Credentials2_block_start_0[[manage credentials]]:::block + Manage_Credentials2_block_start_0-->|Task| Verify_Config_as_Code_parameters_required__for_AAP_2_4_and_below_0[verify config as code parameters required for aap
2 4 and below
When: **aap version is defined and aap version is version
2 5**]:::task + Verify_Config_as_Code_parameters_required__for_AAP_2_4_and_below_0-->|Task| Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1[verify config as code parameters required for aap
2 5 and above
When: **aap version is not defined or aap version is
version 2 5**]:::task + Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1-.->|End of Block| Manage_Credentials2_block_start_0 + Verify_Config_as_Code_parameters_required__for_AAP_2_5_and_above_1-->|Include role| Call_credential_config_as_code_role____aap_machine_credentials_cac_credentials_role____3(call credential config as code role
When: **aap machine credentials controller credentials
length 0**
include_role: aap machine credentials cac credentials role ):::includeRole + Call_credential_config_as_code_role____aap_machine_credentials_cac_credentials_role____3-->End ``` ## Playbook diff --git a/roles/aap_seed/README.md b/roles/aap_seed/README.md index 012da66..708750f 100644 --- a/roles/aap_seed/README.md +++ b/roles/aap_seed/README.md @@ -1166,7 +1166,7 @@ Description: Populates an Ansible Automation Platform instance. ## Task Flow Graphs -### Graph for credentials.yml +### Graph for job_templates.yml ```mermaid flowchart TD @@ -1180,19 +1180,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| credentials___Set_credentials_variable0[credentials set credentials variable]:::task - credentials___Set_credentials_variable0-->|Task| credentials___Build_AAP_Credential1[credentials build aap credential
When: **aap seed aap credentials create default true**]:::task - credentials___Build_AAP_Credential1-->|Task| credentials___Build_Automation_Hub_Credentials2[credentials build automation hub credentials
When: **aap seed automation hub credentials create
default true**]:::task - credentials___Build_Automation_Hub_Credentials2-->|Task| credentials___Build_Project_Credential3[credentials build project credential
When: **aap seed project credentials create default true
**]:::task - credentials___Build_Project_Credential3-->|Task| credentials___Build_Container_Registry_Credential4[credentials build container registry credential
When: **aap seed container registry credentials create
default true**]:::task - credentials___Build_Container_Registry_Credential4-->|Block Start| credentials___Build_Operator_Management_Credentials5_block_start_0[[credentials build operator management
credentials
When: **aap seed migration targets credentials create
default true**]]:::block - credentials___Build_Operator_Management_Credentials5_block_start_0-->|Task| credentials___Build_Migration_Target_Credentials0[credentials build migration target credentials
When: **groups migration spoke length 0 and
hostvars groups migration spoke 0 migration
targets default length 0**]:::task - credentials___Build_Migration_Target_Credentials0-->|Include task| credentials___Build_required_credentials__build_credentials_yml_1[credentials build required credentials
include_task: build credentials yml]:::includeTasks - credentials___Build_required_credentials__build_credentials_yml_1-.->|End of Block| credentials___Build_Operator_Management_Credentials5_block_start_0 - credentials___Build_required_credentials__build_credentials_yml_1-->End + Start-->|Task| job_templates___Set_templates_variable0[job templates set templates variable]:::task + job_templates___Set_templates_variable0-->|Include task| job_templates___Build_Operator_Install_Job_Templates__build_job_templates_yml_1[job templates build operator install job
templates
include_task: build job templates yml]:::includeTasks + job_templates___Build_Operator_Install_Job_Templates__build_job_templates_yml_1-->End ``` -### Graph for job_templates.yml +### Graph for _build_job_templates.yml ```mermaid flowchart TD @@ -1206,12 +1199,17 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| job_templates___Set_templates_variable0[job templates set templates variable]:::task - job_templates___Set_templates_variable0-->|Include task| job_templates___Build_Operator_Install_Job_Templates__build_job_templates_yml_1[job templates build operator install job
templates
include_task: build job templates yml]:::includeTasks - job_templates___Build_Operator_Install_Job_Templates__build_job_templates_yml_1-->End + Start-->|Block Start| _build_job_templates___Build_list_of_operators_to_install0_block_start_0[[ build job templates build list of operators to
install]]:::block + _build_job_templates___Build_list_of_operators_to_install0_block_start_0-->|Task| _build_job_templates___Clear_operator_list0[ build job templates clear operator list]:::task + _build_job_templates___Clear_operator_list0-->|Task| _build_job_templates___Add_hub_operators1[ build job templates add hub operators
When: **mf host in groups migration hub**]:::task + _build_job_templates___Add_hub_operators1-->|Task| _build_job_templates___Add_spoke_operators2[ build job templates add spoke operators
When: **mf host in groups migration spoke**]:::task + _build_job_templates___Add_spoke_operators2-.->|End of Block| _build_job_templates___Build_list_of_operators_to_install0_block_start_0 + _build_job_templates___Add_spoke_operators2-->|Task| _build_job_templates___Build_Operator_Job_Template1[ build job templates build operator job template]:::task + _build_job_templates___Build_Operator_Job_Template1-->|Include task| _build_job_templates___Build_MTV_Job_Templates__mtv_job_templates_yml_2[ build job templates build mtv job templates
When: **mf host in groups migration spoke**
include_task: mtv job templates yml]:::includeTasks + _build_job_templates___Build_MTV_Job_Templates__mtv_job_templates_yml_2-->End ``` -### Graph for _mtv_job_templates.yml +### Graph for _mtv_workflow_job_templates.yml ```mermaid flowchart TD @@ -1225,12 +1223,13 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_job_templates___Configure_VMWare_MTV_Job_Template0[ mtv job templates configure vmware mtv job
template
When: **target type vmware and mtv job template
trim length 0**]:::task - _mtv_job_templates___Configure_VMWare_MTV_Job_Template0-->|Task| _mtv_job_templates___Configure_oVirt_MTV_Job_Template1[ mtv job templates configure ovirt mtv job
template
When: **target type ovirt and mtv job template
trim length 0**]:::task - _mtv_job_templates___Configure_oVirt_MTV_Job_Template1-->End + Start-->|Task| _mtv_workflow_job_templates___Build_MTV_Target_Workflows_for__mf_host0[ mtv workflow job templates build mtv target
workflows for mf host]:::task + _mtv_workflow_job_templates___Build_MTV_Target_Workflows_for__mf_host0-->|Task| _mtv_workflow_job_templates___Get_list_of_MTV_Target_workflow_names1[ mtv workflow job templates get list of mtv
target workflow names]:::task + _mtv_workflow_job_templates___Get_list_of_MTV_Target_workflow_names1-->|Task| _mtv_workflow_job_templates___Build_MTV_workflow2[ mtv workflow job templates build mtv workflow]:::task + _mtv_workflow_job_templates___Build_MTV_workflow2-->End ``` -### Graph for _build_job_templates.yml +### Graph for credentials.yml ```mermaid flowchart TD @@ -1244,17 +1243,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Block Start| _build_job_templates___Build_list_of_operators_to_install0_block_start_0[[ build job templates build list of operators to
install]]:::block - _build_job_templates___Build_list_of_operators_to_install0_block_start_0-->|Task| _build_job_templates___Clear_operator_list0[ build job templates clear operator list]:::task - _build_job_templates___Clear_operator_list0-->|Task| _build_job_templates___Add_hub_operators1[ build job templates add hub operators
When: **mf host in groups migration hub**]:::task - _build_job_templates___Add_hub_operators1-->|Task| _build_job_templates___Add_spoke_operators2[ build job templates add spoke operators
When: **mf host in groups migration spoke**]:::task - _build_job_templates___Add_spoke_operators2-.->|End of Block| _build_job_templates___Build_list_of_operators_to_install0_block_start_0 - _build_job_templates___Add_spoke_operators2-->|Task| _build_job_templates___Build_Operator_Job_Template1[ build job templates build operator job template]:::task - _build_job_templates___Build_Operator_Job_Template1-->|Include task| _build_job_templates___Build_MTV_Job_Templates__mtv_job_templates_yml_2[ build job templates build mtv job templates
When: **mf host in groups migration spoke**
include_task: mtv job templates yml]:::includeTasks - _build_job_templates___Build_MTV_Job_Templates__mtv_job_templates_yml_2-->End + Start-->|Task| credentials___Set_credentials_variable0[credentials set credentials variable]:::task + credentials___Set_credentials_variable0-->|Task| credentials___Build_AAP_Credential1[credentials build aap credential
When: **aap seed aap credentials create default true**]:::task + credentials___Build_AAP_Credential1-->|Task| credentials___Build_Automation_Hub_Credentials2[credentials build automation hub credentials
When: **aap seed automation hub credentials create
default true**]:::task + credentials___Build_Automation_Hub_Credentials2-->|Task| credentials___Build_Project_Credential3[credentials build project credential
When: **aap seed project credentials create default true
**]:::task + credentials___Build_Project_Credential3-->|Task| credentials___Build_Container_Registry_Credential4[credentials build container registry credential
When: **aap seed container registry credentials create
default true**]:::task + credentials___Build_Container_Registry_Credential4-->|Block Start| credentials___Build_Operator_Management_Credentials5_block_start_0[[credentials build operator management
credentials
When: **aap seed migration targets credentials create
default true**]]:::block + credentials___Build_Operator_Management_Credentials5_block_start_0-->|Task| credentials___Build_Migration_Target_Credentials0[credentials build migration target credentials
When: **groups migration spoke length 0 and
hostvars groups migration spoke 0 migration
targets default length 0**]:::task + credentials___Build_Migration_Target_Credentials0-->|Include task| credentials___Build_required_credentials__build_credentials_yml_1[credentials build required credentials
include_task: build credentials yml]:::includeTasks + credentials___Build_required_credentials__build_credentials_yml_1-.->|End of Block| credentials___Build_Operator_Management_Credentials5_block_start_0 + credentials___Build_required_credentials__build_credentials_yml_1-->End ``` -### Graph for _mtv_workflow_job_templates.yml +### Graph for _build_credentials.yml ```mermaid flowchart TD @@ -1268,13 +1269,15 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_workflow_job_templates___Build_MTV_Target_Workflows_for__mf_host0[ mtv workflow job templates build mtv target
workflows for mf host]:::task - _mtv_workflow_job_templates___Build_MTV_Target_Workflows_for__mf_host0-->|Task| _mtv_workflow_job_templates___Get_list_of_MTV_Target_workflow_names1[ mtv workflow job templates get list of mtv
target workflow names]:::task - _mtv_workflow_job_templates___Get_list_of_MTV_Target_workflow_names1-->|Task| _mtv_workflow_job_templates___Build_MTV_workflow2[ mtv workflow job templates build mtv workflow]:::task - _mtv_workflow_job_templates___Build_MTV_workflow2-->End + Start-->|Include role| _build_credentials___Create_migration_factory_api_token_for__mf_host_infra_openshift_virtualization_migration_create_mf_aap_token_0( build credentials create migration factory api
token for mf host
When: **hostvars mf host openshift api key is
undefined**
include_role: infra openshift virtualization migration create mf
aap token):::includeRole + _build_credentials___Create_migration_factory_api_token_for__mf_host_infra_openshift_virtualization_migration_create_mf_aap_token_0-->|Task| _build_credentials___Set_openshift_api_key_var_on__mf_host1[ build credentials set openshift api key var on
mf host
When: **hostvars mf host openshift api key is
undefined**]:::task + _build_credentials___Set_openshift_api_key_var_on__mf_host1-->|Task| _build_credentials___Build_migration_targets2[ build credentials build migration targets
When: **mf host in groups migration spoke**]:::task + _build_credentials___Build_migration_targets2-->|Task| _build_credentials___Build_Migration_Factory_CaC_Credential_for__mf_host3[ build credentials build migration factory cac
credential for mf host
When: **mf host in groups migration spoke**]:::task + _build_credentials___Build_Migration_Factory_CaC_Credential_for__mf_host3-->|Task| _build_credentials___Build_kubeconfig_for__mf_host4[ build credentials build kubeconfig for mf host]:::task + _build_credentials___Build_kubeconfig_for__mf_host4-->End ``` -### Graph for main.yml +### Graph for workflows.yml ```mermaid flowchart TD @@ -1288,21 +1291,15 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Set_controller_configuration_vars0[set controller configuration vars]:::task - Set_controller_configuration_vars0-->|Include task| Build_Credentials_credentials_yml_1[build credentials
include_task: credentials yml]:::includeTasks - Build_Credentials_credentials_yml_1-->|Include task| Build_Job_Templates_job_templates_yml_2[build job templates
When: **aap seed job templates create default true
bool**
include_task: job templates yml]:::includeTasks - Build_Job_Templates_job_templates_yml_2-->|Include task| Build_Workflows_workflows_yml_3[build workflows
When: **aap seed workflow job templates create default
true bool**
include_task: workflows yml]:::includeTasks - Build_Workflows_workflows_yml_3-->|Task| Ensure_AAP_API_credentials_are_set4[ensure aap api credentials are set]:::task - Ensure_AAP_API_credentials_are_set4-->|Task| Check_if_both_username_password_and_token_are_defined5[check if both username password and token are
defined
When: **aap seed controller username default true
trim length 0 and aap seed controller password
default true trim length 0 and aap
seed controller token default true trim
length 0**]:::task - Check_if_both_username_password_and_token_are_defined5-->|Task| Wait_for_API_to_become_available_using_username_and_password6[wait for api to become available using username
and password
When: **aap seed controller token default true
length 0**]:::task - Wait_for_API_to_become_available_using_username_and_password6-->|Task| Wait_for_API_to_become_available_using_token7[wait for api to become available using token
When: **aap seed controller token default true
length 0**]:::task - Wait_for_API_to_become_available_using_token7-->|Task| Set_controller_configuration_vars8[set controller configuration vars]:::task - Set_controller_configuration_vars8-->|Task| Set_variables_for_aap_seed_cac_collection9[set variables for aap seed cac collection]:::task - Set_variables_for_aap_seed_cac_collection9-->|Include role| Call_dispatch_role____aap_seed_cac_collection____dispatch_10(call dispatch role
include_role: aap seed cac collection dispatch):::includeRole - Call_dispatch_role____aap_seed_cac_collection____dispatch_10-->End + Start-->|Task| workflows___Set_workflow_variables0[workflows set workflow variables]:::task + workflows___Set_workflow_variables0-->|Task| workflows___Build_Operator_Workflows1[workflows build operator workflows]:::task + workflows___Build_Operator_Workflows1-->|Include task| workflows___Build_MTV_Target_Workflows__mtv_workflow_job_templates_yml_2[workflows build mtv target workflows
include_task: mtv workflow job templates yml]:::includeTasks + workflows___Build_MTV_Target_Workflows__mtv_workflow_job_templates_yml_2-->|Task| workflows___Build_MTV_Workflow3[workflows build mtv workflow]:::task + workflows___Build_MTV_Workflow3-->|Task| workflows___Build_Migration_Factory_Workflow4[workflows build migration factory workflow]:::task + workflows___Build_Migration_Factory_Workflow4-->End ``` -### Graph for workflows.yml +### Graph for _mtv_job_templates.yml ```mermaid flowchart TD @@ -1316,15 +1313,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| workflows___Set_workflow_variables0[workflows set workflow variables]:::task - workflows___Set_workflow_variables0-->|Task| workflows___Build_Operator_Workflows1[workflows build operator workflows]:::task - workflows___Build_Operator_Workflows1-->|Include task| workflows___Build_MTV_Target_Workflows__mtv_workflow_job_templates_yml_2[workflows build mtv target workflows
include_task: mtv workflow job templates yml]:::includeTasks - workflows___Build_MTV_Target_Workflows__mtv_workflow_job_templates_yml_2-->|Task| workflows___Build_MTV_Workflow3[workflows build mtv workflow]:::task - workflows___Build_MTV_Workflow3-->|Task| workflows___Build_Migration_Factory_Workflow4[workflows build migration factory workflow]:::task - workflows___Build_Migration_Factory_Workflow4-->End + Start-->|Task| _mtv_job_templates___Configure_VMWare_MTV_Job_Template0[ mtv job templates configure vmware mtv job
template
When: **target type vmware and mtv job template
trim length 0**]:::task + _mtv_job_templates___Configure_VMWare_MTV_Job_Template0-->|Task| _mtv_job_templates___Configure_oVirt_MTV_Job_Template1[ mtv job templates configure ovirt mtv job
template
When: **target type ovirt and mtv job template
trim length 0**]:::task + _mtv_job_templates___Configure_oVirt_MTV_Job_Template1-->End ``` -### Graph for _build_credentials.yml +### Graph for main.yml ```mermaid flowchart TD @@ -1338,12 +1332,18 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include role| _build_credentials___Create_migration_factory_api_token_for__mf_host_infra_openshift_virtualization_migration_create_mf_aap_token_0( build credentials create migration factory api
token for mf host
When: **hostvars mf host openshift api key is
undefined**
include_role: infra openshift virtualization migration create mf
aap token):::includeRole - _build_credentials___Create_migration_factory_api_token_for__mf_host_infra_openshift_virtualization_migration_create_mf_aap_token_0-->|Task| _build_credentials___Set_openshift_api_key_var_on__mf_host1[ build credentials set openshift api key var on
mf host
When: **hostvars mf host openshift api key is
undefined**]:::task - _build_credentials___Set_openshift_api_key_var_on__mf_host1-->|Task| _build_credentials___Build_migration_targets2[ build credentials build migration targets
When: **mf host in groups migration spoke**]:::task - _build_credentials___Build_migration_targets2-->|Task| _build_credentials___Build_Migration_Factory_CaC_Credential_for__mf_host3[ build credentials build migration factory cac
credential for mf host
When: **mf host in groups migration spoke**]:::task - _build_credentials___Build_Migration_Factory_CaC_Credential_for__mf_host3-->|Task| _build_credentials___Build_kubeconfig_for__mf_host4[ build credentials build kubeconfig for mf host]:::task - _build_credentials___Build_kubeconfig_for__mf_host4-->End + Start-->|Task| Set_controller_configuration_vars0[set controller configuration vars]:::task + Set_controller_configuration_vars0-->|Include task| Build_Credentials_credentials_yml_1[build credentials
include_task: credentials yml]:::includeTasks + Build_Credentials_credentials_yml_1-->|Include task| Build_Job_Templates_job_templates_yml_2[build job templates
When: **aap seed job templates create default true
bool**
include_task: job templates yml]:::includeTasks + Build_Job_Templates_job_templates_yml_2-->|Include task| Build_Workflows_workflows_yml_3[build workflows
When: **aap seed workflow job templates create default
true bool**
include_task: workflows yml]:::includeTasks + Build_Workflows_workflows_yml_3-->|Task| Ensure_AAP_API_credentials_are_set4[ensure aap api credentials are set]:::task + Ensure_AAP_API_credentials_are_set4-->|Task| Check_if_both_username_password_and_token_are_defined5[check if both username password and token are
defined
When: **aap seed controller username default true
trim length 0 and aap seed controller password
default true trim length 0 and aap
seed controller token default true trim
length 0**]:::task + Check_if_both_username_password_and_token_are_defined5-->|Task| Wait_for_API_to_become_available_using_username_and_password6[wait for api to become available using username
and password
When: **aap seed controller token default true
length 0**]:::task + Wait_for_API_to_become_available_using_username_and_password6-->|Task| Wait_for_API_to_become_available_using_token7[wait for api to become available using token
When: **aap seed controller token default true
length 0**]:::task + Wait_for_API_to_become_available_using_token7-->|Task| Set_controller_configuration_vars8[set controller configuration vars]:::task + Set_controller_configuration_vars8-->|Task| Set_variables_for_aap_seed_cac_collection9[set variables for aap seed cac collection]:::task + Set_variables_for_aap_seed_cac_collection9-->|Include role| Call_dispatch_role____aap_seed_cac_collection____dispatch_10(call dispatch role
include_role: aap seed cac collection dispatch):::includeRole + Call_dispatch_role____aap_seed_cac_collection____dispatch_10-->End ``` ## Author Information diff --git a/roles/bootstrap/README.md b/roles/bootstrap/README.md index c700323..0dafb7b 100644 --- a/roles/bootstrap/README.md +++ b/roles/bootstrap/README.md @@ -128,7 +128,7 @@ Description: Initialization of the Ansible for OpenShift Virtualization Migratio ## Task Flow Graphs -### Graph for create_mf_aap_token.yml +### Graph for prep.yml ```mermaid flowchart TD @@ -142,11 +142,15 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| create_mf_aap_token___Create_API_key_for_Migration_Factory_AAP0[create mf aap token create api key for migration
factory aap]:::task - create_mf_aap_token___Create_API_key_for_Migration_Factory_AAP0-->|Task| create_mf_aap_token___Retrieve_Migration_Factory_AAP_Service_Account_API_key1[create mf aap token retrieve migration factory
aap service account api key]:::task - create_mf_aap_token___Retrieve_Migration_Factory_AAP_Service_Account_API_key1-->|Task| create_mf_aap_token___Set_fact_with_Service_Account_API_key2[create mf aap token set fact with service
account api key]:::task - create_mf_aap_token___Set_fact_with_Service_Account_API_key2-->|Task| create_mf_aap_token___Print_Migration_Factory_AAP_Service_Account_API_key3[create mf aap token print migration factory aap
service account api key]:::task - create_mf_aap_token___Print_Migration_Factory_AAP_Service_Account_API_key3-->End + Start-->|Task| prep___Register_to_Red_Hat_with_provided_credentials0[prep register to red hat with provided
credentials]:::task + prep___Register_to_Red_Hat_with_provided_credentials0-->|Task| prep___Setup_new_user1[prep setup new user]:::task + prep___Setup_new_user1-->|Task| prep___Allow_passwordless_sudo_for__bootstrap_user_2[prep allow passwordless sudo for bootstrap user
]:::task + prep___Allow_passwordless_sudo_for__bootstrap_user_2-->|Task| prep___Create_SSH_folder3[prep create ssh folder]:::task + prep___Create_SSH_folder3-->|Task| prep___Generate_an_OpenSSH_keypair_with_the_default_values4[prep generate an openssh keypair with the
default values]:::task + prep___Generate_an_OpenSSH_keypair_with_the_default_values4-->|Task| prep___Set_authorized_key_taken_from_file5[prep set authorized key taken from file]:::task + prep___Set_authorized_key_taken_from_file5-->|Task| prep___Set_SSH_config_for_this_host_to_enable_automated_install6[prep set ssh config for this host to enable
automated install]:::task + prep___Set_SSH_config_for_this_host_to_enable_automated_install6-->|Task| prep___Create_working_directory7[prep create working directory]:::task + prep___Create_working_directory7-->End ``` ### Graph for aap_subscription.yml @@ -177,7 +181,7 @@ classDef rescue stroke:#665352,stroke-width:2px; aap_subscription___Apply_license_to_AAP3-->End ``` -### Graph for main.yml +### Graph for create_mf_aap_token.yml ```mermaid flowchart TD @@ -191,11 +195,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| Subscribe_AAP_aap_subscription_yml_0[subscribe aap
include_task: aap subscription yml]:::includeTasks - Subscribe_AAP_aap_subscription_yml_0-->End + Start-->|Task| create_mf_aap_token___Create_API_key_for_Migration_Factory_AAP0[create mf aap token create api key for migration
factory aap]:::task + create_mf_aap_token___Create_API_key_for_Migration_Factory_AAP0-->|Task| create_mf_aap_token___Retrieve_Migration_Factory_AAP_Service_Account_API_key1[create mf aap token retrieve migration factory
aap service account api key]:::task + create_mf_aap_token___Retrieve_Migration_Factory_AAP_Service_Account_API_key1-->|Task| create_mf_aap_token___Set_fact_with_Service_Account_API_key2[create mf aap token set fact with service
account api key]:::task + create_mf_aap_token___Set_fact_with_Service_Account_API_key2-->|Task| create_mf_aap_token___Print_Migration_Factory_AAP_Service_Account_API_key3[create mf aap token print migration factory aap
service account api key]:::task + create_mf_aap_token___Print_Migration_Factory_AAP_Service_Account_API_key3-->End ``` -### Graph for prep.yml +### Graph for main.yml ```mermaid flowchart TD @@ -209,15 +216,8 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| prep___Register_to_Red_Hat_with_provided_credentials0[prep register to red hat with provided
credentials]:::task - prep___Register_to_Red_Hat_with_provided_credentials0-->|Task| prep___Setup_new_user1[prep setup new user]:::task - prep___Setup_new_user1-->|Task| prep___Allow_passwordless_sudo_for__bootstrap_user_2[prep allow passwordless sudo for bootstrap user
]:::task - prep___Allow_passwordless_sudo_for__bootstrap_user_2-->|Task| prep___Create_SSH_folder3[prep create ssh folder]:::task - prep___Create_SSH_folder3-->|Task| prep___Generate_an_OpenSSH_keypair_with_the_default_values4[prep generate an openssh keypair with the
default values]:::task - prep___Generate_an_OpenSSH_keypair_with_the_default_values4-->|Task| prep___Set_authorized_key_taken_from_file5[prep set authorized key taken from file]:::task - prep___Set_authorized_key_taken_from_file5-->|Task| prep___Set_SSH_config_for_this_host_to_enable_automated_install6[prep set ssh config for this host to enable
automated install]:::task - prep___Set_SSH_config_for_this_host_to_enable_automated_install6-->|Task| prep___Create_working_directory7[prep create working directory]:::task - prep___Create_working_directory7-->End + Start-->|Include task| Subscribe_AAP_aap_subscription_yml_0[subscribe aap
include_task: aap subscription yml]:::includeTasks + Subscribe_AAP_aap_subscription_yml_0-->End ``` ## Playbook diff --git a/roles/mtv_management/README.md b/roles/mtv_management/README.md index 28dba99..3a60614 100644 --- a/roles/mtv_management/README.md +++ b/roles/mtv_management/README.md @@ -265,7 +265,7 @@ Description: Management of the Migration Toolkit for Virtualization (MTV). ## Task Flow Graphs -### Graph for mtv_query_inventory.yml +### Graph for _mtv_provider_vmware.yml ```mermaid flowchart TD @@ -279,24 +279,24 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| mtv_query_inventory___Verify_valid_inventory_query_retrieval_method0[mtv query inventory verify valid inventory query
retrieval method]:::task - mtv_query_inventory___Verify_valid_inventory_query_retrieval_method0-->|Task| mtv_query_inventory___Verify_valid_query_parameters1[mtv query inventory verify valid query
parameters]:::task - mtv_query_inventory___Verify_valid_query_parameters1-->|Block Start| mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0[[mtv query inventory exec inventory retrieval
method
When: **mtv management inventory retrieval method exec
**]]:::block - mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0-->|Task| mtv_query_inventory___Obtain_the_name_of_a_Running_Forklift_Inventory_Pod0[mtv query inventory obtain the name of a running
forklift inventory pod]:::task - mtv_query_inventory___Obtain_the_name_of_a_Running_Forklift_Inventory_Pod0-->|Task| mtv_query_inventory___Set_name_of_the_MTV_Inventory_Pod1[mtv query inventory set name of the mtv
inventory pod]:::task - mtv_query_inventory___Set_name_of_the_MTV_Inventory_Pod1-->|Task| mtv_query_inventory___Execute_Query__exec_2[mtv query inventory execute query exec ]:::task - mtv_query_inventory___Execute_Query__exec_2-->|Task| mtv_query_inventory___Set_Result_Fact3[mtv query inventory set result fact]:::task - mtv_query_inventory___Set_Result_Fact3-.->|End of Block| mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0 - mtv_query_inventory___Set_Result_Fact3-->|Block Start| mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0[[mtv query inventory rest inventory retrieval
method
When: **mtv management inventory retrieval method rest
**]]:::block - mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0-->|Task| mtv_query_inventory___Locate_MTV_Route0[mtv query inventory locate mtv route
When: **forklift inventory url default true
length 0**]:::task - mtv_query_inventory___Locate_MTV_Route0-->|Task| mtv_query_inventory___Verify_route_found1[mtv query inventory verify route found]:::task - mtv_query_inventory___Verify_route_found1-->|Task| mtv_query_inventory___Execute_Query__rest_2[mtv query inventory execute query rest ]:::task - mtv_query_inventory___Execute_Query__rest_2-->|Task| mtv_query_inventory___Set_Result_Fact3[mtv query inventory set result fact]:::task - mtv_query_inventory___Set_Result_Fact3-.->|End of Block| mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0 - mtv_query_inventory___Set_Result_Fact3-->End + Start-->|Task| _mtv_provider_vmware___Verify_credential_name_provided_when_more_than_one_credential_specified0[ mtv provider vmware verify credential name
provided when more than one credential specified
When: **not single vmware target**]:::task + _mtv_provider_vmware___Verify_credential_name_provided_when_more_than_one_credential_specified0-->|Task| _mtv_provider_vmware___Set_provider_name1[ mtv provider vmware set provider name]:::task + _mtv_provider_vmware___Set_provider_name1-->|Task| _mtv_provider_vmware___Validate_required_VMware_provider_Properties2[ mtv provider vmware validate required vmware
provider properties]:::task + _mtv_provider_vmware___Validate_required_VMware_provider_Properties2-->|Task| _mtv_provider_vmware___Set_VMware_Provider_URL3[ mtv provider vmware set vmware provider url]:::task + _mtv_provider_vmware___Set_VMware_Provider_URL3-->|Block Start| _mtv_provider_vmware___MTV_Certificate4_block_start_0[[ mtv provider vmware mtv certificate
When: **not mtv management populated vmware target
insecureskiptlsverify and certificate not in
mtv management populated vmware target or mtv
management populated vmware target certificate
default trim length 0**]]:::block + _mtv_provider_vmware___MTV_Certificate4_block_start_0-->|Task| _mtv_provider_vmware___Retrieve_Remote_VMware_Provider_Certificate0[ mtv provider vmware retrieve remote vmware
provider certificate]:::task + _mtv_provider_vmware___Retrieve_Remote_VMware_Provider_Certificate0-->|Task| _mtv_provider_vmware___Set_VMware_Provider_Certificate1[ mtv provider vmware set vmware provider
certificate]:::task + _mtv_provider_vmware___Set_VMware_Provider_Certificate1-.->|End of Block| _mtv_provider_vmware___MTV_Certificate4_block_start_0 + _mtv_provider_vmware___Set_VMware_Provider_Certificate1-->|Task| _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Configuration_5[ mtv provider vmware set provider secret name
namespace configuration
When: **credentialssecretref in mtv management populated
vmware target and mtv management populated vmware
target credentialssecretref default
trim length 0**]:::task + _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Configuration_5-->|Block Start| _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0[[ mtv provider vmware configure provider secret
When: **credentialssecretref not in mtv management
populated vmware target or mtv management
populated vmware target credentialssecretref
default trim length 0**]]:::block + _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0-->|Task| _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Generated_0[ mtv provider vmware set provider secret name
namespace generated ]:::task + _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Generated_0-->|Task| _mtv_provider_vmware___Create_VMware_credentials_secret1[ mtv provider vmware create vmware credentials
secret]:::task + _mtv_provider_vmware___Create_VMware_credentials_secret1-.->|End of Block| _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0 + _mtv_provider_vmware___Create_VMware_credentials_secret1-->|Task| _mtv_provider_vmware___Create_VMware_Provider_resource7[ mtv provider vmware create vmware provider
resource]:::task + _mtv_provider_vmware___Create_VMware_Provider_resource7-->End ``` -### Graph for main.yml +### Graph for _mtv_provider_ovirt.yml ```mermaid flowchart TD @@ -310,12 +310,24 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| Configure_MTV_Providers_mtv_providers_yml_0[configure mtv providers
When: **mtv management map providers is defined and mtv
management map providers bool**
include_task: mtv providers yml]:::includeTasks - Configure_MTV_Providers_mtv_providers_yml_0-->|Include task| Configure_MTV_Maps_mtv_maps_yml_1[configure mtv maps
When: **mtv management map storage is defined and mtv
management map storage bool or mtv management
map networks is defined and mtv management map
networks bool**
include_task: mtv maps yml]:::includeTasks - Configure_MTV_Maps_mtv_maps_yml_1-->End + Start-->|Task| _mtv_provider_ovirt___Verify_credential_name_provided_when_more_than_one_credential_specified0[ mtv provider ovirt verify credential name
provided when more than one credential specified
When: **not single ovirt target**]:::task + _mtv_provider_ovirt___Verify_credential_name_provided_when_more_than_one_credential_specified0-->|Task| _mtv_provider_ovirt___Set_provider_name1[ mtv provider ovirt set provider name]:::task + _mtv_provider_ovirt___Set_provider_name1-->|Task| _mtv_provider_ovirt___Validate_required_Ovirt_provider_Properties2[ mtv provider ovirt validate required ovirt
provider properties]:::task + _mtv_provider_ovirt___Validate_required_Ovirt_provider_Properties2-->|Task| _mtv_provider_ovirt___Set_Ovirt_Provider_URL3[ mtv provider ovirt set ovirt provider url]:::task + _mtv_provider_ovirt___Set_Ovirt_Provider_URL3-->|Block Start| _mtv_provider_ovirt___MTV_Certificate4_block_start_0[[ mtv provider ovirt mtv certificate
When: **certificate not in mtv management populated
ovirt target or mtv management populated ovirt
target certificate default trim
length 0**]]:::block + _mtv_provider_ovirt___MTV_Certificate4_block_start_0-->|Task| _mtv_provider_ovirt___Retrieve_Remote_Ovirt_Provider_Certificate0[ mtv provider ovirt retrieve remote ovirt
provider certificate]:::task + _mtv_provider_ovirt___Retrieve_Remote_Ovirt_Provider_Certificate0-->|Task| _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1[ mtv provider ovirt set ovirt provider
certificate]:::task + _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1-.->|End of Block| _mtv_provider_ovirt___MTV_Certificate4_block_start_0 + _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1-->|Task| _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Configuration_5[ mtv provider ovirt set provider secret name
namespace configuration
When: **credentialssecretref in mtv management populated
ovirt target and mtv management populated ovirt
target credentialssecretref default
trim length 0**]:::task + _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Configuration_5-->|Block Start| _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0[[ mtv provider ovirt configure provider secret
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]]:::block + _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0-->|Task| _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Generated_0[ mtv provider ovirt set provider secret name
namespace generated
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]:::task + _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Generated_0-->|Task| _mtv_provider_ovirt___Create_Ovirt_credentials_secret1[ mtv provider ovirt create ovirt credentials
secret
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]:::task + _mtv_provider_ovirt___Create_Ovirt_credentials_secret1-.->|End of Block| _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0 + _mtv_provider_ovirt___Create_Ovirt_credentials_secret1-->|Task| _mtv_provider_ovirt___Create_Ovirt_Provider_resource7[ mtv provider ovirt create ovirt provider
resource]:::task + _mtv_provider_ovirt___Create_Ovirt_Provider_resource7-->End ``` -### Graph for _mtv_storage_map.yml +### Graph for mtv_query_inventory.yml ```mermaid flowchart TD @@ -329,20 +341,24 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_storage_map___Initialize_data_structures0[ mtv storage map initialize data structures]:::task - _mtv_storage_map___Initialize_data_structures0-->|Task| _mtv_storage_map___Verify_Storage_Map_Overrides_do_not_contain_both_includes_and_excludes1[ mtv storage map verify storage map overrides do
not contain both includes and excludes
When: **mtv management storage map overrides is defined
and mtv management storage map overrides
selectattr include defined list length
0 and mtv management storage map overrides
selectattr exclude defined list length
0**]:::task - _mtv_storage_map___Verify_Storage_Map_Overrides_do_not_contain_both_includes_and_excludes1-->|Include task| _mtv_storage_map___Query_for_Storage_Classes_from_Destination_Provider_mtv_query_inventory_yml_2[ mtv storage map query for storage classes from
destination provider
include_task: mtv query inventory yml]:::includeTasks - _mtv_storage_map___Query_for_Storage_Classes_from_Destination_Provider_mtv_query_inventory_yml_2-->|Task| _mtv_storage_map___Determine_Destination_Storage_Class3[ mtv storage map determine destination storage
class
When: **mtv management default storage class is not
defined or mtv management default storage class
default true trim length 0 and item
object metadata annotations is defined and item
object metadata annotations storageclass
kubernetes io is default class default false
string lower true**]:::task - _mtv_storage_map___Determine_Destination_Storage_Class3-->|Include task| _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_4[ mtv storage map query for datastores from
destination provider
When: **ovirt in provider**
include_task: mtv query inventory yml]:::includeTasks - _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_4-->|Include task| _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_5[ mtv storage map query for datastores from
destination provider
When: **vsphere in provider**
include_task: mtv query inventory yml]:::includeTasks - _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_5-->|Include task| _mtv_storage_map___Process_VMware_Datastores__mtv_storage_map_process_datastore_yml_6[ mtv storage map process vmware datastores
When: **vsphere in provider and mtv destination
datastores is defined and mtv destination
datastores length 0**
include_task: mtv storage map process datastore yml]:::includeTasks - _mtv_storage_map___Process_VMware_Datastores__mtv_storage_map_process_datastore_yml_6-->|Include task| _mtv_storage_map___Process_Ovirt_Datastores__mtv_storage_map_process_datastore_yml_7[ mtv storage map process ovirt datastores
When: **ovirt in provider and mtv destination datastores
is defined and mtv destination datastores length
0**
include_task: mtv storage map process datastore yml]:::includeTasks - _mtv_storage_map___Process_Ovirt_Datastores__mtv_storage_map_process_datastore_yml_7-->|Task| _mtv_storage_map___Template_StorageMap_Map8[ mtv storage map template storagemap map]:::task - _mtv_storage_map___Template_StorageMap_Map8-->|Task| _mtv_storage_map___Create_Storage_Map9[ mtv storage map create storage map]:::task - _mtv_storage_map___Create_Storage_Map9-->End + Start-->|Task| mtv_query_inventory___Verify_valid_inventory_query_retrieval_method0[mtv query inventory verify valid inventory query
retrieval method]:::task + mtv_query_inventory___Verify_valid_inventory_query_retrieval_method0-->|Task| mtv_query_inventory___Verify_valid_query_parameters1[mtv query inventory verify valid query
parameters]:::task + mtv_query_inventory___Verify_valid_query_parameters1-->|Block Start| mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0[[mtv query inventory exec inventory retrieval
method
When: **mtv management inventory retrieval method exec
**]]:::block + mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0-->|Task| mtv_query_inventory___Obtain_the_name_of_a_Running_Forklift_Inventory_Pod0[mtv query inventory obtain the name of a running
forklift inventory pod]:::task + mtv_query_inventory___Obtain_the_name_of_a_Running_Forklift_Inventory_Pod0-->|Task| mtv_query_inventory___Set_name_of_the_MTV_Inventory_Pod1[mtv query inventory set name of the mtv
inventory pod]:::task + mtv_query_inventory___Set_name_of_the_MTV_Inventory_Pod1-->|Task| mtv_query_inventory___Execute_Query__exec_2[mtv query inventory execute query exec ]:::task + mtv_query_inventory___Execute_Query__exec_2-->|Task| mtv_query_inventory___Set_Result_Fact3[mtv query inventory set result fact]:::task + mtv_query_inventory___Set_Result_Fact3-.->|End of Block| mtv_query_inventory___Exec_inventory_retrieval_method2_block_start_0 + mtv_query_inventory___Set_Result_Fact3-->|Block Start| mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0[[mtv query inventory rest inventory retrieval
method
When: **mtv management inventory retrieval method rest
**]]:::block + mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0-->|Task| mtv_query_inventory___Locate_MTV_Route0[mtv query inventory locate mtv route
When: **forklift inventory url default true
length 0**]:::task + mtv_query_inventory___Locate_MTV_Route0-->|Task| mtv_query_inventory___Verify_route_found1[mtv query inventory verify route found]:::task + mtv_query_inventory___Verify_route_found1-->|Task| mtv_query_inventory___Execute_Query__rest_2[mtv query inventory execute query rest ]:::task + mtv_query_inventory___Execute_Query__rest_2-->|Task| mtv_query_inventory___Set_Result_Fact3[mtv query inventory set result fact]:::task + mtv_query_inventory___Set_Result_Fact3-.->|End of Block| mtv_query_inventory___Rest_inventory_retrieval_method3_block_start_0 + mtv_query_inventory___Set_Result_Fact3-->End ``` -### Graph for _mtv_storage_map_process_datastore.yml +### Graph for _mtv_network_map_process_network.yml ```mermaid flowchart TD @@ -356,19 +372,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_storage_map_process_datastore___Set_VMware_StorageMap_Variables0[ mtv storage map process datastore set vmware
storagemap variables
When: **mtv vmware datastore is defined**]:::task - _mtv_storage_map_process_datastore___Set_VMware_StorageMap_Variables0-->|Task| _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_Variables1[ mtv storage map process datastore set ovirt
storagemap variables
When: **mtv ovirt datastore is defined**]:::task - _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_Variables1-->|Task| _mtv_storage_map_process_datastore___Set_VMware_StorageMap_StorageClass_from_Overrides2[ mtv storage map process datastore set vmware
storagemap storageclass from overrides
When: **mtv vmware datastore is defined and storageclass
in mtv management mtv vmware datastore overrides
and mtv management mtv vmware datastore overrides
storageclass default true trim length
0**]:::task - _mtv_storage_map_process_datastore___Set_VMware_StorageMap_StorageClass_from_Overrides2-->|Task| _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_StorageClass_from_Overrides3[ mtv storage map process datastore set ovirt
storagemap storageclass from overrides
When: **mtv ovirt datastore is defined and storageclass
in mtv management mtv ovirt datastore overrides
and mtv management mtv ovirt datastore overrides
storageclass default true trim length
0**]:::task - _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_StorageClass_from_Overrides3-->|Task| _mtv_storage_map_process_datastore___Verify_VMWare_Destination_Storage_Class4[ mtv storage map process datastore verify vmware
destination storage class
When: **mtv vmware datastore is defined**]:::task - _mtv_storage_map_process_datastore___Verify_VMWare_Destination_Storage_Class4-->|Task| _mtv_storage_map_process_datastore___Verify_Ovirt_Destination_Storage_Class5[ mtv storage map process datastore verify ovirt
destination storage class
When: **mtv ovirt datastore is defined**]:::task - _mtv_storage_map_process_datastore___Verify_Ovirt_Destination_Storage_Class5-->|Task| _mtv_storage_map_process_datastore___Template_StorageMap_Map6[ mtv storage map process datastore template
storagemap map]:::task - _mtv_storage_map_process_datastore___Template_StorageMap_Map6-->|Task| _mtv_storage_map_process_datastore___Add_VMware_StorageMap_Map_to_Dict7[ mtv storage map process datastore add vmware
storagemap map to dict
When: **mtv vmware datastore is defined and include in
mtv management mtv vmware datastore overrides and
mtv management storage map overrides selectattr
include defined list length 0 or mtv
management storage map overrides selectattr
include defined list length 0 and mtv
management storage map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv vmware
datastore overrides and mtv management storage map
overrides selectattr exclude defined
list length 0**]:::task - _mtv_storage_map_process_datastore___Add_VMware_StorageMap_Map_to_Dict7-->|Task| _mtv_storage_map_process_datastore___Add_Ovirt_StorageMap_Map_to_Dict8[ mtv storage map process datastore add ovirt
storagemap map to dict
When: **mtv ovirt datastore is defined and include in
mtv management mtv ovirt datastore overrides and
mtv management storage map overrides selectattr
include defined list length 0 or mtv
management storage map overrides selectattr
include defined list length 0 and mtv
management storage map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv ovirt datastore
overrides and mtv management storage map overrides
selectattr exclude defined list length
0**]:::task - _mtv_storage_map_process_datastore___Add_Ovirt_StorageMap_Map_to_Dict8-->End + Start-->|Task| _mtv_network_map_process_network___Set_VMware_NetworkMap_Variables0[ mtv network map process network set vmware
networkmap variables
When: **mtv vmware network is defined**]:::task + _mtv_network_map_process_network___Set_VMware_NetworkMap_Variables0-->|Task| _mtv_network_map_process_network___Set_Ovirt_NetworkMap_Variables1[ mtv network map process network set ovirt
networkmap variables
When: **mtv ovirt network is defined**]:::task + _mtv_network_map_process_network___Set_Ovirt_NetworkMap_Variables1-->|Task| _mtv_network_map_process_network___Locate_VMware_NetworkAttachmentDefinition2[ mtv network map process network locate vmware
networkattachmentdefinition
When: **mtv vmware network is defined**]:::task + _mtv_network_map_process_network___Locate_VMware_NetworkAttachmentDefinition2-->|Task| _mtv_network_map_process_network___Locate_Ovirt_NetworkAttachmentDefinition3[ mtv network map process network locate ovirt
networkattachmentdefinition
When: **mtv ovirt network is defined**]:::task + _mtv_network_map_process_network___Locate_Ovirt_NetworkAttachmentDefinition3-->|Task| _mtv_network_map_process_network___Validate_Found_VMware_NetworkAttachmentDefinitions4[ mtv network map process network validate found
vmware networkattachmentdefinitions
When: **mtv vmware network is defined**]:::task + _mtv_network_map_process_network___Validate_Found_VMware_NetworkAttachmentDefinitions4-->|Task| _mtv_network_map_process_network___Validate_Found_Ovirt_NetworkAttachmentDefinitions5[ mtv network map process network validate found
ovirt networkattachmentdefinitions
When: **mtv ovirt network is defined**]:::task + _mtv_network_map_process_network___Validate_Found_Ovirt_NetworkAttachmentDefinitions5-->|Task| _mtv_network_map_process_network___Template_NetworkMap_Map6[ mtv network map process network template
networkmap map]:::task + _mtv_network_map_process_network___Template_NetworkMap_Map6-->|Task| _mtv_network_map_process_network___Add_VMWare_NetworkMaps_Map_to_Dict7[ mtv network map process network add vmware
networkmaps map to dict
When: **mtv vmware network is defined and include in
mtv management mtv vmware network overrides and
mtv management network map overrides selectattr
include defined list length 0 or mtv
management network map overrides selectattr
include defined list length 0 and mtv
management network map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv vmware network
overrides and mtv management network map overrides
selectattr exclude defined list length
0**]:::task + _mtv_network_map_process_network___Add_VMWare_NetworkMaps_Map_to_Dict7-->|Task| _mtv_network_map_process_network___Add_Ovirt_NetworkMaps_Map_to_Dict8[ mtv network map process network add ovirt
networkmaps map to dict
When: **mtv ovirt network is defined and include in
mtv management mtv ovirt network overrides and mtv
management network map overrides selectattr
include defined list length 0 or mtv
management network map overrides selectattr
include defined list length 0 and mtv
management network map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv ovirt network
overrides and mtv management network map overrides
selectattr exclude defined list length
0**]:::task + _mtv_network_map_process_network___Add_Ovirt_NetworkMaps_Map_to_Dict8-->End ``` -### Graph for _mtv_provider_ovirt.yml +### Graph for _mtv_network_map.yml ```mermaid flowchart TD @@ -382,24 +398,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_provider_ovirt___Verify_credential_name_provided_when_more_than_one_credential_specified0[ mtv provider ovirt verify credential name
provided when more than one credential specified
When: **not single ovirt target**]:::task - _mtv_provider_ovirt___Verify_credential_name_provided_when_more_than_one_credential_specified0-->|Task| _mtv_provider_ovirt___Set_provider_name1[ mtv provider ovirt set provider name]:::task - _mtv_provider_ovirt___Set_provider_name1-->|Task| _mtv_provider_ovirt___Validate_required_Ovirt_provider_Properties2[ mtv provider ovirt validate required ovirt
provider properties]:::task - _mtv_provider_ovirt___Validate_required_Ovirt_provider_Properties2-->|Task| _mtv_provider_ovirt___Set_Ovirt_Provider_URL3[ mtv provider ovirt set ovirt provider url]:::task - _mtv_provider_ovirt___Set_Ovirt_Provider_URL3-->|Block Start| _mtv_provider_ovirt___MTV_Certificate4_block_start_0[[ mtv provider ovirt mtv certificate
When: **certificate not in mtv management populated
ovirt target or mtv management populated ovirt
target certificate default trim
length 0**]]:::block - _mtv_provider_ovirt___MTV_Certificate4_block_start_0-->|Task| _mtv_provider_ovirt___Retrieve_Remote_Ovirt_Provider_Certificate0[ mtv provider ovirt retrieve remote ovirt
provider certificate]:::task - _mtv_provider_ovirt___Retrieve_Remote_Ovirt_Provider_Certificate0-->|Task| _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1[ mtv provider ovirt set ovirt provider
certificate]:::task - _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1-.->|End of Block| _mtv_provider_ovirt___MTV_Certificate4_block_start_0 - _mtv_provider_ovirt___Set_Ovirt_Provider_Certificate1-->|Task| _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Configuration_5[ mtv provider ovirt set provider secret name
namespace configuration
When: **credentialssecretref in mtv management populated
ovirt target and mtv management populated ovirt
target credentialssecretref default
trim length 0**]:::task - _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Configuration_5-->|Block Start| _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0[[ mtv provider ovirt configure provider secret
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]]:::block - _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0-->|Task| _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Generated_0[ mtv provider ovirt set provider secret name
namespace generated
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]:::task - _mtv_provider_ovirt___Set_Provider_Secret_Name_Namespace__Generated_0-->|Task| _mtv_provider_ovirt___Create_Ovirt_credentials_secret1[ mtv provider ovirt create ovirt credentials
secret
When: **credentialssecretref not in mtv management
populated ovirt target or mtv management
populated ovirt target credentialssecretref
default trim length 0**]:::task - _mtv_provider_ovirt___Create_Ovirt_credentials_secret1-.->|End of Block| _mtv_provider_ovirt___Configure_Provider_Secret6_block_start_0 - _mtv_provider_ovirt___Create_Ovirt_credentials_secret1-->|Task| _mtv_provider_ovirt___Create_Ovirt_Provider_resource7[ mtv provider ovirt create ovirt provider
resource]:::task - _mtv_provider_ovirt___Create_Ovirt_Provider_resource7-->End + Start-->|Task| _mtv_network_map___Initialize_data_structures0[ mtv network map initialize data structures]:::task + _mtv_network_map___Initialize_data_structures0-->|Task| _mtv_network_map___Verify_Network_Map_Overrides_do_not_contain_both_includes_and_excludes1[ mtv network map verify network map overrides do
not contain both includes and excludes
When: **mtv management network map overrides is defined
and mtv management network map overrides
selectattr include defined list length
0 and mtv management network map overrides
selectattr exclude defined list length
0**]:::task + _mtv_network_map___Verify_Network_Map_Overrides_do_not_contain_both_includes_and_excludes1-->|Include task| _mtv_network_map___Query_for_VMWare_Networks_from_Source_Provider_mtv_query_inventory_yml_2[ mtv network map query for vmware networks from
source provider
When: **vsphere in provider**
include_task: mtv query inventory yml]:::includeTasks + _mtv_network_map___Query_for_VMWare_Networks_from_Source_Provider_mtv_query_inventory_yml_2-->|Include task| _mtv_network_map___Query_for_Ovirt_Networks_from_Source_Provider_mtv_query_inventory_yml_3[ mtv network map query for ovirt networks from
source provider
When: **ovirt in provider**
include_task: mtv query inventory yml]:::includeTasks + _mtv_network_map___Query_for_Ovirt_Networks_from_Source_Provider_mtv_query_inventory_yml_3-->|Include task| _mtv_network_map___Query_for_NetworkAttachmentDefinitions_from_Destination_Provider_mtv_query_inventory_yml_4[ mtv network map query for
networkattachmentdefinitions from destination
provider
include_task: mtv query inventory yml]:::includeTasks + _mtv_network_map___Query_for_NetworkAttachmentDefinitions_from_Destination_Provider_mtv_query_inventory_yml_4-->|Include task| _mtv_network_map___Process_VMware_Networks__mtv_network_map_process_network_yml_5[ mtv network map process vmware networks
When: **vsphere in provider and mtv networks is defined
and mtv networks length 0**
include_task: mtv network map process network yml]:::includeTasks + _mtv_network_map___Process_VMware_Networks__mtv_network_map_process_network_yml_5-->|Include task| _mtv_network_map___Process_Ovirt_Networks__mtv_network_map_process_network_yml_6[ mtv network map process ovirt networks
When: **ovirt in provider and mtv networks is defined
and mtv networks length 0**
include_task: mtv network map process network yml]:::includeTasks + _mtv_network_map___Process_Ovirt_Networks__mtv_network_map_process_network_yml_6-->|Task| _mtv_network_map___Template_NetworkMap_Map7[ mtv network map template networkmap map]:::task + _mtv_network_map___Template_NetworkMap_Map7-->|Task| _mtv_network_map___Create_Network_Map8[ mtv network map create network map]:::task + _mtv_network_map___Create_Network_Map8-->End ``` -### Graph for mtv_providers.yml +### Graph for mtv_maps.yml ```mermaid flowchart TD @@ -413,11 +424,13 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| mtv_providers___Verify_ForkliftController_status0[mtv providers verify forkliftcontroller status
When: **mtv management migration targets default
length 0**]:::task - mtv_providers___Verify_ForkliftController_status0-->|Task| mtv_providers___Debug1[mtv providers debug]:::task - mtv_providers___Debug1-->|Include task| mtv_providers___Configure_vmware_providers__mtv_provider_vmware_yml_2[mtv providers configure vmware providers
When: **mtv management migration targets is defined and
mtv management migration targets selectattr
type equalto vmware list length 0**
include_task: mtv provider vmware yml]:::includeTasks - mtv_providers___Configure_vmware_providers__mtv_provider_vmware_yml_2-->|Include task| mtv_providers___Configure_ovirt_providers__mtv_provider_ovirt_yml_3[mtv providers configure ovirt providers
When: **mtv management migration targets is defined and
mtv management migration targets selectattr
type equalto ovirt list length 0**
include_task: mtv provider ovirt yml]:::includeTasks - mtv_providers___Configure_ovirt_providers__mtv_provider_ovirt_yml_3-->End + Start-->|Include task| mtv_maps___Retrieve_Configured_providers_mtv_query_inventory_yml_0[mtv maps retrieve configured providers
include_task: mtv query inventory yml]:::includeTasks + mtv_maps___Retrieve_Configured_providers_mtv_query_inventory_yml_0-->|Task| mtv_maps___Verify_VMWare_Source_Provider_Exists1[mtv maps verify vmware source provider exists
When: **vsphere in provider**]:::task + mtv_maps___Verify_VMWare_Source_Provider_Exists1-->|Task| mtv_maps___Verify_Ovirt_Source_Provider_Exists2[mtv maps verify ovirt source provider exists
When: **ovirt in provider**]:::task + mtv_maps___Verify_Ovirt_Source_Provider_Exists2-->|Task| mtv_maps___Destination_OpenShift_Destination_Provider_Exists3[mtv maps destination openshift destination
provider exists]:::task + mtv_maps___Destination_OpenShift_Destination_Provider_Exists3-->|Include task| mtv_maps___Configure_MTV_Storage_Maps__mtv_storage_map_yml_4[mtv maps configure mtv storage maps
When: **mtv management map storage is defined and mtv
management map storage bool**
include_task: mtv storage map yml]:::includeTasks + mtv_maps___Configure_MTV_Storage_Maps__mtv_storage_map_yml_4-->|Include task| mtv_maps___Configure_MTV_Network_Map__mtv_network_map_yml_5[mtv maps configure mtv network map
When: **mtv management map networks is defined and mtv
management map networks bool**
include_task: mtv network map yml]:::includeTasks + mtv_maps___Configure_MTV_Network_Map__mtv_network_map_yml_5-->End ``` ### Graph for mtv_vddk.yml @@ -447,7 +460,7 @@ classDef rescue stroke:#665352,stroke-width:2px; mtv_vddk___Patch_Service_Account_with_VDDK_pull_secret5-->End ``` -### Graph for _mtv_network_map_process_network.yml +### Graph for _mtv_storage_map.yml ```mermaid flowchart TD @@ -461,19 +474,20 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_network_map_process_network___Set_VMware_NetworkMap_Variables0[ mtv network map process network set vmware
networkmap variables
When: **mtv vmware network is defined**]:::task - _mtv_network_map_process_network___Set_VMware_NetworkMap_Variables0-->|Task| _mtv_network_map_process_network___Set_Ovirt_NetworkMap_Variables1[ mtv network map process network set ovirt
networkmap variables
When: **mtv ovirt network is defined**]:::task - _mtv_network_map_process_network___Set_Ovirt_NetworkMap_Variables1-->|Task| _mtv_network_map_process_network___Locate_VMware_NetworkAttachmentDefinition2[ mtv network map process network locate vmware
networkattachmentdefinition
When: **mtv vmware network is defined**]:::task - _mtv_network_map_process_network___Locate_VMware_NetworkAttachmentDefinition2-->|Task| _mtv_network_map_process_network___Locate_Ovirt_NetworkAttachmentDefinition3[ mtv network map process network locate ovirt
networkattachmentdefinition
When: **mtv ovirt network is defined**]:::task - _mtv_network_map_process_network___Locate_Ovirt_NetworkAttachmentDefinition3-->|Task| _mtv_network_map_process_network___Validate_Found_VMware_NetworkAttachmentDefinitions4[ mtv network map process network validate found
vmware networkattachmentdefinitions
When: **mtv vmware network is defined**]:::task - _mtv_network_map_process_network___Validate_Found_VMware_NetworkAttachmentDefinitions4-->|Task| _mtv_network_map_process_network___Validate_Found_Ovirt_NetworkAttachmentDefinitions5[ mtv network map process network validate found
ovirt networkattachmentdefinitions
When: **mtv ovirt network is defined**]:::task - _mtv_network_map_process_network___Validate_Found_Ovirt_NetworkAttachmentDefinitions5-->|Task| _mtv_network_map_process_network___Template_NetworkMap_Map6[ mtv network map process network template
networkmap map]:::task - _mtv_network_map_process_network___Template_NetworkMap_Map6-->|Task| _mtv_network_map_process_network___Add_VMWare_NetworkMaps_Map_to_Dict7[ mtv network map process network add vmware
networkmaps map to dict
When: **mtv vmware network is defined and include in
mtv management mtv vmware network overrides and
mtv management network map overrides selectattr
include defined list length 0 or mtv
management network map overrides selectattr
include defined list length 0 and mtv
management network map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv vmware network
overrides and mtv management network map overrides
selectattr exclude defined list length
0**]:::task - _mtv_network_map_process_network___Add_VMWare_NetworkMaps_Map_to_Dict7-->|Task| _mtv_network_map_process_network___Add_Ovirt_NetworkMaps_Map_to_Dict8[ mtv network map process network add ovirt
networkmaps map to dict
When: **mtv ovirt network is defined and include in
mtv management mtv ovirt network overrides and mtv
management network map overrides selectattr
include defined list length 0 or mtv
management network map overrides selectattr
include defined list length 0 and mtv
management network map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv ovirt network
overrides and mtv management network map overrides
selectattr exclude defined list length
0**]:::task - _mtv_network_map_process_network___Add_Ovirt_NetworkMaps_Map_to_Dict8-->End + Start-->|Task| _mtv_storage_map___Initialize_data_structures0[ mtv storage map initialize data structures]:::task + _mtv_storage_map___Initialize_data_structures0-->|Task| _mtv_storage_map___Verify_Storage_Map_Overrides_do_not_contain_both_includes_and_excludes1[ mtv storage map verify storage map overrides do
not contain both includes and excludes
When: **mtv management storage map overrides is defined
and mtv management storage map overrides
selectattr include defined list length
0 and mtv management storage map overrides
selectattr exclude defined list length
0**]:::task + _mtv_storage_map___Verify_Storage_Map_Overrides_do_not_contain_both_includes_and_excludes1-->|Include task| _mtv_storage_map___Query_for_Storage_Classes_from_Destination_Provider_mtv_query_inventory_yml_2[ mtv storage map query for storage classes from
destination provider
include_task: mtv query inventory yml]:::includeTasks + _mtv_storage_map___Query_for_Storage_Classes_from_Destination_Provider_mtv_query_inventory_yml_2-->|Task| _mtv_storage_map___Determine_Destination_Storage_Class3[ mtv storage map determine destination storage
class
When: **mtv management default storage class is not
defined or mtv management default storage class
default true trim length 0 and item
object metadata annotations is defined and item
object metadata annotations storageclass
kubernetes io is default class default false
string lower true**]:::task + _mtv_storage_map___Determine_Destination_Storage_Class3-->|Include task| _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_4[ mtv storage map query for datastores from
destination provider
When: **ovirt in provider**
include_task: mtv query inventory yml]:::includeTasks + _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_4-->|Include task| _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_5[ mtv storage map query for datastores from
destination provider
When: **vsphere in provider**
include_task: mtv query inventory yml]:::includeTasks + _mtv_storage_map___Query_for_Datastores_from_Destination_Provider_mtv_query_inventory_yml_5-->|Include task| _mtv_storage_map___Process_VMware_Datastores__mtv_storage_map_process_datastore_yml_6[ mtv storage map process vmware datastores
When: **vsphere in provider and mtv destination
datastores is defined and mtv destination
datastores length 0**
include_task: mtv storage map process datastore yml]:::includeTasks + _mtv_storage_map___Process_VMware_Datastores__mtv_storage_map_process_datastore_yml_6-->|Include task| _mtv_storage_map___Process_Ovirt_Datastores__mtv_storage_map_process_datastore_yml_7[ mtv storage map process ovirt datastores
When: **ovirt in provider and mtv destination datastores
is defined and mtv destination datastores length
0**
include_task: mtv storage map process datastore yml]:::includeTasks + _mtv_storage_map___Process_Ovirt_Datastores__mtv_storage_map_process_datastore_yml_7-->|Task| _mtv_storage_map___Template_StorageMap_Map8[ mtv storage map template storagemap map]:::task + _mtv_storage_map___Template_StorageMap_Map8-->|Task| _mtv_storage_map___Create_Storage_Map9[ mtv storage map create storage map]:::task + _mtv_storage_map___Create_Storage_Map9-->End ``` -### Graph for mtv_maps.yml +### Graph for _mtv_storage_map_process_datastore.yml ```mermaid flowchart TD @@ -487,16 +501,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| mtv_maps___Retrieve_Configured_providers_mtv_query_inventory_yml_0[mtv maps retrieve configured providers
include_task: mtv query inventory yml]:::includeTasks - mtv_maps___Retrieve_Configured_providers_mtv_query_inventory_yml_0-->|Task| mtv_maps___Verify_VMWare_Source_Provider_Exists1[mtv maps verify vmware source provider exists
When: **vsphere in provider**]:::task - mtv_maps___Verify_VMWare_Source_Provider_Exists1-->|Task| mtv_maps___Verify_Ovirt_Source_Provider_Exists2[mtv maps verify ovirt source provider exists
When: **ovirt in provider**]:::task - mtv_maps___Verify_Ovirt_Source_Provider_Exists2-->|Task| mtv_maps___Destination_OpenShift_Destination_Provider_Exists3[mtv maps destination openshift destination
provider exists]:::task - mtv_maps___Destination_OpenShift_Destination_Provider_Exists3-->|Include task| mtv_maps___Configure_MTV_Storage_Maps__mtv_storage_map_yml_4[mtv maps configure mtv storage maps
When: **mtv management map storage is defined and mtv
management map storage bool**
include_task: mtv storage map yml]:::includeTasks - mtv_maps___Configure_MTV_Storage_Maps__mtv_storage_map_yml_4-->|Include task| mtv_maps___Configure_MTV_Network_Map__mtv_network_map_yml_5[mtv maps configure mtv network map
When: **mtv management map networks is defined and mtv
management map networks bool**
include_task: mtv network map yml]:::includeTasks - mtv_maps___Configure_MTV_Network_Map__mtv_network_map_yml_5-->End + Start-->|Task| _mtv_storage_map_process_datastore___Set_VMware_StorageMap_Variables0[ mtv storage map process datastore set vmware
storagemap variables
When: **mtv vmware datastore is defined**]:::task + _mtv_storage_map_process_datastore___Set_VMware_StorageMap_Variables0-->|Task| _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_Variables1[ mtv storage map process datastore set ovirt
storagemap variables
When: **mtv ovirt datastore is defined**]:::task + _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_Variables1-->|Task| _mtv_storage_map_process_datastore___Set_VMware_StorageMap_StorageClass_from_Overrides2[ mtv storage map process datastore set vmware
storagemap storageclass from overrides
When: **mtv vmware datastore is defined and storageclass
in mtv management mtv vmware datastore overrides
and mtv management mtv vmware datastore overrides
storageclass default true trim length
0**]:::task + _mtv_storage_map_process_datastore___Set_VMware_StorageMap_StorageClass_from_Overrides2-->|Task| _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_StorageClass_from_Overrides3[ mtv storage map process datastore set ovirt
storagemap storageclass from overrides
When: **mtv ovirt datastore is defined and storageclass
in mtv management mtv ovirt datastore overrides
and mtv management mtv ovirt datastore overrides
storageclass default true trim length
0**]:::task + _mtv_storage_map_process_datastore___Set_Ovirt_StorageMap_StorageClass_from_Overrides3-->|Task| _mtv_storage_map_process_datastore___Verify_VMWare_Destination_Storage_Class4[ mtv storage map process datastore verify vmware
destination storage class
When: **mtv vmware datastore is defined**]:::task + _mtv_storage_map_process_datastore___Verify_VMWare_Destination_Storage_Class4-->|Task| _mtv_storage_map_process_datastore___Verify_Ovirt_Destination_Storage_Class5[ mtv storage map process datastore verify ovirt
destination storage class
When: **mtv ovirt datastore is defined**]:::task + _mtv_storage_map_process_datastore___Verify_Ovirt_Destination_Storage_Class5-->|Task| _mtv_storage_map_process_datastore___Template_StorageMap_Map6[ mtv storage map process datastore template
storagemap map]:::task + _mtv_storage_map_process_datastore___Template_StorageMap_Map6-->|Task| _mtv_storage_map_process_datastore___Add_VMware_StorageMap_Map_to_Dict7[ mtv storage map process datastore add vmware
storagemap map to dict
When: **mtv vmware datastore is defined and include in
mtv management mtv vmware datastore overrides and
mtv management storage map overrides selectattr
include defined list length 0 or mtv
management storage map overrides selectattr
include defined list length 0 and mtv
management storage map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv vmware
datastore overrides and mtv management storage map
overrides selectattr exclude defined
list length 0**]:::task + _mtv_storage_map_process_datastore___Add_VMware_StorageMap_Map_to_Dict7-->|Task| _mtv_storage_map_process_datastore___Add_Ovirt_StorageMap_Map_to_Dict8[ mtv storage map process datastore add ovirt
storagemap map to dict
When: **mtv ovirt datastore is defined and include in
mtv management mtv ovirt datastore overrides and
mtv management storage map overrides selectattr
include defined list length 0 or mtv
management storage map overrides selectattr
include defined list length 0 and mtv
management storage map overrides selectattr
exclude defined list length 0 or
exclude not in mtv management mtv ovirt datastore
overrides and mtv management storage map overrides
selectattr exclude defined list length
0**]:::task + _mtv_storage_map_process_datastore___Add_Ovirt_StorageMap_Map_to_Dict8-->End ``` -### Graph for _mtv_provider_vmware.yml +### Graph for mtv_providers.yml ```mermaid flowchart TD @@ -510,24 +527,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_provider_vmware___Verify_credential_name_provided_when_more_than_one_credential_specified0[ mtv provider vmware verify credential name
provided when more than one credential specified
When: **not single vmware target**]:::task - _mtv_provider_vmware___Verify_credential_name_provided_when_more_than_one_credential_specified0-->|Task| _mtv_provider_vmware___Set_provider_name1[ mtv provider vmware set provider name]:::task - _mtv_provider_vmware___Set_provider_name1-->|Task| _mtv_provider_vmware___Validate_required_VMware_provider_Properties2[ mtv provider vmware validate required vmware
provider properties]:::task - _mtv_provider_vmware___Validate_required_VMware_provider_Properties2-->|Task| _mtv_provider_vmware___Set_VMware_Provider_URL3[ mtv provider vmware set vmware provider url]:::task - _mtv_provider_vmware___Set_VMware_Provider_URL3-->|Block Start| _mtv_provider_vmware___MTV_Certificate4_block_start_0[[ mtv provider vmware mtv certificate
When: **not mtv management populated vmware target
insecureskiptlsverify and certificate not in
mtv management populated vmware target or mtv
management populated vmware target certificate
default trim length 0**]]:::block - _mtv_provider_vmware___MTV_Certificate4_block_start_0-->|Task| _mtv_provider_vmware___Retrieve_Remote_VMware_Provider_Certificate0[ mtv provider vmware retrieve remote vmware
provider certificate]:::task - _mtv_provider_vmware___Retrieve_Remote_VMware_Provider_Certificate0-->|Task| _mtv_provider_vmware___Set_VMware_Provider_Certificate1[ mtv provider vmware set vmware provider
certificate]:::task - _mtv_provider_vmware___Set_VMware_Provider_Certificate1-.->|End of Block| _mtv_provider_vmware___MTV_Certificate4_block_start_0 - _mtv_provider_vmware___Set_VMware_Provider_Certificate1-->|Task| _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Configuration_5[ mtv provider vmware set provider secret name
namespace configuration
When: **credentialssecretref in mtv management populated
vmware target and mtv management populated vmware
target credentialssecretref default
trim length 0**]:::task - _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Configuration_5-->|Block Start| _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0[[ mtv provider vmware configure provider secret
When: **credentialssecretref not in mtv management
populated vmware target or mtv management
populated vmware target credentialssecretref
default trim length 0**]]:::block - _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0-->|Task| _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Generated_0[ mtv provider vmware set provider secret name
namespace generated ]:::task - _mtv_provider_vmware___Set_Provider_Secret_Name_Namespace__Generated_0-->|Task| _mtv_provider_vmware___Create_VMware_credentials_secret1[ mtv provider vmware create vmware credentials
secret]:::task - _mtv_provider_vmware___Create_VMware_credentials_secret1-.->|End of Block| _mtv_provider_vmware___Configure_Provider_Secret6_block_start_0 - _mtv_provider_vmware___Create_VMware_credentials_secret1-->|Task| _mtv_provider_vmware___Create_VMware_Provider_resource7[ mtv provider vmware create vmware provider
resource]:::task - _mtv_provider_vmware___Create_VMware_Provider_resource7-->End + Start-->|Task| mtv_providers___Verify_ForkliftController_status0[mtv providers verify forkliftcontroller status
When: **mtv management migration targets default
length 0**]:::task + mtv_providers___Verify_ForkliftController_status0-->|Task| mtv_providers___Debug1[mtv providers debug]:::task + mtv_providers___Debug1-->|Include task| mtv_providers___Configure_vmware_providers__mtv_provider_vmware_yml_2[mtv providers configure vmware providers
When: **mtv management migration targets is defined and
mtv management migration targets selectattr
type equalto vmware list length 0**
include_task: mtv provider vmware yml]:::includeTasks + mtv_providers___Configure_vmware_providers__mtv_provider_vmware_yml_2-->|Include task| mtv_providers___Configure_ovirt_providers__mtv_provider_ovirt_yml_3[mtv providers configure ovirt providers
When: **mtv management migration targets is defined and
mtv management migration targets selectattr
type equalto ovirt list length 0**
include_task: mtv provider ovirt yml]:::includeTasks + mtv_providers___Configure_ovirt_providers__mtv_provider_ovirt_yml_3-->End ``` -### Graph for _mtv_network_map.yml +### Graph for main.yml ```mermaid flowchart TD @@ -541,16 +548,9 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _mtv_network_map___Initialize_data_structures0[ mtv network map initialize data structures]:::task - _mtv_network_map___Initialize_data_structures0-->|Task| _mtv_network_map___Verify_Network_Map_Overrides_do_not_contain_both_includes_and_excludes1[ mtv network map verify network map overrides do
not contain both includes and excludes
When: **mtv management network map overrides is defined
and mtv management network map overrides
selectattr include defined list length
0 and mtv management network map overrides
selectattr exclude defined list length
0**]:::task - _mtv_network_map___Verify_Network_Map_Overrides_do_not_contain_both_includes_and_excludes1-->|Include task| _mtv_network_map___Query_for_VMWare_Networks_from_Source_Provider_mtv_query_inventory_yml_2[ mtv network map query for vmware networks from
source provider
When: **vsphere in provider**
include_task: mtv query inventory yml]:::includeTasks - _mtv_network_map___Query_for_VMWare_Networks_from_Source_Provider_mtv_query_inventory_yml_2-->|Include task| _mtv_network_map___Query_for_Ovirt_Networks_from_Source_Provider_mtv_query_inventory_yml_3[ mtv network map query for ovirt networks from
source provider
When: **ovirt in provider**
include_task: mtv query inventory yml]:::includeTasks - _mtv_network_map___Query_for_Ovirt_Networks_from_Source_Provider_mtv_query_inventory_yml_3-->|Include task| _mtv_network_map___Query_for_NetworkAttachmentDefinitions_from_Destination_Provider_mtv_query_inventory_yml_4[ mtv network map query for
networkattachmentdefinitions from destination
provider
include_task: mtv query inventory yml]:::includeTasks - _mtv_network_map___Query_for_NetworkAttachmentDefinitions_from_Destination_Provider_mtv_query_inventory_yml_4-->|Include task| _mtv_network_map___Process_VMware_Networks__mtv_network_map_process_network_yml_5[ mtv network map process vmware networks
When: **vsphere in provider and mtv networks is defined
and mtv networks length 0**
include_task: mtv network map process network yml]:::includeTasks - _mtv_network_map___Process_VMware_Networks__mtv_network_map_process_network_yml_5-->|Include task| _mtv_network_map___Process_Ovirt_Networks__mtv_network_map_process_network_yml_6[ mtv network map process ovirt networks
When: **ovirt in provider and mtv networks is defined
and mtv networks length 0**
include_task: mtv network map process network yml]:::includeTasks - _mtv_network_map___Process_Ovirt_Networks__mtv_network_map_process_network_yml_6-->|Task| _mtv_network_map___Template_NetworkMap_Map7[ mtv network map template networkmap map]:::task - _mtv_network_map___Template_NetworkMap_Map7-->|Task| _mtv_network_map___Create_Network_Map8[ mtv network map create network map]:::task - _mtv_network_map___Create_Network_Map8-->End + Start-->|Include task| Configure_MTV_Providers_mtv_providers_yml_0[configure mtv providers
When: **mtv management map providers is defined and mtv
management map providers bool**
include_task: mtv providers yml]:::includeTasks + Configure_MTV_Providers_mtv_providers_yml_0-->|Include task| Configure_MTV_Maps_mtv_maps_yml_1[configure mtv maps
When: **mtv management map storage is defined and mtv
management map storage bool or mtv management
map networks is defined and mtv management map
networks bool**
include_task: mtv maps yml]:::includeTasks + Configure_MTV_Maps_mtv_maps_yml_1-->End ``` ## Playbook diff --git a/roles/mtv_migrate/README.md b/roles/mtv_migrate/README.md index 9f12e7a..9f4783d 100644 --- a/roles/mtv_migrate/README.md +++ b/roles/mtv_migrate/README.md @@ -389,7 +389,7 @@ Description: Migration of Virtual Machines from Source to Destination. ## Task Flow Graphs -### Graph for _process_folder.yml +### Graph for _plans.yml ```mermaid flowchart TD @@ -403,21 +403,34 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _process_folder___Initialize_Folder_Variables0[ process folder initialize folder variables]:::task - _process_folder___Initialize_Folder_Variables0-->|Task| _process_folder___Verify_Name_or_ID_or_Path_specified_for_Folder1[ process folder verify name or id or path
specified for folder]:::task - _process_folder___Verify_Name_or_ID_or_Path_specified_for_Folder1-->|Task| _process_folder___Locate_Folder_by_name2[ process folder locate folder by name
When: **name in folder to process and id not in folder
to process and path not in folder to process**]:::task - _process_folder___Locate_Folder_by_name2-->|Task| _process_folder___Locate_Folder_by_id3[ process folder locate folder by id
When: **id in folder to process and name not in folder
to process and path not in folder to process**]:::task - _process_folder___Locate_Folder_by_id3-->|Task| _process_folder___Locate_VM_by_path4[ process folder locate vm by path
When: **path in folder to process and id not in folder
to process and name not in folder to process**]:::task - _process_folder___Locate_VM_by_path4-->|Task| _process_folder___Verify_single_Folder_found5[ process folder verify single folder found]:::task - _process_folder___Verify_single_Folder_found5-->|Task| _process_folder___Set_Folder_to_Process6[ process folder set folder to process]:::task - _process_folder___Set_Folder_to_Process6-->|Block Start| _process_folder___Check_Excludes7_block_start_0[[ process folder check excludes
When: **mtv migrate migration request folders default
selectattr exclude defined
selectattr exclude equalto true
selectattr name defined selectattr name
equalto mtv migrate folder to process name
list length 0 and mtv migrate migration
request folders default selectattr
exclude defined selectattr exclude
equalto true selectattr id defined
selectattr id equalto mtv migrate folder to
process id list length 0 and mtv
migrate migration request folders default
selectattr exclude defined selectattr
exclude equalto true selectattr path
defined selectattr path equalto mtv
migrate folder to process path list length
0**]]:::block - _process_folder___Check_Excludes7_block_start_0-->|Include task| _process_folder___Process_Folder_VM_s__process_vm_yml_0[ process folder process folder vm s
When: **children in mtv migrate folder to process**
include_task: process vm yml]:::includeTasks - _process_folder___Process_Folder_VM_s__process_vm_yml_0-->|Include task| _process_folder___Process_Subfolders__process_folder_yml_1[ process folder process subfolders
When: **children in mtv migrate folder to process**
include_task: process folder yml]:::includeTasks - _process_folder___Process_Subfolders__process_folder_yml_1-.->|End of Block| _process_folder___Check_Excludes7_block_start_0 - _process_folder___Process_Subfolders__process_folder_yml_1-->End + Start-->|Task| _plans___Set_Plan_Base_Name0[ plans set plan base name]:::task + _plans___Set_Plan_Base_Name0-->|Include role| _plans___Retrieve_Configured_providers_mtv_management_1( plans retrieve configured providers
include_role: mtv management):::includeRole + _plans___Retrieve_Configured_providers_mtv_management_1-->|Task| _plans___Verify_Source_Provider2[ plans verify source provider]:::task + _plans___Verify_Source_Provider2-->|Task| _plans___Verify_Destination_Providers3[ plans verify destination providers]:::task + _plans___Verify_Destination_Providers3-->|Task| _plans___Retrieve_StorageMaps4[ plans retrieve storagemaps]:::task + _plans___Retrieve_StorageMaps4-->|Task| _plans___Verify_StorageMap5[ plans verify storagemap]:::task + _plans___Verify_StorageMap5-->|Task| _plans___Retrieve_NetworkMap6[ plans retrieve networkmap]:::task + _plans___Retrieve_NetworkMap6-->|Task| _plans___Verify_NetworkMap7[ plans verify networkmap]:::task + _plans___Verify_NetworkMap7-->|Task| _plans___Process_Plan_Skeleton8[ plans process plan skeleton]:::task + _plans___Process_Plan_Skeleton8-->|Include role| _plans___Get_Inventory_vms_mtv_management_9( plans get inventory vms
include_role: mtv management):::includeRole + _plans___Get_Inventory_vms_mtv_management_9-->|Block Start| _plans___Manage_specified_folders10_block_start_0[[ plans manage specified folders
When: **folders in mtv migrate migration request and
folder to process exclude is not defined or
exclude in folder to process and not folder to
process exclude bool**]]:::block + _plans___Manage_specified_folders10_block_start_0-->|Include role| _plans___Get_Inventory_folders_mtv_management_0( plans get inventory folders
include_role: mtv management):::includeRole + _plans___Get_Inventory_folders_mtv_management_0-->|Include task| _plans___Manage_specified_Folders__process_folder_yml_1[ plans manage specified folders
include_task: process folder yml]:::includeTasks + _plans___Manage_specified_Folders__process_folder_yml_1-.->|End of Block| _plans___Manage_specified_folders10_block_start_0 + _plans___Manage_specified_Folders__process_folder_yml_1-->|Include task| _plans___Manage_specified_VM_s__process_vm_yml_11[ plans manage specified vm s
When: **vms in mtv migrate migration request and vm to
process exclude is not defined or exclude in
vm to process and not vm to process exclude
bool**
include_task: process vm yml]:::includeTasks + _plans___Manage_specified_VM_s__process_vm_yml_11-->|Task| _plans___Flatten_VM_s_to_Migrate12[ plans flatten vm s to migrate]:::task + _plans___Flatten_VM_s_to_Migrate12-->|Task| _plans___Verify_Plan_has_VMs13[ plans verify plan has vms]:::task + _plans___Verify_Plan_has_VMs13-->|Include task| _plans___Process_Plans__process_plans_yml_14[ plans process plans
include_task: process plans yml]:::includeTasks + _plans___Process_Plans__process_plans_yml_14-->|Block Start| _plans___Create_and_Verify_Plans15_block_start_0[[ plans create and verify plans
When: **not mtv migrate mtv dry run bool**]]:::block + _plans___Create_and_Verify_Plans15_block_start_0-->|Task| _plans___Create_Plans0[ plans create plans]:::task + _plans___Create_Plans0-->|Task| _plans___Verify_Plans_Ready1[ plans verify plans ready
When: **mtv migrate mtv verify plans ready bool**]:::task + _plans___Verify_Plans_Ready1-->|Task| _plans___Set_Created_Plans_to_Migrate2[ plans set created plans to migrate
When: **mtv migrate mtv start migration bool**]:::task + _plans___Set_Created_Plans_to_Migrate2-.->|End of Block| _plans___Create_and_Verify_Plans15_block_start_0 + _plans___Set_Created_Plans_to_Migrate2-->|Task| _plans___Display_Plans__Dry_Run_16[ plans display plans dry run
When: **mtv migrate mtv dry run bool**]:::task + _plans___Display_Plans__Dry_Run_16-->End ``` -### Graph for _migrations.yml +### Graph for _process_folder.yml ```mermaid flowchart TD @@ -431,15 +444,21 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _migrations___Template_Migrations0[ migrations template migrations]:::task - _migrations___Template_Migrations0-->|Task| _migrations___Create_Migrations1[ migrations create migrations]:::task - _migrations___Create_Migrations1-->|Block Start| _migrations___Wait_for_Migrations2_block_start_0[[ migrations wait for migrations
When: **mtv migrate mtv verify migrations complete bool**]]:::block - _migrations___Wait_for_Migrations2_block_start_0-->|Task| _migrations___Check_on_Migrations0[ migrations check on migrations]:::task - _migrations___Check_on_Migrations0-.->|End of Block| _migrations___Wait_for_Migrations2_block_start_0 - _migrations___Check_on_Migrations0-->End + Start-->|Task| _process_folder___Initialize_Folder_Variables0[ process folder initialize folder variables]:::task + _process_folder___Initialize_Folder_Variables0-->|Task| _process_folder___Verify_Name_or_ID_or_Path_specified_for_Folder1[ process folder verify name or id or path
specified for folder]:::task + _process_folder___Verify_Name_or_ID_or_Path_specified_for_Folder1-->|Task| _process_folder___Locate_Folder_by_name2[ process folder locate folder by name
When: **name in folder to process and id not in folder
to process and path not in folder to process**]:::task + _process_folder___Locate_Folder_by_name2-->|Task| _process_folder___Locate_Folder_by_id3[ process folder locate folder by id
When: **id in folder to process and name not in folder
to process and path not in folder to process**]:::task + _process_folder___Locate_Folder_by_id3-->|Task| _process_folder___Locate_VM_by_path4[ process folder locate vm by path
When: **path in folder to process and id not in folder
to process and name not in folder to process**]:::task + _process_folder___Locate_VM_by_path4-->|Task| _process_folder___Verify_single_Folder_found5[ process folder verify single folder found]:::task + _process_folder___Verify_single_Folder_found5-->|Task| _process_folder___Set_Folder_to_Process6[ process folder set folder to process]:::task + _process_folder___Set_Folder_to_Process6-->|Block Start| _process_folder___Check_Excludes7_block_start_0[[ process folder check excludes
When: **mtv migrate migration request folders default
selectattr exclude defined
selectattr exclude equalto true
selectattr name defined selectattr name
equalto mtv migrate folder to process name
list length 0 and mtv migrate migration
request folders default selectattr
exclude defined selectattr exclude
equalto true selectattr id defined
selectattr id equalto mtv migrate folder to
process id list length 0 and mtv
migrate migration request folders default
selectattr exclude defined selectattr
exclude equalto true selectattr path
defined selectattr path equalto mtv
migrate folder to process path list length
0**]]:::block + _process_folder___Check_Excludes7_block_start_0-->|Include task| _process_folder___Process_Folder_VM_s__process_vm_yml_0[ process folder process folder vm s
When: **children in mtv migrate folder to process**
include_task: process vm yml]:::includeTasks + _process_folder___Process_Folder_VM_s__process_vm_yml_0-->|Include task| _process_folder___Process_Subfolders__process_folder_yml_1[ process folder process subfolders
When: **children in mtv migrate folder to process**
include_task: process folder yml]:::includeTasks + _process_folder___Process_Subfolders__process_folder_yml_1-.->|End of Block| _process_folder___Check_Excludes7_block_start_0 + _process_folder___Process_Subfolders__process_folder_yml_1-->End ``` -### Graph for main.yml +### Graph for _process_vm.yml ```mermaid flowchart TD @@ -453,18 +472,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Verify_Request_Provided0[verify request provided]:::task - Verify_Request_Provided0-->|Task| Initialize_Data_Structures1[initialize data structures]:::task - Initialize_Data_Structures1-->|Task| Process_Request__MTV_Namespace_2[process request mtv namespace ]:::task - Process_Request__MTV_Namespace_2-->|Task| Process_Request__Baseline_3[process request baseline ]:::task - Process_Request__Baseline_3-->|Task| Process_Request__Maps_4[process request maps ]:::task - Process_Request__Maps_4-->|Task| Verify_Split_Plan_Value_is_Positive5[verify split plan value is positive
When: **mtv migrate mtv split plans bool**]:::task - Verify_Split_Plan_Value_is_Positive5-->|Include task| Generate_Plans__plans_yml_6[generate plans
When: **mtv migrate migration request vms default
mtv migrate migration request folders
default length 0**
include_task: plans yml]:::includeTasks - Generate_Plans__plans_yml_6-->|Include task| Manage_Migrations__migrations_yml_7[manage migrations
When: **mtv migrate mtv start migration bool and not mtv
migrate mtv dry run bool and mtv migrate mtv
plans to migrate default length 0**
include_task: migrations yml]:::includeTasks - Manage_Migrations__migrations_yml_7-->End + Start-->|Task| _process_vm___Initialize_VM_Variables0[ process vm initialize vm variables]:::task + _process_vm___Initialize_VM_Variables0-->|Task| _process_vm___Verify_Name_or_ID_or_Path_specified_for_VM1[ process vm verify name or id or path specified
for vm]:::task + _process_vm___Verify_Name_or_ID_or_Path_specified_for_VM1-->|Task| _process_vm___Locate_VM_by_name2[ process vm locate vm by name
When: **name in vm to process and id not in vm to
process and path not in vm to process**]:::task + _process_vm___Locate_VM_by_name2-->|Task| _process_vm___Locate_VM_by_id3[ process vm locate vm by id
When: **id in vm to process and name not in vm to
process and path not in vm to process**]:::task + _process_vm___Locate_VM_by_id3-->|Task| _process_vm___Locate_VM_by_path4[ process vm locate vm by path
When: **path in vm to process and id not in vm to
process and name not in vm to process**]:::task + _process_vm___Locate_VM_by_path4-->|Task| _process_vm___Verify_single_VM_found5[ process vm verify single vm found]:::task + _process_vm___Verify_single_VM_found5-->|Task| _process_vm___Set_VM_to_Process6[ process vm set vm to process]:::task + _process_vm___Set_VM_to_Process6-->|Task| _process_vm___Add_VM_to_Migration_Dict7[ process vm add vm to migration dict
When: **mtv migrate migration request vms default
selectattr exclude defined selectattr
exclude equalto true selectattr name
defined selectattr name equalto mtv
migrate vm to process name list length
0 and mtv migrate migration request vms
default selectattr exclude defined
selectattr exclude equalto true
selectattr id defined selectattr id
equalto mtv migrate vm to process id list
length 0 and mtv migrate migration request
vms default selectattr exclude
defined selectattr exclude equalto true
selectattr path defined selectattr path
equalto mtv migrate vm to process path
list length 0 and not mtv migrate vm to
process istemplate default false**]:::task + _process_vm___Add_VM_to_Migration_Dict7-->|Task| _process_vm___Clear_VM_Variables8[ process vm clear vm variables]:::task + _process_vm___Clear_VM_Variables8-->End ``` -### Graph for _process_vm.yml +### Graph for _migrations.yml ```mermaid flowchart TD @@ -478,16 +498,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _process_vm___Initialize_VM_Variables0[ process vm initialize vm variables]:::task - _process_vm___Initialize_VM_Variables0-->|Task| _process_vm___Verify_Name_or_ID_or_Path_specified_for_VM1[ process vm verify name or id or path specified
for vm]:::task - _process_vm___Verify_Name_or_ID_or_Path_specified_for_VM1-->|Task| _process_vm___Locate_VM_by_name2[ process vm locate vm by name
When: **name in vm to process and id not in vm to
process and path not in vm to process**]:::task - _process_vm___Locate_VM_by_name2-->|Task| _process_vm___Locate_VM_by_id3[ process vm locate vm by id
When: **id in vm to process and name not in vm to
process and path not in vm to process**]:::task - _process_vm___Locate_VM_by_id3-->|Task| _process_vm___Locate_VM_by_path4[ process vm locate vm by path
When: **path in vm to process and id not in vm to
process and name not in vm to process**]:::task - _process_vm___Locate_VM_by_path4-->|Task| _process_vm___Verify_single_VM_found5[ process vm verify single vm found]:::task - _process_vm___Verify_single_VM_found5-->|Task| _process_vm___Set_VM_to_Process6[ process vm set vm to process]:::task - _process_vm___Set_VM_to_Process6-->|Task| _process_vm___Add_VM_to_Migration_Dict7[ process vm add vm to migration dict
When: **mtv migrate migration request vms default
selectattr exclude defined selectattr
exclude equalto true selectattr name
defined selectattr name equalto mtv
migrate vm to process name list length
0 and mtv migrate migration request vms
default selectattr exclude defined
selectattr exclude equalto true
selectattr id defined selectattr id
equalto mtv migrate vm to process id list
length 0 and mtv migrate migration request
vms default selectattr exclude
defined selectattr exclude equalto true
selectattr path defined selectattr path
equalto mtv migrate vm to process path
list length 0 and not mtv migrate vm to
process istemplate default false**]:::task - _process_vm___Add_VM_to_Migration_Dict7-->|Task| _process_vm___Clear_VM_Variables8[ process vm clear vm variables]:::task - _process_vm___Clear_VM_Variables8-->End + Start-->|Task| _migrations___Template_Migrations0[ migrations template migrations]:::task + _migrations___Template_Migrations0-->|Task| _migrations___Create_Migrations1[ migrations create migrations]:::task + _migrations___Create_Migrations1-->|Block Start| _migrations___Wait_for_Migrations2_block_start_0[[ migrations wait for migrations
When: **mtv migrate mtv verify migrations complete bool**]]:::block + _migrations___Wait_for_Migrations2_block_start_0-->|Task| _migrations___Check_on_Migrations0[ migrations check on migrations]:::task + _migrations___Check_on_Migrations0-.->|End of Block| _migrations___Wait_for_Migrations2_block_start_0 + _migrations___Check_on_Migrations0-->End ``` ### Graph for _process_plans.yml @@ -510,7 +526,7 @@ classDef rescue stroke:#665352,stroke-width:2px; _process_plans___Add_Plan2-->End ``` -### Graph for _plans.yml +### Graph for main.yml ```mermaid flowchart TD @@ -524,31 +540,15 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _plans___Set_Plan_Base_Name0[ plans set plan base name]:::task - _plans___Set_Plan_Base_Name0-->|Include role| _plans___Retrieve_Configured_providers_mtv_management_1( plans retrieve configured providers
include_role: mtv management):::includeRole - _plans___Retrieve_Configured_providers_mtv_management_1-->|Task| _plans___Verify_Source_Provider2[ plans verify source provider]:::task - _plans___Verify_Source_Provider2-->|Task| _plans___Verify_Destination_Providers3[ plans verify destination providers]:::task - _plans___Verify_Destination_Providers3-->|Task| _plans___Retrieve_StorageMaps4[ plans retrieve storagemaps]:::task - _plans___Retrieve_StorageMaps4-->|Task| _plans___Verify_StorageMap5[ plans verify storagemap]:::task - _plans___Verify_StorageMap5-->|Task| _plans___Retrieve_NetworkMap6[ plans retrieve networkmap]:::task - _plans___Retrieve_NetworkMap6-->|Task| _plans___Verify_NetworkMap7[ plans verify networkmap]:::task - _plans___Verify_NetworkMap7-->|Task| _plans___Process_Plan_Skeleton8[ plans process plan skeleton]:::task - _plans___Process_Plan_Skeleton8-->|Include role| _plans___Get_Inventory_vms_mtv_management_9( plans get inventory vms
include_role: mtv management):::includeRole - _plans___Get_Inventory_vms_mtv_management_9-->|Block Start| _plans___Manage_specified_folders10_block_start_0[[ plans manage specified folders
When: **folders in mtv migrate migration request and
folder to process exclude is not defined or
exclude in folder to process and not folder to
process exclude bool**]]:::block - _plans___Manage_specified_folders10_block_start_0-->|Include role| _plans___Get_Inventory_folders_mtv_management_0( plans get inventory folders
include_role: mtv management):::includeRole - _plans___Get_Inventory_folders_mtv_management_0-->|Include task| _plans___Manage_specified_Folders__process_folder_yml_1[ plans manage specified folders
include_task: process folder yml]:::includeTasks - _plans___Manage_specified_Folders__process_folder_yml_1-.->|End of Block| _plans___Manage_specified_folders10_block_start_0 - _plans___Manage_specified_Folders__process_folder_yml_1-->|Include task| _plans___Manage_specified_VM_s__process_vm_yml_11[ plans manage specified vm s
When: **vms in mtv migrate migration request and vm to
process exclude is not defined or exclude in
vm to process and not vm to process exclude
bool**
include_task: process vm yml]:::includeTasks - _plans___Manage_specified_VM_s__process_vm_yml_11-->|Task| _plans___Flatten_VM_s_to_Migrate12[ plans flatten vm s to migrate]:::task - _plans___Flatten_VM_s_to_Migrate12-->|Task| _plans___Verify_Plan_has_VMs13[ plans verify plan has vms]:::task - _plans___Verify_Plan_has_VMs13-->|Include task| _plans___Process_Plans__process_plans_yml_14[ plans process plans
include_task: process plans yml]:::includeTasks - _plans___Process_Plans__process_plans_yml_14-->|Block Start| _plans___Create_and_Verify_Plans15_block_start_0[[ plans create and verify plans
When: **not mtv migrate mtv dry run bool**]]:::block - _plans___Create_and_Verify_Plans15_block_start_0-->|Task| _plans___Create_Plans0[ plans create plans]:::task - _plans___Create_Plans0-->|Task| _plans___Verify_Plans_Ready1[ plans verify plans ready
When: **mtv migrate mtv verify plans ready bool**]:::task - _plans___Verify_Plans_Ready1-->|Task| _plans___Set_Created_Plans_to_Migrate2[ plans set created plans to migrate
When: **mtv migrate mtv start migration bool**]:::task - _plans___Set_Created_Plans_to_Migrate2-.->|End of Block| _plans___Create_and_Verify_Plans15_block_start_0 - _plans___Set_Created_Plans_to_Migrate2-->|Task| _plans___Display_Plans__Dry_Run_16[ plans display plans dry run
When: **mtv migrate mtv dry run bool**]:::task - _plans___Display_Plans__Dry_Run_16-->End + Start-->|Task| Verify_Request_Provided0[verify request provided]:::task + Verify_Request_Provided0-->|Task| Initialize_Data_Structures1[initialize data structures]:::task + Initialize_Data_Structures1-->|Task| Process_Request__MTV_Namespace_2[process request mtv namespace ]:::task + Process_Request__MTV_Namespace_2-->|Task| Process_Request__Baseline_3[process request baseline ]:::task + Process_Request__Baseline_3-->|Task| Process_Request__Maps_4[process request maps ]:::task + Process_Request__Maps_4-->|Task| Verify_Split_Plan_Value_is_Positive5[verify split plan value is positive
When: **mtv migrate mtv split plans bool**]:::task + Verify_Split_Plan_Value_is_Positive5-->|Include task| Generate_Plans__plans_yml_6[generate plans
When: **mtv migrate migration request vms default
mtv migrate migration request folders
default length 0**
include_task: plans yml]:::includeTasks + Generate_Plans__plans_yml_6-->|Include task| Manage_Migrations__migrations_yml_7[manage migrations
When: **mtv migrate mtv start migration bool and not mtv
migrate mtv dry run bool and mtv migrate mtv
plans to migrate default length 0**
include_task: migrations yml]:::includeTasks + Manage_Migrations__migrations_yml_7-->End ``` ## Playbook diff --git a/roles/mtv_warm_cutover/README.md b/roles/mtv_warm_cutover/README.md new file mode 100644 index 0000000..921d2de --- /dev/null +++ b/roles/mtv_warm_cutover/README.md @@ -0,0 +1,237 @@ + +## mtv_warm_cutover + +``` +Role belongs to infra/openshift_virtualization_migration +Namespace - infra +Collection - openshift_virtualization_migration +Version - 1.22.0 +Repository - https://github.com/redhat-cop/openshift_virtualization_migration +``` + +Description: Trigger cutover for warm migrations to finish the migration process. + +### Argument Specifications + +
+🧩 Argument Specifications in `meta/argument_specs` + +#### Key: main + +* **Description**: MTV Warm Cutover - Trigger cutover for warm migrations +* **Options**: + * **mtv_warm_cutover_request**: + * **Required**: True + * **Type**: list + * **Default**: none + * **Description**: List of warm migration cutover requests + * **mtv_warm_cutover_default_namespace**: + * **Required**: false + * **Type**: str + * **Default**: openshift-mtv + * **Description**: Default namespace for MTV resources + * **mtv_warm_cutover_force_cutover**: + * **Required**: false + * **Type**: bool + * **Default**: False + * **Description**: Allow overriding an existing cutover timestamp on a Migration. Can be overridden per migration request via the force_cutover key. + * **mtv_warm_cutover_verify_complete**: + * **Required**: false + * **Type**: bool + * **Default**: True + * **Description**: Wait until cutover migrations complete. Can be overridden per migration request via the verify_complete key. + * **mtv_warm_cutover_verify_retries**: + * **Required**: false + * **Type**: int + * **Default**: 360 + * **Description**: Number of retries when waiting for cutover completion + * **mtv_warm_cutover_verify_delay**: + * **Required**: false + * **Type**: int + * **Default**: 20 + * **Description**: Seconds to wait between retries + +
+ +### Defaults + +**These are static variables with lower priority** + +#### File: defaults/main.yml + +| Var | Type | Value |Choices |Required | Title | +|--------------|--------------|-------------|-------------|-------------|-------------| +| [`mtv_warm_cutover_request`](defaults/main.yml#L7) | list | `[]` | None | True | Warm Cutover Request | +| [`mtv_warm_cutover_default_namespace`](defaults/main.yml#L23) | str | `openshift-mtv` | None | False | MTV Namespace | +| [`mtv_warm_cutover_force_cutover`](defaults/main.yml#L29) | bool | `False` | None | False | Force Cutover Override | +| [`mtv_warm_cutover_verify_complete`](defaults/main.yml#L35) | bool | `True` | None | False | Verify Cutover Complete | +| [`mtv_warm_cutover_verify_retries`](defaults/main.yml#L39) | int | `360` | None | False | Verify Complete Retries | +| [`mtv_warm_cutover_verify_delay`](defaults/main.yml#L43) | int | `20` | None | False | Verify Complete Delay | + +🖇️ Full descriptions for vars in defaults/main.yml +
+`mtv_warm_cutover_request`: List of warm migration cutover requests +
+`mtv_warm_cutover_default_namespace`: Default namespace for MTV resources +
+`mtv_warm_cutover_force_cutover`: >- +
+`mtv_warm_cutover_verify_complete`: >- +
+`mtv_warm_cutover_verify_retries`: Number of retries when waiting for cutover completion +
+`mtv_warm_cutover_verify_delay`: Seconds to wait between retries +
+
+ +### Tasks + +#### File: tasks/main.yml + +| Name | Module | Has Conditions | +| ---- | ------ | --------- | +| Verify mtv_warm_cutover_request Variable Provided | `ansible.builtin.assert` | False | +| Process Warm Cutover Requests | `ansible.builtin.include_tasks` | False | + +#### File: tasks/_apply_cutover.yml + +| Name | Module | Has Conditions | +| ---- | ------ | --------- | +| _apply_cutover ¦ Check if Cutover Already Defined | `ansible.builtin.set_fact` | False | +| _apply_cutover ¦ Fail When Cutover Already Set (No Force) | `ansible.builtin.fail` | True | +| _apply_cutover ¦ Override Existing Cutover Timestamp | `kubernetes.core.k8s_json_patch` | True | +| _apply_cutover ¦ Report Cutover Overridden | `ansible.builtin.debug` | True | +| _apply_cutover ¦ Patch Migration with Cutover Timestamp | `kubernetes.core.k8s_json_patch` | True | +| _apply_cutover ¦ Report Cutover Triggered | `ansible.builtin.debug` | True | +| _apply_cutover ¦ Wait for Migration to Complete | `kubernetes.core.k8s_info` | True | +| _apply_cutover ¦ Verify Migration Succeeded | `ansible.builtin.assert` | True | + +#### File: tasks/_process_cutover.yml + +| Name | Module | Has Conditions | +| ---- | ------ | --------- | +| _process_cutover ¦ Set Working Namespace | `ansible.builtin.set_fact` | False | +| _process_cutover ¦ Query Migrations by Name | `kubernetes.core.k8s_info` | True | +| _process_cutover ¦ Query Migrations by Label Selector | `kubernetes.core.k8s_info` | True | +| _process_cutover ¦ Query Migrations by Plan Name | `kubernetes.core.k8s_info` | True | +| _process_cutover ¦ Filter Migrations for Plan | `ansible.builtin.set_fact` | True | +| _process_cutover ¦ Build Migration List from Named Queries | `ansible.builtin.set_fact` | True | +| _process_cutover ¦ Build Migration List from Selector | `ansible.builtin.set_fact` | True | +| _process_cutover ¦ Build Migration List from Plan | `ansible.builtin.set_fact` | True | +| _process_cutover ¦ Verify Migrations Found | `ansible.builtin.assert` | False | +| _process_cutover ¦ Determine Cutover Timestamp | `ansible.builtin.set_fact` | False | +| _process_cutover ¦ Resolve Per-Request Overrides | `ansible.builtin.set_fact` | False | +| _process_cutover ¦ Trigger Cutover on Migrations | `ansible.builtin.include_tasks` | False | + +## Task Flow Graphs + +### Graph for _apply_cutover.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| _apply_cutover___Check_if_Cutover_Already_Defined0[ apply cutover check if cutover already defined]:::task + _apply_cutover___Check_if_Cutover_Already_Defined0-->|Task| _apply_cutover___Fail_When_Cutover_Already_Set__No_Force_1[ apply cutover fail when cutover already set no
force
When: **mtv warm cutover already set bool and not mtv
warm cutover effective force bool**]:::task + _apply_cutover___Fail_When_Cutover_Already_Set__No_Force_1-->|Task| _apply_cutover___Override_Existing_Cutover_Timestamp2[ apply cutover override existing cutover
timestamp
When: **mtv warm cutover already set bool and mtv warm
cutover effective force bool**]:::task + _apply_cutover___Override_Existing_Cutover_Timestamp2-->|Task| _apply_cutover___Report_Cutover_Overridden3[ apply cutover report cutover overridden
When: **mtv warm cutover already set bool and mtv warm
cutover effective force bool**]:::task + _apply_cutover___Report_Cutover_Overridden3-->|Task| _apply_cutover___Patch_Migration_with_Cutover_Timestamp4[ apply cutover patch migration with cutover
timestamp
When: **not mtv warm cutover already set bool**]:::task + _apply_cutover___Patch_Migration_with_Cutover_Timestamp4-->|Task| _apply_cutover___Report_Cutover_Triggered5[ apply cutover report cutover triggered
When: **not mtv warm cutover already set bool**]:::task + _apply_cutover___Report_Cutover_Triggered5-->|Task| _apply_cutover___Wait_for_Migration_to_Complete6[ apply cutover wait for migration to complete
When: **mtv warm cutover effective verify bool**]:::task + _apply_cutover___Wait_for_Migration_to_Complete6-->|Task| _apply_cutover___Verify_Migration_Succeeded7[ apply cutover verify migration succeeded
When: **mtv warm cutover effective verify bool**]:::task + _apply_cutover___Verify_Migration_Succeeded7-->End +``` + +### Graph for _process_cutover.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| _process_cutover___Set_Working_Namespace0[ process cutover set working namespace]:::task + _process_cutover___Set_Working_Namespace0-->|Task| _process_cutover___Query_Migrations_by_Name1[ process cutover query migrations by name
When: **mtv warm cutover item names default true
length 0**]:::task + _process_cutover___Query_Migrations_by_Name1-->|Task| _process_cutover___Query_Migrations_by_Label_Selector2[ process cutover query migrations by label
selector
When: **mtv warm cutover item names default true
length 0 and mtv warm cutover item label
selectors default true length 0**]:::task + _process_cutover___Query_Migrations_by_Label_Selector2-->|Task| _process_cutover___Query_Migrations_by_Plan_Name3[ process cutover query migrations by plan name
When: **mtv warm cutover item names default true
length 0 and mtv warm cutover item label
selectors default true length 0 and
mtv warm cutover item plan name default true
length 0**]:::task + _process_cutover___Query_Migrations_by_Plan_Name3-->|Task| _process_cutover___Filter_Migrations_for_Plan4[ process cutover filter migrations for plan
When: **mtv warm cutover by plan query is not skipped**]:::task + _process_cutover___Filter_Migrations_for_Plan4-->|Task| _process_cutover___Build_Migration_List_from_Named_Queries5[ process cutover build migration list from named
queries
When: **mtv warm cutover by name is not skipped**]:::task + _process_cutover___Build_Migration_List_from_Named_Queries5-->|Task| _process_cutover___Build_Migration_List_from_Selector6[ process cutover build migration list from
selector
When: **mtv warm cutover by selector is not skipped**]:::task + _process_cutover___Build_Migration_List_from_Selector6-->|Task| _process_cutover___Build_Migration_List_from_Plan7[ process cutover build migration list from plan
When: **mtv warm cutover by plan is defined and mtv warm
cutover by plan is not skipped**]:::task + _process_cutover___Build_Migration_List_from_Plan7-->|Task| _process_cutover___Verify_Migrations_Found8[ process cutover verify migrations found]:::task + _process_cutover___Verify_Migrations_Found8-->|Task| _process_cutover___Determine_Cutover_Timestamp9[ process cutover determine cutover timestamp]:::task + _process_cutover___Determine_Cutover_Timestamp9-->|Task| _process_cutover___Resolve_Per_Request_Overrides10[ process cutover resolve per request overrides]:::task + _process_cutover___Resolve_Per_Request_Overrides10-->|Include task| _process_cutover___Trigger_Cutover_on_Migrations__apply_cutover_yml_11[ process cutover trigger cutover on migrations
include_task: apply cutover yml]:::includeTasks + _process_cutover___Trigger_Cutover_on_Migrations__apply_cutover_yml_11-->End +``` + +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| Verify_mtv_warm_cutover_request_Variable_Provided0[verify mtv warm cutover request variable provided]:::task + Verify_mtv_warm_cutover_request_Variable_Provided0-->|Include task| Process_Warm_Cutover_Requests__process_cutover_yml_1[process warm cutover requests
include_task: process cutover yml]:::includeTasks + Process_Warm_Cutover_Requests__process_cutover_yml_1-->End +``` + +## Playbook + +```yml +--- +- name: Test + hosts: localhost + remote_user: root + roles: + - mtv_warm_cutover +... + +``` + +## Playbook graph + +```mermaid +flowchart TD + hosts[localhost]-->|Role| mtv_warm_cutover[mtv warm cutover] +``` + +## Author Information + +OpenShift Virtualization Migration Contributors + +## License + +GPL-3.0-only + +## Minimum Ansible Version + +2.16.0 + +## Platforms + +No platforms specified. + + \ No newline at end of file diff --git a/roles/network_mgmt/README.md b/roles/network_mgmt/README.md index 524955d..1a59908 100644 --- a/roles/network_mgmt/README.md +++ b/roles/network_mgmt/README.md @@ -165,7 +165,7 @@ Description: Management of network related components. ## Task Flow Graphs -### Graph for manual.yml +### Graph for automatic_nncp.yml ```mermaid flowchart TD @@ -179,18 +179,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| manual___Validate_network_mgmt_manual_nad_list0[manual validate network mgmt manual nad list]:::task - manual___Validate_network_mgmt_manual_nad_list0-->|Task| manual___Validate_supported_bonding_mode_if_also_creating_bond1[manual validate supported bonding mode if also
creating bond
When: **not network mgmt override openshift supported
bond mode default false and network mgmt
openshift node network ports default
length 0**]:::task - manual___Validate_supported_bonding_mode_if_also_creating_bond1-->|Task| manual___Validate_ovs_bridge_mode2[manual validate ovs bridge mode
When: **network mgmt openshift network bridge mode ovs
bridge**]:::task - manual___Validate_ovs_bridge_mode2-->|Task| manual___Validate_linux_bridge3[manual validate linux bridge]:::task - manual___Validate_linux_bridge3-->|Task| manual___Apply_NodeNetworkConfigurationPolicy4[manual apply nodenetworkconfigurationpolicy
When: **network mgmt manual bridge name default
length 0 and network mgmt manual bond name
default length 0 and network mgmt
openshift network bridge mode linux bridge**]:::task - manual___Apply_NodeNetworkConfigurationPolicy4-->|Task| manual___Validate_access_port5[manual validate access port
When: **trunk not in nad or not nad trunk**]:::task - manual___Validate_access_port5-->|Task| manual___Validate_trunk_ports6[manual validate trunk ports
When: **trunk in nad and nad trunk**]:::task - manual___Validate_trunk_ports6-->|Task| manual___Apply_NetworkAttachmentDefinitions7[manual apply networkattachmentdefinitions]:::task - manual___Apply_NetworkAttachmentDefinitions7-->End + Start-->|Task| automatic_nncp___Validate_supported_bonding_mode0[automatic nncp validate supported bonding mode
When: **not network mgmt override openshift supported
bond mode default false**]:::task + automatic_nncp___Validate_supported_bonding_mode0-->|Include task| automatic_nncp___Include_tasks_from_create_nncp_yml_create_nncp_yml_1[automatic nncp include tasks from create nncp
yml
include_task: create nncp yml]:::includeTasks + automatic_nncp___Include_tasks_from_create_nncp_yml_create_nncp_yml_1-->End ``` -### Graph for main.yml +### Graph for create_nncp.yml ```mermaid flowchart TD @@ -204,12 +198,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| Use_automatic_mode_automatic_yml_0[use automatic mode
When: **network mgmt manual nad list default
length 0**
include_task: automatic yml]:::includeTasks - Use_automatic_mode_automatic_yml_0-->|Include task| Use_manual_mode_manual_yml_1[use manual mode
When: **network mgmt manual nad list default is
iterable and network mgmt manual nad list
length 0**
include_task: manual yml]:::includeTasks - Use_manual_mode_manual_yml_1-->End + Start-->|Task| create_nncp___DEBUG_nncp_Template0[create nncp debug nncp template
When: **vswitch name network mgmt vcenter dvswitch**]:::task + create_nncp___DEBUG_nncp_Template0-->|Task| create_nncp___Apply_NodeNetworkConfigurationPolicy1[create nncp apply nodenetworkconfigurationpolicy
When: **vswitch name network mgmt vcenter dvswitch**]:::task + create_nncp___Apply_NodeNetworkConfigurationPolicy1-->End ``` -### Graph for gather_networks.yml +### Graph for automatic.yml ```mermaid flowchart TD @@ -223,12 +217,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| gather_networks___Gather_all_registered_dvswitch0[gather networks gather all registered dvswitch]:::task - gather_networks___Gather_all_registered_dvswitch0-->|Task| gather_networks___Get_info_for_all_dVSwitch_Port_Groups1[gather networks get info for all dvswitch port
groups]:::task - gather_networks___Get_info_for_all_dVSwitch_Port_Groups1-->End + Start-->|Include task| automatic___Include_tasks_from_gather_networks_yml_gather_networks_yml_0[automatic include tasks from gather networks yml
include_task: gather networks yml]:::includeTasks + automatic___Include_tasks_from_gather_networks_yml_gather_networks_yml_0-->|Task| automatic___Set_the_switches_and_portgroups_to_migrate1[automatic set the switches and portgroups to
migrate]:::task + automatic___Set_the_switches_and_portgroups_to_migrate1-->|Include task| automatic___Include_tasks_from_automatic_nncp_yml_automatic_nncp_yml_2[automatic include tasks from automatic nncp yml
When: **network mgmt openshift node network ports
default is iterable and network mgmt
openshift node network ports default is
not string and network mgmt openshift node network
ports default length 0 and network mgmt
vcenter dvswitch default true trim
length 0 and network mgmt vcenter datacenter
default true trim length 0**
include_task: automatic nncp yml]:::includeTasks + automatic___Include_tasks_from_automatic_nncp_yml_automatic_nncp_yml_2-->|Include task| automatic___Include_tasks_from_automatic_nad_yml_automatic_nad_yml_3[automatic include tasks from automatic nad yml
When: **network mgmt vcenter dvswitch default true
trim length 0 and network mgmt vcenter
datacenter default true trim length 0
and network mgmt openshift node network ports
default is iterable and network mgmt
openshift node network ports default is
not string and network mgmt openshift node
network ports default length 0 or
network mgmt nad auto bridge name is defined and
network mgmt nad auto bridge name length 0**
include_task: automatic nad yml]:::includeTasks + automatic___Include_tasks_from_automatic_nad_yml_automatic_nad_yml_3-->End ``` -### Graph for create_nad.yml +### Graph for manual.yml ```mermaid flowchart TD @@ -242,12 +238,18 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| create_nad____DEBUG_nad_Template_0[create nad debug nad template
When: **portgroup uplinks 0 and not portgroup vlan
trunk and network mgmt openshift network bridge
mode ovs bridge and portgroup switch
network mgmt vcenter dvswitch**]:::task - create_nad____DEBUG_nad_Template_0-->|Task| create_nad___Apply_NetworkAttachmentDefinitions1[create nad apply networkattachmentdefinitions
When: **portgroup uplinks 0 and not portgroup vlan
trunk and network mgmt openshift network bridge
mode ovs bridge and portgroup switch
network mgmt vcenter dvswitch**]:::task - create_nad___Apply_NetworkAttachmentDefinitions1-->End + Start-->|Task| manual___Validate_network_mgmt_manual_nad_list0[manual validate network mgmt manual nad list]:::task + manual___Validate_network_mgmt_manual_nad_list0-->|Task| manual___Validate_supported_bonding_mode_if_also_creating_bond1[manual validate supported bonding mode if also
creating bond
When: **not network mgmt override openshift supported
bond mode default false and network mgmt
openshift node network ports default
length 0**]:::task + manual___Validate_supported_bonding_mode_if_also_creating_bond1-->|Task| manual___Validate_ovs_bridge_mode2[manual validate ovs bridge mode
When: **network mgmt openshift network bridge mode ovs
bridge**]:::task + manual___Validate_ovs_bridge_mode2-->|Task| manual___Validate_linux_bridge3[manual validate linux bridge]:::task + manual___Validate_linux_bridge3-->|Task| manual___Apply_NodeNetworkConfigurationPolicy4[manual apply nodenetworkconfigurationpolicy
When: **network mgmt manual bridge name default
length 0 and network mgmt manual bond name
default length 0 and network mgmt
openshift network bridge mode linux bridge**]:::task + manual___Apply_NodeNetworkConfigurationPolicy4-->|Task| manual___Validate_access_port5[manual validate access port
When: **trunk not in nad or not nad trunk**]:::task + manual___Validate_access_port5-->|Task| manual___Validate_trunk_ports6[manual validate trunk ports
When: **trunk in nad and nad trunk**]:::task + manual___Validate_trunk_ports6-->|Task| manual___Apply_NetworkAttachmentDefinitions7[manual apply networkattachmentdefinitions]:::task + manual___Apply_NetworkAttachmentDefinitions7-->End ``` -### Graph for automatic_nncp.yml +### Graph for gather_networks.yml ```mermaid flowchart TD @@ -261,12 +263,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| automatic_nncp___Validate_supported_bonding_mode0[automatic nncp validate supported bonding mode
When: **not network mgmt override openshift supported
bond mode default false**]:::task - automatic_nncp___Validate_supported_bonding_mode0-->|Include task| automatic_nncp___Include_tasks_from_create_nncp_yml_create_nncp_yml_1[automatic nncp include tasks from create nncp
yml
include_task: create nncp yml]:::includeTasks - automatic_nncp___Include_tasks_from_create_nncp_yml_create_nncp_yml_1-->End + Start-->|Task| gather_networks___Gather_all_registered_dvswitch0[gather networks gather all registered dvswitch]:::task + gather_networks___Gather_all_registered_dvswitch0-->|Task| gather_networks___Get_info_for_all_dVSwitch_Port_Groups1[gather networks get info for all dvswitch port
groups]:::task + gather_networks___Get_info_for_all_dVSwitch_Port_Groups1-->End ``` -### Graph for create_nncp.yml +### Graph for automatic_nad.yml ```mermaid flowchart TD @@ -280,12 +282,11 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| create_nncp___DEBUG_nncp_Template0[create nncp debug nncp template
When: **vswitch name network mgmt vcenter dvswitch**]:::task - create_nncp___DEBUG_nncp_Template0-->|Task| create_nncp___Apply_NodeNetworkConfigurationPolicy1[create nncp apply nodenetworkconfigurationpolicy
When: **vswitch name network mgmt vcenter dvswitch**]:::task - create_nncp___Apply_NodeNetworkConfigurationPolicy1-->End + Start-->|Include task| automatic_nad___Include_tasks_from_create_nad_yml_create_nad_yml_0[automatic nad include tasks from create nad yml
include_task: create nad yml]:::includeTasks + automatic_nad___Include_tasks_from_create_nad_yml_create_nad_yml_0-->End ``` -### Graph for automatic_nad.yml +### Graph for create_nad.yml ```mermaid flowchart TD @@ -299,11 +300,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| automatic_nad___Include_tasks_from_create_nad_yml_create_nad_yml_0[automatic nad include tasks from create nad yml
include_task: create nad yml]:::includeTasks - automatic_nad___Include_tasks_from_create_nad_yml_create_nad_yml_0-->End + Start-->|Task| create_nad____DEBUG_nad_Template_0[create nad debug nad template
When: **portgroup uplinks 0 and not portgroup vlan
trunk and network mgmt openshift network bridge
mode ovs bridge and portgroup switch
network mgmt vcenter dvswitch**]:::task + create_nad____DEBUG_nad_Template_0-->|Task| create_nad___Apply_NetworkAttachmentDefinitions1[create nad apply networkattachmentdefinitions
When: **portgroup uplinks 0 and not portgroup vlan
trunk and network mgmt openshift network bridge
mode ovs bridge and portgroup switch
network mgmt vcenter dvswitch**]:::task + create_nad___Apply_NetworkAttachmentDefinitions1-->End ``` -### Graph for automatic.yml +### Graph for main.yml ```mermaid flowchart TD @@ -317,11 +319,9 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| automatic___Include_tasks_from_gather_networks_yml_gather_networks_yml_0[automatic include tasks from gather networks yml
include_task: gather networks yml]:::includeTasks - automatic___Include_tasks_from_gather_networks_yml_gather_networks_yml_0-->|Task| automatic___Set_the_switches_and_portgroups_to_migrate1[automatic set the switches and portgroups to
migrate]:::task - automatic___Set_the_switches_and_portgroups_to_migrate1-->|Include task| automatic___Include_tasks_from_automatic_nncp_yml_automatic_nncp_yml_2[automatic include tasks from automatic nncp yml
When: **network mgmt openshift node network ports
default is iterable and network mgmt
openshift node network ports default is
not string and network mgmt openshift node network
ports default length 0 and network mgmt
vcenter dvswitch default true trim
length 0 and network mgmt vcenter datacenter
default true trim length 0**
include_task: automatic nncp yml]:::includeTasks - automatic___Include_tasks_from_automatic_nncp_yml_automatic_nncp_yml_2-->|Include task| automatic___Include_tasks_from_automatic_nad_yml_automatic_nad_yml_3[automatic include tasks from automatic nad yml
When: **network mgmt vcenter dvswitch default true
trim length 0 and network mgmt vcenter
datacenter default true trim length 0
and network mgmt openshift node network ports
default is iterable and network mgmt
openshift node network ports default is
not string and network mgmt openshift node
network ports default length 0 or
network mgmt nad auto bridge name is defined and
network mgmt nad auto bridge name length 0**
include_task: automatic nad yml]:::includeTasks - automatic___Include_tasks_from_automatic_nad_yml_automatic_nad_yml_3-->End + Start-->|Include task| Use_automatic_mode_automatic_yml_0[use automatic mode
When: **network mgmt manual nad list default
length 0**
include_task: automatic yml]:::includeTasks + Use_automatic_mode_automatic_yml_0-->|Include task| Use_manual_mode_manual_yml_1[use manual mode
When: **network mgmt manual nad list default is
iterable and network mgmt manual nad list
length 0**
include_task: manual yml]:::includeTasks + Use_manual_mode_manual_yml_1-->End ``` ## Playbook diff --git a/roles/operator_management/README.md b/roles/operator_management/README.md index 10fea7b..08a2774 100644 --- a/roles/operator_management/README.md +++ b/roles/operator_management/README.md @@ -530,7 +530,7 @@ Description: Management of OpenShift Operators. ## Task Flow Graphs -### Graph for _operator_config_item.yml +### Graph for _operator_resource_item.yml ```mermaid flowchart TD @@ -544,13 +544,23 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _operator_config_item___Retrieve_Operator_name0[ operator config item retrieve operator name]:::task - _operator_config_item___Retrieve_Operator_name0-->|Include task| _operator_config_item___Configure_Resources__operator_resource_item_yml_1[ operator config item configure resources
When: **operator management operator operator resource
name is defined**
include_task: operator resource item yml]:::includeTasks - _operator_config_item___Configure_Resources__operator_resource_item_yml_1-->|Task| _operator_config_item___Apply_Extra_Resources2[ operator config item apply extra resources
When: **operator management operator extra resources
is defined**]:::task - _operator_config_item___Apply_Extra_Resources2-->End + Start-->|Task| _operator_resource_item___Set_Fact______operator_resource_name___capitalize___0[ operator resource item set fact operator
resource name capitalize ]:::task + _operator_resource_item___Set_Fact______operator_resource_name___capitalize___0-->|Block Start| _operator_resource_item___Configure_Operator_Subscription1_block_start_0[[ operator resource item configure operator
subscription
When: **operator resource name subscription**]]:::block + _operator_resource_item___Configure_Operator_Subscription1_block_start_0-->|Task| _operator_resource_item___Verify_Operator_Exists0[ operator resource item verify operator exists]:::task + _operator_resource_item___Verify_Operator_Exists0-->|Task| _operator_resource_item___Verify_Operator_Channel_Exists1[ operator resource item verify operator channel
exists
When: **operator management resource spec is defined and
operator management resource spec channel is
defined**]:::task + _operator_resource_item___Verify_Operator_Channel_Exists1-->|Task| _operator_resource_item___Set_Operator_channel_when_not_defined2[ operator resource item set operator channel
when not defined]:::task + _operator_resource_item___Set_Operator_channel_when_not_defined2-.->|End of Block| _operator_resource_item___Configure_Operator_Subscription1_block_start_0 + _operator_resource_item___Set_Operator_channel_when_not_defined2-->|Task| _operator_resource_item___Apply_Resource_____operator_resource_name___capitalize___2[ operator resource item apply resource
operator resource name capitalize ]:::task + _operator_resource_item___Apply_Resource_____operator_resource_name___capitalize___2-->|Block Start| _operator_resource_item___Operator_Installation_Management3_block_start_0[[ operator resource item operator installation
management
When: **operator resource name subscription**]]:::block + _operator_resource_item___Operator_Installation_Management3_block_start_0-->|Task| _operator_resource_item___Obtain_Related_CSV_Name0[ operator resource item obtain related csv name]:::task + _operator_resource_item___Obtain_Related_CSV_Name0-->|Task| _operator_resource_item___Wait_until_InstallPlan_created_______operator_management_resource_spec_name____1[ operator resource item wait until installplan
created operator management resource spec
name ]:::task + _operator_resource_item___Wait_until_InstallPlan_created_______operator_management_resource_spec_name____1-->|Task| _operator_resource_item___Get_Installed_CSV_______operator_management_resource_spec_name____2[ operator resource item get installed csv
operator management resource spec name ]:::task + _operator_resource_item___Get_Installed_CSV_______operator_management_resource_spec_name____2-->|Task| _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3[ operator resource item wait until csv is
installed operator management resource spec
name ]:::task + _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3-.->|End of Block| _operator_resource_item___Operator_Installation_Management3_block_start_0 + _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3-->End ``` -### Graph for main.yml +### Graph for _operator_config_item.yml ```mermaid flowchart TD @@ -564,14 +574,13 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Obtain_List_of_PackageManifests0[obtain list of packagemanifests
When: **operator management operators default operator
management default operators length 0**]:::task - Obtain_List_of_PackageManifests0-->|Task| Disable_default_CatalogSources1[disable default catalogsources
When: **disabledefaultoperatorsources is defined**]:::task - Disable_default_CatalogSources1-->|Include task| Configure_CatalogSources__operator_catalog_source_item_yml_2[configure catalogsources
include_task: operator catalog source item yml]:::includeTasks - Configure_CatalogSources__operator_catalog_source_item_yml_2-->|Include task| Configure_Operators__operator_config_item_yml_3[configure operators
include_task: operator config item yml]:::includeTasks - Configure_Operators__operator_config_item_yml_3-->End + Start-->|Task| _operator_config_item___Retrieve_Operator_name0[ operator config item retrieve operator name]:::task + _operator_config_item___Retrieve_Operator_name0-->|Include task| _operator_config_item___Configure_Resources__operator_resource_item_yml_1[ operator config item configure resources
When: **operator management operator operator resource
name is defined**
include_task: operator resource item yml]:::includeTasks + _operator_config_item___Configure_Resources__operator_resource_item_yml_1-->|Task| _operator_config_item___Apply_Extra_Resources2[ operator config item apply extra resources
When: **operator management operator extra resources
is defined**]:::task + _operator_config_item___Apply_Extra_Resources2-->End ``` -### Graph for _operator_resource_item.yml +### Graph for _operator_catalog_source_item.yml ```mermaid flowchart TD @@ -585,20 +594,9 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _operator_resource_item___Set_Fact______operator_resource_name___capitalize___0[ operator resource item set fact operator
resource name capitalize ]:::task - _operator_resource_item___Set_Fact______operator_resource_name___capitalize___0-->|Block Start| _operator_resource_item___Configure_Operator_Subscription1_block_start_0[[ operator resource item configure operator
subscription
When: **operator resource name subscription**]]:::block - _operator_resource_item___Configure_Operator_Subscription1_block_start_0-->|Task| _operator_resource_item___Verify_Operator_Exists0[ operator resource item verify operator exists]:::task - _operator_resource_item___Verify_Operator_Exists0-->|Task| _operator_resource_item___Verify_Operator_Channel_Exists1[ operator resource item verify operator channel
exists
When: **operator management resource spec is defined and
operator management resource spec channel is
defined**]:::task - _operator_resource_item___Verify_Operator_Channel_Exists1-->|Task| _operator_resource_item___Set_Operator_channel_when_not_defined2[ operator resource item set operator channel
when not defined]:::task - _operator_resource_item___Set_Operator_channel_when_not_defined2-.->|End of Block| _operator_resource_item___Configure_Operator_Subscription1_block_start_0 - _operator_resource_item___Set_Operator_channel_when_not_defined2-->|Task| _operator_resource_item___Apply_Resource_____operator_resource_name___capitalize___2[ operator resource item apply resource
operator resource name capitalize ]:::task - _operator_resource_item___Apply_Resource_____operator_resource_name___capitalize___2-->|Block Start| _operator_resource_item___Operator_Installation_Management3_block_start_0[[ operator resource item operator installation
management
When: **operator resource name subscription**]]:::block - _operator_resource_item___Operator_Installation_Management3_block_start_0-->|Task| _operator_resource_item___Obtain_Related_CSV_Name0[ operator resource item obtain related csv name]:::task - _operator_resource_item___Obtain_Related_CSV_Name0-->|Task| _operator_resource_item___Wait_until_InstallPlan_created_______operator_management_resource_spec_name____1[ operator resource item wait until installplan
created operator management resource spec
name ]:::task - _operator_resource_item___Wait_until_InstallPlan_created_______operator_management_resource_spec_name____1-->|Task| _operator_resource_item___Get_Installed_CSV_______operator_management_resource_spec_name____2[ operator resource item get installed csv
operator management resource spec name ]:::task - _operator_resource_item___Get_Installed_CSV_______operator_management_resource_spec_name____2-->|Task| _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3[ operator resource item wait until csv is
installed operator management resource spec
name ]:::task - _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3-.->|End of Block| _operator_resource_item___Operator_Installation_Management3_block_start_0 - _operator_resource_item___Wait_until_CSV_is_installed_______operator_management_resource_spec_name____3-->End + Start-->|Task| _operator_catalog_source_item___Set_Fact______catalogsource_item_key___0[ operator catalog source item set fact
catalogsource item key ]:::task + _operator_catalog_source_item___Set_Fact______catalogsource_item_key___0-->|Task| _operator_catalog_source_item___Apply_Resource_____catalogsource_item_key___1[ operator catalog source item apply resource
catalogsource item key ]:::task + _operator_catalog_source_item___Apply_Resource_____catalogsource_item_key___1-->End ``` ### Graph for node-health-check.yml @@ -622,7 +620,7 @@ classDef rescue stroke:#665352,stroke-width:2px; node_health_check___Create_Self_Node_Remediation_subscription3-->End ``` -### Graph for _operator_catalog_source_item.yml +### Graph for main.yml ```mermaid flowchart TD @@ -636,9 +634,11 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _operator_catalog_source_item___Set_Fact______catalogsource_item_key___0[ operator catalog source item set fact
catalogsource item key ]:::task - _operator_catalog_source_item___Set_Fact______catalogsource_item_key___0-->|Task| _operator_catalog_source_item___Apply_Resource_____catalogsource_item_key___1[ operator catalog source item apply resource
catalogsource item key ]:::task - _operator_catalog_source_item___Apply_Resource_____catalogsource_item_key___1-->End + Start-->|Task| Obtain_List_of_PackageManifests0[obtain list of packagemanifests
When: **operator management operators default operator
management default operators length 0**]:::task + Obtain_List_of_PackageManifests0-->|Task| Disable_default_CatalogSources1[disable default catalogsources
When: **disabledefaultoperatorsources is defined**]:::task + Disable_default_CatalogSources1-->|Include task| Configure_CatalogSources__operator_catalog_source_item_yml_2[configure catalogsources
include_task: operator catalog source item yml]:::includeTasks + Configure_CatalogSources__operator_catalog_source_item_yml_2-->|Include task| Configure_Operators__operator_config_item_yml_3[configure operators
include_task: operator config item yml]:::includeTasks + Configure_Operators__operator_config_item_yml_3-->End ``` ## Playbook diff --git a/roles/validate_migration/README.md b/roles/validate_migration/README.md index 822a8d8..1f1c4bf 100644 --- a/roles/validate_migration/README.md +++ b/roles/validate_migration/README.md @@ -148,7 +148,7 @@ classDef rescue stroke:#665352,stroke-width:2px; vmware_firewall_rules___Debug_firewall_details2-->End ``` -### Graph for main.yml +### Graph for ocp_storage_support.yml ```mermaid flowchart TD @@ -162,11 +162,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Include task| Include_ocp_version_tasks_ocp_version_yml_0[include ocp version tasks
include_task: ocp version yml]:::includeTasks - Include_ocp_version_tasks_ocp_version_yml_0-->|Include task| Include_ocp_operators_tasks_ocp_operators_yml_1[include ocp operators tasks
include_task: ocp operators yml]:::includeTasks - Include_ocp_operators_tasks_ocp_operators_yml_1-->|Include task| Include_ocp_storage_support_tasks_ocp_storage_support_yml_2[include ocp storage support tasks
include_task: ocp storage support yml]:::includeTasks - Include_ocp_storage_support_tasks_ocp_storage_support_yml_2-->|Include task| Include_vmware_firewall_rules_tasks_vmware_firewall_rules_yml_3[include vmware firewall rules tasks
include_task: vmware firewall rules yml]:::includeTasks - Include_vmware_firewall_rules_tasks_vmware_firewall_rules_yml_3-->End + Start-->|Task| ocp_storage_support___Get_StorageClass_resources0[ocp storage support get storageclass resources]:::task + ocp_storage_support___Get_StorageClass_resources0-->|Task| ocp_storage_support___Available_Storageclasses_within_OpenShift_Cluster_and_Provisioner_Status1[ocp storage support available storageclasses
within openshift cluster and provisioner status]:::task + ocp_storage_support___Available_Storageclasses_within_OpenShift_Cluster_and_Provisioner_Status1-->|Task| ocp_storage_support___Get_PersistentVolumes2[ocp storage support get persistentvolumes]:::task + ocp_storage_support___Get_PersistentVolumes2-->|Task| ocp_storage_support___Check_validate_migration_ocp_pvs_for_block_storage_with_EXT43[ocp storage support check validate migration ocp
pvs for block storage with ext4
When: **item spec volumemode block and ext4 in
item spec csi fstype default**]:::task + ocp_storage_support___Check_validate_migration_ocp_pvs_for_block_storage_with_EXT43-->|Task| ocp_storage_support___Print_PVs_for_block_storage_with_EXT44[ocp storage support print pvs for block storage
with ext4
When: **validate migration ocp block ext4 pvs is defined**]:::task + ocp_storage_support___Print_PVs_for_block_storage_with_EXT44-->End ``` ### Graph for ocp_operators.yml @@ -207,7 +208,7 @@ classDef rescue stroke:#665352,stroke-width:2px; ocp_operators___Debug_Task__Runs_if_Subscription_Exists_5-->End ``` -### Graph for ocp_storage_support.yml +### Graph for ocp_version.yml ```mermaid flowchart TD @@ -221,15 +222,12 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| ocp_storage_support___Get_StorageClass_resources0[ocp storage support get storageclass resources]:::task - ocp_storage_support___Get_StorageClass_resources0-->|Task| ocp_storage_support___Available_Storageclasses_within_OpenShift_Cluster_and_Provisioner_Status1[ocp storage support available storageclasses
within openshift cluster and provisioner status]:::task - ocp_storage_support___Available_Storageclasses_within_OpenShift_Cluster_and_Provisioner_Status1-->|Task| ocp_storage_support___Get_PersistentVolumes2[ocp storage support get persistentvolumes]:::task - ocp_storage_support___Get_PersistentVolumes2-->|Task| ocp_storage_support___Check_validate_migration_ocp_pvs_for_block_storage_with_EXT43[ocp storage support check validate migration ocp
pvs for block storage with ext4
When: **item spec volumemode block and ext4 in
item spec csi fstype default**]:::task - ocp_storage_support___Check_validate_migration_ocp_pvs_for_block_storage_with_EXT43-->|Task| ocp_storage_support___Print_PVs_for_block_storage_with_EXT44[ocp storage support print pvs for block storage
with ext4
When: **validate migration ocp block ext4 pvs is defined**]:::task - ocp_storage_support___Print_PVs_for_block_storage_with_EXT44-->End + Start-->|Task| ocp_version___Get_OCP_version_and_check_if_it_s_4_12_or_higher0[ocp version get ocp version and check if it s 4
12 or higher]:::task + ocp_version___Get_OCP_version_and_check_if_it_s_4_12_or_higher0-->|Task| ocp_version___Print_OCP_version1[ocp version print ocp version]:::task + ocp_version___Print_OCP_version1-->End ``` -### Graph for ocp_version.yml +### Graph for main.yml ```mermaid flowchart TD @@ -243,9 +241,11 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| ocp_version___Get_OCP_version_and_check_if_it_s_4_12_or_higher0[ocp version get ocp version and check if it s 4
12 or higher]:::task - ocp_version___Get_OCP_version_and_check_if_it_s_4_12_or_higher0-->|Task| ocp_version___Print_OCP_version1[ocp version print ocp version]:::task - ocp_version___Print_OCP_version1-->End + Start-->|Include task| Include_ocp_version_tasks_ocp_version_yml_0[include ocp version tasks
include_task: ocp version yml]:::includeTasks + Include_ocp_version_tasks_ocp_version_yml_0-->|Include task| Include_ocp_operators_tasks_ocp_operators_yml_1[include ocp operators tasks
include_task: ocp operators yml]:::includeTasks + Include_ocp_operators_tasks_ocp_operators_yml_1-->|Include task| Include_ocp_storage_support_tasks_ocp_storage_support_yml_2[include ocp storage support tasks
include_task: ocp storage support yml]:::includeTasks + Include_ocp_storage_support_tasks_ocp_storage_support_yml_2-->|Include task| Include_vmware_firewall_rules_tasks_vmware_firewall_rules_yml_3[include vmware firewall rules tasks
include_task: vmware firewall rules yml]:::includeTasks + Include_vmware_firewall_rules_tasks_vmware_firewall_rules_yml_3-->End ``` ## Playbook diff --git a/roles/vm_backup_restore/README.md b/roles/vm_backup_restore/README.md index 54359f1..e0636db 100644 --- a/roles/vm_backup_restore/README.md +++ b/roles/vm_backup_restore/README.md @@ -120,7 +120,7 @@ Description: Virtual Machine backup and restore capabilities. ## Task Flow Graphs -### Graph for _snapshot_vm.yml +### Graph for vm_restore.yml ```mermaid flowchart TD @@ -134,12 +134,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _snapshot_vm___Create_Snapshot0[ snapshot vm create snapshot]:::task - _snapshot_vm___Create_Snapshot0-->|Task| _snapshot_vm___Print_Snapshot_Name1[ snapshot vm print snapshot name]:::task - _snapshot_vm___Print_Snapshot_Name1-->End + Start-->|Task| vm_restore___Verify_OpenShift_Connectivity_Details_Provided0[vm restore verify openshift connectivity details
provided]:::task + vm_restore___Verify_OpenShift_Connectivity_Details_Provided0-->|Task| vm_restore___Initialize_Variables1[vm restore initialize variables]:::task + vm_restore___Initialize_Variables1-->|Include role| vm_restore___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_2(vm restore invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole + vm_restore___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_2-->|Include task| vm_restore___Restore_VM_Snapshots__restore_vm_yml_3[vm restore restore vm snapshots
include_task: restore vm yml]:::includeTasks + vm_restore___Restore_VM_Snapshots__restore_vm_yml_3-->End ``` -### Graph for vm_restore.yml +### Graph for _snapshot_vm.yml ```mermaid flowchart TD @@ -153,11 +155,9 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| vm_restore___Verify_OpenShift_Connectivity_Details_Provided0[vm restore verify openshift connectivity details
provided]:::task - vm_restore___Verify_OpenShift_Connectivity_Details_Provided0-->|Task| vm_restore___Initialize_Variables1[vm restore initialize variables]:::task - vm_restore___Initialize_Variables1-->|Include role| vm_restore___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_2(vm restore invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole - vm_restore___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_2-->|Include task| vm_restore___Restore_VM_Snapshots__restore_vm_yml_3[vm restore restore vm snapshots
include_task: restore vm yml]:::includeTasks - vm_restore___Restore_VM_Snapshots__restore_vm_yml_3-->End + Start-->|Task| _snapshot_vm___Create_Snapshot0[ snapshot vm create snapshot]:::task + _snapshot_vm___Create_Snapshot0-->|Task| _snapshot_vm___Print_Snapshot_Name1[ snapshot vm print snapshot name]:::task + _snapshot_vm___Print_Snapshot_Name1-->End ``` ### Graph for vm_backup.yml diff --git a/roles/vm_hot_plug/README.md b/roles/vm_hot_plug/README.md index f070927..3d622be 100644 --- a/roles/vm_hot_plug/README.md +++ b/roles/vm_hot_plug/README.md @@ -88,26 +88,6 @@ Description: Hot Plug Virtual Machine resources. ## Task Flow Graphs -### Graph for main.yml - -```mermaid -flowchart TD -Start -classDef block stroke:#3498db,stroke-width:2px; -classDef task stroke:#4b76bb,stroke-width:2px; -classDef includeTasks stroke:#16a085,stroke-width:2px; -classDef importTasks stroke:#34495e,stroke-width:2px; -classDef includeRole stroke:#2980b9,stroke-width:2px; -classDef importRole stroke:#699ba7,stroke-width:2px; -classDef includeVars stroke:#8e44ad,stroke-width:2px; -classDef rescue stroke:#665352,stroke-width:2px; - - Start-->|Task| Initialize_Variables0[initialize variables]:::task - Initialize_Variables0-->|Include role| Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1(invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole - Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1-->|Include task| Process_Hot_Plug_VM__process_vm_yml_2[process hot plug vm
include_task: process vm yml]:::includeTasks - Process_Hot_Plug_VM__process_vm_yml_2-->End -``` - ### Graph for _storage.yml ```mermaid @@ -172,6 +152,26 @@ classDef rescue stroke:#665352,stroke-width:2px; _compute___Patch_VM_with_Compute_Modifications2-->End ``` +### Graph for main.yml + +```mermaid +flowchart TD +Start +classDef block stroke:#3498db,stroke-width:2px; +classDef task stroke:#4b76bb,stroke-width:2px; +classDef includeTasks stroke:#16a085,stroke-width:2px; +classDef importTasks stroke:#34495e,stroke-width:2px; +classDef includeRole stroke:#2980b9,stroke-width:2px; +classDef importRole stroke:#699ba7,stroke-width:2px; +classDef includeVars stroke:#8e44ad,stroke-width:2px; +classDef rescue stroke:#665352,stroke-width:2px; + + Start-->|Task| Initialize_Variables0[initialize variables]:::task + Initialize_Variables0-->|Include role| Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1(invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole + Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1-->|Include task| Process_Hot_Plug_VM__process_vm_yml_2[process hot plug vm
include_task: process vm yml]:::includeTasks + Process_Hot_Plug_VM__process_vm_yml_2-->End +``` + ## Playbook ```yml diff --git a/roles/vm_mac_address/README.md b/roles/vm_mac_address/README.md index 376dec8..d126275 100644 --- a/roles/vm_mac_address/README.md +++ b/roles/vm_mac_address/README.md @@ -76,7 +76,7 @@ Description: Management of Virtual Machine MAC Addresses. ## Task Flow Graphs -### Graph for main.yml +### Graph for _process_vm.yml ```mermaid flowchart TD @@ -90,13 +90,15 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Verify_vm_mac_address_request_Variable_Provided0[verify vm mac address request variable provided]:::task - Verify_vm_mac_address_request_Variable_Provided0-->|Task| Verify_Required_Properties_Provided1[verify required properties provided]:::task - Verify_Required_Properties_Provided1-->|Include task| Process_MAC_Address_VM__process_vm_yml_2[process mac address vm
include_task: process vm yml]:::includeTasks - Process_MAC_Address_VM__process_vm_yml_2-->End + Start-->|Task| _process_vm___Initialize_Variables0[ process vm initialize variables]:::task + _process_vm___Initialize_Variables0-->|Task| _process_vm___Query_for_Virtual_Machine1[ process vm query for virtual machine]:::task + _process_vm___Query_for_Virtual_Machine1-->|Task| _process_vm___Verify_Virtual_Machine_Exists2[ process vm verify virtual machine exists]:::task + _process_vm___Verify_Virtual_Machine_Exists2-->|Include task| _process_vm___Compute_Patch_for_Interface__compute_patch_yml_3[ process vm compute patch for interface
When: **vm mac address interface name default true
length 0 and vm mac address interface
macaddress default true string length
0**
include_task: compute patch yml]:::includeTasks + _process_vm___Compute_Patch_for_Interface__compute_patch_yml_3-->|Task| _process_vm___Update_VM_MAC_Address4[ process vm update vm mac address
When: **vm mac address interfaces patch length 0**]:::task + _process_vm___Update_VM_MAC_Address4-->End ``` -### Graph for _process_vm.yml +### Graph for _compute_patch.yml ```mermaid flowchart TD @@ -110,15 +112,13 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _process_vm___Initialize_Variables0[ process vm initialize variables]:::task - _process_vm___Initialize_Variables0-->|Task| _process_vm___Query_for_Virtual_Machine1[ process vm query for virtual machine]:::task - _process_vm___Query_for_Virtual_Machine1-->|Task| _process_vm___Verify_Virtual_Machine_Exists2[ process vm verify virtual machine exists]:::task - _process_vm___Verify_Virtual_Machine_Exists2-->|Include task| _process_vm___Compute_Patch_for_Interface__compute_patch_yml_3[ process vm compute patch for interface
When: **vm mac address interface name default true
length 0 and vm mac address interface
macaddress default true string length
0**
include_task: compute patch yml]:::includeTasks - _process_vm___Compute_Patch_for_Interface__compute_patch_yml_3-->|Task| _process_vm___Update_VM_MAC_Address4[ process vm update vm mac address
When: **vm mac address interfaces patch length 0**]:::task - _process_vm___Update_VM_MAC_Address4-->End + Start-->|Task| _compute_patch___Verify_Valid_MAC_Address_Provided0[ compute patch verify valid mac address provided]:::task + _compute_patch___Verify_Valid_MAC_Address_Provided0-->|Task| _compute_patch___Locate_Interface_Index1[ compute patch locate interface index]:::task + _compute_patch___Locate_Interface_Index1-->|Task| _compute_patch___Create_Patch_Item2[ compute patch create patch item
When: **vm mac address interface idx length 0 and
macaddress not in vm mac address vm interfaces
vm mac address interface idx 0 or
macaddress in vm mac address vm interfaces vm
mac address interface idx 0 and vm mac
address vm interfaces vm mac address interface
idx 0 macaddress vm mac address interface
macaddress**]:::task + _compute_patch___Create_Patch_Item2-->End ``` -### Graph for _compute_patch.yml +### Graph for main.yml ```mermaid flowchart TD @@ -132,10 +132,10 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _compute_patch___Verify_Valid_MAC_Address_Provided0[ compute patch verify valid mac address provided]:::task - _compute_patch___Verify_Valid_MAC_Address_Provided0-->|Task| _compute_patch___Locate_Interface_Index1[ compute patch locate interface index]:::task - _compute_patch___Locate_Interface_Index1-->|Task| _compute_patch___Create_Patch_Item2[ compute patch create patch item
When: **vm mac address interface idx length 0 and
macaddress not in vm mac address vm interfaces
vm mac address interface idx 0 or
macaddress in vm mac address vm interfaces vm
mac address interface idx 0 and vm mac
address vm interfaces vm mac address interface
idx 0 macaddress vm mac address interface
macaddress**]:::task - _compute_patch___Create_Patch_Item2-->End + Start-->|Task| Verify_vm_mac_address_request_Variable_Provided0[verify vm mac address request variable provided]:::task + Verify_vm_mac_address_request_Variable_Provided0-->|Task| Verify_Required_Properties_Provided1[verify required properties provided]:::task + Verify_Required_Properties_Provided1-->|Include task| Process_MAC_Address_VM__process_vm_yml_2[process mac address vm
include_task: process vm yml]:::includeTasks + Process_MAC_Address_VM__process_vm_yml_2-->End ``` ## Playbook diff --git a/roles/vm_ssh/README.md b/roles/vm_ssh/README.md index 009024a..7e56ec6 100644 --- a/roles/vm_ssh/README.md +++ b/roles/vm_ssh/README.md @@ -107,7 +107,7 @@ Description: Management of SSH keys for Virtual Machines in OpenShift. ## Task Flow Graphs -### Graph for _manage_secret_keys.yml +### Graph for _manage_secrets.yml ```mermaid flowchart TD @@ -121,19 +121,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _manage_secret_keys___Verify_SSH_path_location_or_inline_content_provided0[ manage secret keys verify ssh path location or
inline content provided]:::task - _manage_secret_keys___Verify_SSH_path_location_or_inline_content_provided0-->|Block Start| _manage_secret_keys___Process_Key_from_Path1_block_start_0[[ manage secret keys process key from path
When: **path in ssh key**]]:::block - _manage_secret_keys___Process_Key_from_Path1_block_start_0-->|Task| _manage_secret_keys___Get_SSH_Key_Path_information0[ manage secret keys get ssh key path information]:::task - _manage_secret_keys___Get_SSH_Key_Path_information0-->|Task| _manage_secret_keys___Verify_SSH_Key_Path_Exists1[ manage secret keys verify ssh key path exists]:::task - _manage_secret_keys___Verify_SSH_Key_Path_Exists1-->|Task| _manage_secret_keys___Add__path__Key_to_Dict2[ manage secret keys add path key to dict]:::task - _manage_secret_keys___Add__path__Key_to_Dict2-.->|End of Block| _manage_secret_keys___Process_Key_from_Path1_block_start_0 - _manage_secret_keys___Add__path__Key_to_Dict2-->|Block Start| _manage_secret_keys___Process_Key_from_Path2_block_start_0[[ manage secret keys process key from path
When: **content in ssh key**]]:::block - _manage_secret_keys___Process_Key_from_Path2_block_start_0-->|Task| _manage_secret_keys___Add__content__Key_to_Dict0[ manage secret keys add content key to dict]:::task - _manage_secret_keys___Add__content__Key_to_Dict0-.->|End of Block| _manage_secret_keys___Process_Key_from_Path2_block_start_0 - _manage_secret_keys___Add__content__Key_to_Dict0-->End + Start-->|Task| _manage_secrets___Verify_Secret_Namespace_and_Name_Provided0[ manage secrets verify secret namespace and name
provided]:::task + _manage_secrets___Verify_Secret_Namespace_and_Name_Provided0-->|Task| _manage_secrets___Initialize_SSH_Keys_Variables1[ manage secrets initialize ssh keys variables]:::task + _manage_secrets___Initialize_SSH_Keys_Variables1-->|Include task| _manage_secrets___Manage_Secret_SSH_Keys__manage_secret_keys_yml_2[ manage secrets manage secret ssh keys
When: **ssh keys in ssh secret**
include_task: manage secret keys yml]:::includeTasks + _manage_secrets___Manage_Secret_SSH_Keys__manage_secret_keys_yml_2-->|Task| _manage_secrets___Create_SSH_Key_Secret3[ manage secrets create ssh key secret]:::task + _manage_secrets___Create_SSH_Key_Secret3-->End ``` -### Graph for main.yml +### Graph for _manage_targets.yml ```mermaid flowchart TD @@ -147,17 +142,13 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| Verify_OpenShift_Connectivity_Details_Provided0[verify openshift connectivity details provided]:::task - Verify_OpenShift_Connectivity_Details_Provided0-->|Block Start| Manage_Secrets1_block_start_0[[manage secrets
When: **secrets in vm ssh request default**]]:::block - Manage_Secrets1_block_start_0-->|Include task| Process_Secrets__manage_secrets_yml_0[process secrets
include_task: manage secrets yml]:::includeTasks - Process_Secrets__manage_secrets_yml_0-.->|End of Block| Manage_Secrets1_block_start_0 - Process_Secrets__manage_secrets_yml_0-->|Block Start| Manage_Targets2_block_start_0[[manage targets
When: **targets in vm ssh request default**]]:::block - Manage_Targets2_block_start_0-->|Include task| Process_Targets__manage_targets_yml_0[process targets
include_task: manage targets yml]:::includeTasks - Process_Targets__manage_targets_yml_0-.->|End of Block| Manage_Targets2_block_start_0 - Process_Targets__manage_targets_yml_0-->End + Start-->|Task| _manage_targets___Verify_Namespace_and_Secret_Name_Provided0[ manage targets verify namespace and secret name
provided]:::task + _manage_targets___Verify_Namespace_and_Secret_Name_Provided0-->|Include role| _manage_targets___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1( manage targets invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole + _manage_targets___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1-->|Include task| _manage_targets___Update_VirtualMachine_with_SSH_Configurations__manage_target_yml_2[ manage targets update virtualmachine with ssh
configurations
include_task: manage target yml]:::includeTasks + _manage_targets___Update_VirtualMachine_with_SSH_Configurations__manage_target_yml_2-->End ``` -### Graph for _manage_targets.yml +### Graph for _manage_secret_keys.yml ```mermaid flowchart TD @@ -171,13 +162,19 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _manage_targets___Verify_Namespace_and_Secret_Name_Provided0[ manage targets verify namespace and secret name
provided]:::task - _manage_targets___Verify_Namespace_and_Secret_Name_Provided0-->|Include role| _manage_targets___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1( manage targets invoke collect vm role
include_role: infra openshift virtualization migration vm
collect):::includeRole - _manage_targets___Invoke_Collect_VM_Role_infra_openshift_virtualization_migration_vm_collect_1-->|Include task| _manage_targets___Update_VirtualMachine_with_SSH_Configurations__manage_target_yml_2[ manage targets update virtualmachine with ssh
configurations
include_task: manage target yml]:::includeTasks - _manage_targets___Update_VirtualMachine_with_SSH_Configurations__manage_target_yml_2-->End + Start-->|Task| _manage_secret_keys___Verify_SSH_path_location_or_inline_content_provided0[ manage secret keys verify ssh path location or
inline content provided]:::task + _manage_secret_keys___Verify_SSH_path_location_or_inline_content_provided0-->|Block Start| _manage_secret_keys___Process_Key_from_Path1_block_start_0[[ manage secret keys process key from path
When: **path in ssh key**]]:::block + _manage_secret_keys___Process_Key_from_Path1_block_start_0-->|Task| _manage_secret_keys___Get_SSH_Key_Path_information0[ manage secret keys get ssh key path information]:::task + _manage_secret_keys___Get_SSH_Key_Path_information0-->|Task| _manage_secret_keys___Verify_SSH_Key_Path_Exists1[ manage secret keys verify ssh key path exists]:::task + _manage_secret_keys___Verify_SSH_Key_Path_Exists1-->|Task| _manage_secret_keys___Add__path__Key_to_Dict2[ manage secret keys add path key to dict]:::task + _manage_secret_keys___Add__path__Key_to_Dict2-.->|End of Block| _manage_secret_keys___Process_Key_from_Path1_block_start_0 + _manage_secret_keys___Add__path__Key_to_Dict2-->|Block Start| _manage_secret_keys___Process_Key_from_Path2_block_start_0[[ manage secret keys process key from path
When: **content in ssh key**]]:::block + _manage_secret_keys___Process_Key_from_Path2_block_start_0-->|Task| _manage_secret_keys___Add__content__Key_to_Dict0[ manage secret keys add content key to dict]:::task + _manage_secret_keys___Add__content__Key_to_Dict0-.->|End of Block| _manage_secret_keys___Process_Key_from_Path2_block_start_0 + _manage_secret_keys___Add__content__Key_to_Dict0-->End ``` -### Graph for _manage_secrets.yml +### Graph for _manage_target.yml ```mermaid flowchart TD @@ -191,14 +188,16 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _manage_secrets___Verify_Secret_Namespace_and_Name_Provided0[ manage secrets verify secret namespace and name
provided]:::task - _manage_secrets___Verify_Secret_Namespace_and_Name_Provided0-->|Task| _manage_secrets___Initialize_SSH_Keys_Variables1[ manage secrets initialize ssh keys variables]:::task - _manage_secrets___Initialize_SSH_Keys_Variables1-->|Include task| _manage_secrets___Manage_Secret_SSH_Keys__manage_secret_keys_yml_2[ manage secrets manage secret ssh keys
When: **ssh keys in ssh secret**
include_task: manage secret keys yml]:::includeTasks - _manage_secrets___Manage_Secret_SSH_Keys__manage_secret_keys_yml_2-->|Task| _manage_secrets___Create_SSH_Key_Secret3[ manage secrets create ssh key secret]:::task - _manage_secrets___Create_SSH_Key_Secret3-->End + Start-->|Task| _manage_target___Update_VirtualMachine_with_SSH_Configuration0[ manage target update virtualmachine with ssh
configuration]:::task + _manage_target___Update_VirtualMachine_with_SSH_Configuration0-->|Task| _manage_target___Query_VM_for_Updated_Configuration1[ manage target query vm for updated
configuration]:::task + _manage_target___Query_VM_for_Updated_Configuration1-->|Block Start| _manage_target___Restart_the_machine2_block_start_0[[ manage target restart the machine
When: **resources in vm ssh update response and vm ssh
update response length 0 and status in vm
ssh update response resources 0 and conditions
in vm ssh update response resources 0 status and
vm ssh update response resources 0 status
conditions selectattr type equalto
restartrequired list length 0**]]:::block + _manage_target___Restart_the_machine2_block_start_0-->|Include role| _manage_target___Restart_the_VirtualMachine_infra_openshift_virtualization_migration_vm_lifecycle_0( manage target restart the virtualmachine
include_role: infra openshift virtualization migration vm
lifecycle):::includeRole + _manage_target___Restart_the_VirtualMachine_infra_openshift_virtualization_migration_vm_lifecycle_0-->|Include role| _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1( manage target verify the virtualmachine
restarted
include_role: infra openshift virtualization migration vm
lifecycle):::includeRole + _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1-.->|End of Block| _manage_target___Restart_the_machine2_block_start_0 + _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1-->End ``` -### Graph for _manage_target.yml +### Graph for main.yml ```mermaid flowchart TD @@ -212,13 +211,14 @@ classDef importRole stroke:#699ba7,stroke-width:2px; classDef includeVars stroke:#8e44ad,stroke-width:2px; classDef rescue stroke:#665352,stroke-width:2px; - Start-->|Task| _manage_target___Update_VirtualMachine_with_SSH_Configuration0[ manage target update virtualmachine with ssh
configuration]:::task - _manage_target___Update_VirtualMachine_with_SSH_Configuration0-->|Task| _manage_target___Query_VM_for_Updated_Configuration1[ manage target query vm for updated
configuration]:::task - _manage_target___Query_VM_for_Updated_Configuration1-->|Block Start| _manage_target___Restart_the_machine2_block_start_0[[ manage target restart the machine
When: **resources in vm ssh update response and vm ssh
update response length 0 and status in vm
ssh update response resources 0 and conditions
in vm ssh update response resources 0 status and
vm ssh update response resources 0 status
conditions selectattr type equalto
restartrequired list length 0**]]:::block - _manage_target___Restart_the_machine2_block_start_0-->|Include role| _manage_target___Restart_the_VirtualMachine_infra_openshift_virtualization_migration_vm_lifecycle_0( manage target restart the virtualmachine
include_role: infra openshift virtualization migration vm
lifecycle):::includeRole - _manage_target___Restart_the_VirtualMachine_infra_openshift_virtualization_migration_vm_lifecycle_0-->|Include role| _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1( manage target verify the virtualmachine
restarted
include_role: infra openshift virtualization migration vm
lifecycle):::includeRole - _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1-.->|End of Block| _manage_target___Restart_the_machine2_block_start_0 - _manage_target___Verify_the_VirtualMachine_restarted_infra_openshift_virtualization_migration_vm_lifecycle_1-->End + Start-->|Task| Verify_OpenShift_Connectivity_Details_Provided0[verify openshift connectivity details provided]:::task + Verify_OpenShift_Connectivity_Details_Provided0-->|Block Start| Manage_Secrets1_block_start_0[[manage secrets
When: **secrets in vm ssh request default**]]:::block + Manage_Secrets1_block_start_0-->|Include task| Process_Secrets__manage_secrets_yml_0[process secrets
include_task: manage secrets yml]:::includeTasks + Process_Secrets__manage_secrets_yml_0-.->|End of Block| Manage_Secrets1_block_start_0 + Process_Secrets__manage_secrets_yml_0-->|Block Start| Manage_Targets2_block_start_0[[manage targets
When: **targets in vm ssh request default**]]:::block + Manage_Targets2_block_start_0-->|Include task| Process_Targets__manage_targets_yml_0[process targets
include_task: manage targets yml]:::includeTasks + Process_Targets__manage_targets_yml_0-.->|End of Block| Manage_Targets2_block_start_0 + Process_Targets__manage_targets_yml_0-->End ``` ## Playbook From 544fa4b60de6112f8a11ddc29a399bc84c580641 Mon Sep 17 00:00:00 2001 From: Steve Fulmer Date: Mon, 6 Jul 2026 11:50:38 -0400 Subject: [PATCH 5/6] fix: add H1 heading to mtv_warm_cutover README for markdownlint Add top-level heading before docsible-generated content to satisfy MD041/first-line-heading rule. --- roles/mtv_warm_cutover/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/roles/mtv_warm_cutover/README.md b/roles/mtv_warm_cutover/README.md index f5d021e..69fb647 100644 --- a/roles/mtv_warm_cutover/README.md +++ b/roles/mtv_warm_cutover/README.md @@ -1,3 +1,5 @@ +# mtv_warm_cutover + ## mtv_warm_cutover From eca8a2c0cf31766d833ef307fab33f3ecd3bde17 Mon Sep 17 00:00:00 2001 From: Steve Fulmer Date: Mon, 6 Jul 2026 11:53:14 -0400 Subject: [PATCH 6/6] fix: remove blank line between H1 and DOCSIBLE marker Match CI docsible output which does not insert a blank line between the H1 heading and the DOCSIBLE START comment. --- roles/mtv_warm_cutover/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/roles/mtv_warm_cutover/README.md b/roles/mtv_warm_cutover/README.md index 69fb647..9358a7a 100644 --- a/roles/mtv_warm_cutover/README.md +++ b/roles/mtv_warm_cutover/README.md @@ -1,5 +1,4 @@ # mtv_warm_cutover - ## mtv_warm_cutover