| {%- from "ironic/map.jinja" import client with context %} |
| {%- if client.enabled %} |
| |
| ironic_client_pkg: |
| pkg.installed: |
| - names: {{ client.pkgs }} |
| - install_recommends: False |
| |
| {%- for identity_name, nodes in client.nodes.iteritems() %} |
| {%- for node in nodes %} |
| |
| node_{{ node.name }}_present: |
| ironicv1.node_present: |
| - name: {{ node.name }} |
| - driver: {{ node.driver }} |
| - driver_info: {{ node.driver_info|default({}) }} |
| - cloud_name: {{ client.cloud_name }} |
| - properties: {{ node.properties|default({}) }} |
| {%- if node.network_interface is defined %} |
| - network_interface: {{ node.network_interface }} |
| {%- endif %} |
| {%- if node.storage_interface is defined %} |
| - storage_interface: {{ node.storage_interface }} |
| {%- endif %} |
| {%- if node.microversion is defined %} |
| - microversion: "{{ node.microversion }}" |
| {%- endif %} |
| |
| {%- if node.ports is defined %} |
| {%- for port in node.ports %} |
| |
| {{ node.name }}_port{{ loop.index }}_present: |
| ironicv1.port_present: |
| - address: {{ port.address }} |
| - node: {{ node.name }} |
| - cloud_name: {{ client.cloud_name }} |
| {%- if port.local_link_connection is defined %} |
| - local_link_connection: {{ port.local_link_connection }} |
| {%- endif %} |
| {%- if port.microversion is defined %} |
| - microversion: "{{ port.microversion }}" |
| {%- endif %} |
| |
| {%- endfor %} # end for ports |
| {%- endif %} # end if node.ports defined |
| |
| {%- for vc_name, vc in node.get('volume_connectors', {}).iteritems() %} |
| {{ node.name }}_volume_connector{{ vc_name }}_present: |
| ironicv1.volume_connector_present: |
| - name: {{ vc.get('name', vc_name) }} |
| - node: {{ node.name }} |
| - volume_type: {{ vc.volume_type }} |
| - cloud_name: {{ client.cloud_name }} |
| |
| {%- endfor %} # end for volume_connectors |
| {%- endfor %} # end for nodes |
| {%- endfor %} # end client.nodes.iteritems |
| |
| {%- if client.get('node_state_transition', {}).get('enabled') %} |
| {%- if client.node_state_transition.enroll_to_available is defined %} |
| {# Ensure nodes are moved to available state, might take some time when automated cleaning is enabled #} |
| ironic_nodes_in_available_state: |
| ironicv1.ensure_target_state: |
| - name: 'available' |
| {%- if client.node_state_transition.enroll_to_available.node_names is defined %} |
| - node_names: {{ client.node_state_transition.enroll_to_available.node_names }} |
| {%- endif %} |
| {%- if client.node_state_transition.enroll_to_available.provision_state is defined %} |
| - provision_state: {{ client.node_state_transition.enroll_to_available.provision_state }} |
| {%- endif %} |
| - cloud_name: {{ client.cloud_name }} |
| {%- if client.node_state_transition.enroll_to_available.pool_size is defined %} |
| - pool_size: {{ client.node_state_transition.enroll_to_available.pool_size }} |
| {%- endif %} |
| {%- if client.node_state_transition.enroll_to_available.sleep_time is defined %} |
| - sleep_time: {{ client.node_state_transition.enroll_to_available.sleep_time }} |
| {%- endif %} |
| {%- if client.node_state_transition.enroll_to_available.timeout is defined %} |
| - timeout: {{ client.node_state_transition.enroll_to_available.timeout }} |
| {%- endif %} |
| {%- endif %} # enroll_to_available |
| {%- endif %} # node_state_transition.enabled |
| |
| {%- endif %} # end if client.enabled |