40 lines
1.3 KiB
YAML
40 lines
1.3 KiB
YAML
---
|
|
- name: Retrieve the hypervisor statistics
|
|
set_fact:
|
|
statistics: "{{ lookup('nova_hypervisor_statistics', wantlist=True) }}"
|
|
|
|
- name: Get default role counts
|
|
set_fact:
|
|
roles_info: "{{ lookup('roles_info', wantlist=True) }}"
|
|
|
|
- name: Set requested count
|
|
set_fact:
|
|
requested_count: "{{ roles_info|sum(attribute='count') }}"
|
|
|
|
- name: Get associated nodes
|
|
set_fact:
|
|
associated_nodes: "{{ lookup('ironic_nodes', 'associated', wantlist=True) }}"
|
|
|
|
- name: Get available nodes
|
|
set_fact:
|
|
available_nodes: "{{ lookup('ironic_nodes', 'provision_state', ['available'], wantlist=True) }}"
|
|
|
|
- name: Set count of available nodes
|
|
set_fact:
|
|
available_count: "{{ ((associated_nodes|length) + (available_nodes|length))|int }}"
|
|
|
|
- name: Fail when requested is more than available
|
|
fail:
|
|
msg: >
|
|
Not enough baremetal nodes - available: {{ available_count }},
|
|
requested: {{ requested_count }}
|
|
failed_when: requested_count|int > available_count|int
|
|
|
|
- name: Fail when hypervisor count is less than available count
|
|
fail:
|
|
msg: >
|
|
Only {{ statistics.count }} nodes are exposed to Nova of
|
|
{{ available_count }} requests. Check that enough nodes are
|
|
in 'available' state with maintenance mode off.
|
|
failed_when: statistics.count < available_count|int
|