Files
tripleo-validations/roles/default_node_count/tasks/main.yml
Jiri Podivin 53f97be074 Refactoring default-node-count validation to use openstack-collection modules
Hypervisor statistics check has been dropped entirely, as it relies on
API deprecated by I515e484ade6c6455f82a3067940a418a0d7d965a[0]

Since reliable and standard compliant installation of ansible modules
is only possible using a collection, or system package manager,
the ansible-lint settings were adjusted to mock newly introduced modules.

Note about necessary dependencies was added to validation description.

Explanation of the mocks was added to other, previously mocked, modules,
in order to facilitate future development.

[0] 1f67ce2496

Resolves: rhbz#2149177

Depends-On: https://review.opendev.org/c/openstack/tripleo-ansible/+/862150

Signed-off-by: Jiri Podivin <jpodivin@redhat.com>
Change-Id: I70765bfbe3f319fef8112ac633b1b3c38fb1488c
(cherry picked from commit 560ac96739)
2023-01-26 11:43:52 +01:00

54 lines
1.7 KiB
YAML

---
- name: Get list of baremetal nodes
openstack.cloud.baremetal_node_info:
cloud: undercloud
register: baremetal_nodes
- name: Get baremetal node details
openstack.cloud.baremetal_node_info:
cloud: undercloud
node: "{{ item }}"
with_items: "{{ baremetal_nodes | community.general.json_query('baremetal_nodes[*].name') }}"
register: node_details
- name: Get clean node list
set_fact:
baremetal_nodes_details: "{{ [item] + baremetal_nodes_details }}"
with_items: "{{ node_details | community.general.json_query('results[*].baremetal_nodes') }}"
- name: Get active node count
set_fact:
active_nodes: "{{ baremetal_nodes_details | community.general.json_query('[?provision_state==`available`]') | count() }}"
- name: Get associated node count
set_fact:
associated_nodes: "{{ baremetal_nodes_details | community.general.json_query('[*].associated') | count() }}"
- name: Set total available node count
set_fact:
available_count: "{{ active_nodes | int + associated_nodes | int }}"
- name: Get overcloud role list
tripleo_overcloud_role_list:
register: role_list
- name: Get details for each role
tripleo_overcloud_role_show:
role_name: "{{ item }}"
default_values:
CountDefault: 0
FlavorDefault: 'baremetal'
with_items: "{{ role_list.role_list }}"
register: role_details
- name: Get requested node count
set_fact:
requested_node_count: "{{ role_details | community.general.json_query('results[*].role_detail.CountDefault') | sum() }}"
- name: Fail when requested is more than available
fail:
msg: >
Not enough baremetal nodes - available: {{ available_count }},
requested: {{ requested_node_count }}
failed_when: requested_node_count|int > available_count|int