Skip to content

Commit

Permalink
[DNM] Enable ironic testing in component lines
Browse files Browse the repository at this point in the history
  • Loading branch information
pablintino committed Oct 18, 2024
1 parent 76558e1 commit 2cb8c37
Show file tree
Hide file tree
Showing 9 changed files with 171 additions and 139 deletions.
3 changes: 0 additions & 3 deletions ci/playbooks/bootstrap-networking-mapper.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,3 @@
-e @scenarios/centos-9/base.yml
-e "@{{ ansible_user_dir }}/ci-framework-data/artifacts/parameters/zuul-params.yml"
-e cifmw_networking_mapper_ifaces_info_path=/etc/ci/env/interfaces-info.yml
{% if nodepool is defined %}
-e "@{{ ansible_user_dir }}/ci-framework-data/artifacts/nodepool_params.yml"
{% endif %}
8 changes: 8 additions & 0 deletions ci/playbooks/edpm/fail.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
- name: "Run ci/playbooks/edpm/fail.yml"
hosts: "{{ cifmw_zuul_target_host | default('all') }}"
gather_facts: true
tasks:
- name: Fail
ansible.builtin.fail:
msg: "Debug failure"
21 changes: 14 additions & 7 deletions playbooks/02-infra.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@
ansible.builtin.include_vars:
dir: "{{ cifmw_basedir }}/artifacts/parameters"

- name: Load Networking Environment Definition
vars:
cifmw_networking_mapper_assert_env_load: false
ansible.builtin.import_role:
name: networking_mapper
tasks_from: load_env_definition.yml

- name: Deploy OCP using Hive
when:
- cifmw_use_hive is defined
Expand Down Expand Up @@ -86,6 +93,13 @@
ansible.builtin.include_role:
name: cert_manager

- name: Configure hosts networking using nmstate
when:
- cifmw_config_nmstate is defined
- cifmw_config_nmstate | bool
ansible.builtin.include_role:
name: ci_nmstate

- name: Deploy Sushy Emulator and configure controller as hypervisor
when:
- cifmw_enable_virtual_baremetal_support | default(false) | bool
Expand All @@ -102,13 +116,6 @@
ansible.builtin.include_role:
name: libvirt_manager

- name: Configure hosts networking using nmstate
when:
- cifmw_config_nmstate is defined
- cifmw_config_nmstate | bool
ansible.builtin.include_role:
name: ci_nmstate

- name: Prepare container package builder
when:
- cifmw_pkg_build_list is defined
Expand Down
25 changes: 14 additions & 11 deletions roles/ci_nmstate/filter_plugins/ci_nmstate_map_instance_nets.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@ def __map_instance_net_dnss(cls, net_env_def, intance_nets_defs):
net_search_domain = network_data.get("search_domain", None)
if net_search_domain and net_search_domain not in nmstate_search_domains:
nmstate_search_domains.append(net_search_domain)

# If not DNS servers configured for the instance skip DNS config
if not nmstate_nameservers:
return {}
return {
"search": nmstate_search_domains,
"server": nmstate_nameservers,
Expand Down Expand Up @@ -273,23 +277,22 @@ def __map_instance_nets(cls, net_env_def, instance_name):
if not bool(net_data.get("skip_nm", False))
]

result = {}
interfaces = [
cls.__map_instance_net_interface(net_data) for net_data in intance_nets_defs
]
if interfaces:
result.update({"interfaces": interfaces})

if not interfaces:
return {}
routes = cls.__map_instance_net_routes(net_env_def, intance_nets_defs)
if routes:
result.update({"routes": {"config": routes}})

dns = cls.__map_instance_net_dnss(net_env_def, intance_nets_defs)
return {
"interfaces": interfaces,
"routes": {
"config": routes,
},
"dns-resolver": {
"config": dns,
},
}
if dns:
result.update({"dns-resolver": {"config": dns}})

return result

def filters(self):
return {
Expand Down
9 changes: 7 additions & 2 deletions roles/ci_nmstate/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
_cifmw_ci_nmstate_configs: >-
{{
_cifmw_ci_nmstate_configs |
combine({ item: _instance_nmstate if _instance_nmstate | length > 0 else omit })
combine({ item: _instance_nmstate | default({}) })
}}
cacheable: true
loop: >-
Expand Down Expand Up @@ -91,7 +91,12 @@
cacheable: true

- name: Provision k8s workers with nmstate
when: cifmw_openshift_kubeconfig is defined
when:
- cifmw_openshift_kubeconfig is defined
- >-
_cifmw_ci_nmstate_configs | dict2items |
selectattr('key', 'in', _cifmw_ci_nmstate_k8s_hosts) |
map('length') | sum > 0
ansible.builtin.include_tasks: nmstate_k8s_install.yml

- name: Provision unmanaged nodes with nmstate
Expand Down
48 changes: 44 additions & 4 deletions roles/ci_nmstate/tasks/nmstate_k8s_install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,54 @@
kind: Namespace
state: present

- name: Generate the OperatorGroup final CR
vars:
_operator_group_patches: >-
{{
hostvars[inventory_hostname] |
dict2items |
selectattr("key", "match",
"^cifmw_ci_nmstate_olm_operator_group_patch.*") |
sort(attribute='key') |
map(attribute='value') |
list
}}
ansible.builtin.set_fact:
_cifmw_ci_nmstate_olm_operator_group_patched: >-
{{
_cifmw_ci_nmstate_olm_operator_group_patched | default({}) |
combine(item, recursive=True)
}}
loop: "{{ [cifmw_ci_nmstate_olm_operator_group] + _operator_group_patches }}"

- name: Generate the Subscription final CR
vars:
_subscription_patches: >-
{{
hostvars[inventory_hostname] |
dict2items |
selectattr("key", "match",
"^cifmw_ci_nmstate_olm_subscription_patch.*") |
sort(attribute='key') |
map(attribute='value') |
list
}}
ansible.builtin.set_fact:
_cifmw_ci_nmstate_olm_subscription_patched: >-
{{
_cifmw_ci_nmstate_olm_subscription_patched | default({}) |
combine(item, recursive=True)
}}
loop: "{{ [cifmw_ci_nmstate_olm_subscription] + _subscription_patches }}"

- name: Save k8s nmstate OLM manifests as artifacts
ansible.builtin.copy:
mode: "0644"
dest: "{{ cifmw_ci_nmstate_manifests_dir }}/nmstate-{{ item.kind | lower }}-olm.yaml"
content: "{{ item | to_nice_yaml }}"
loop:
- "{{ cifmw_ci_nmstate_olm_operator_group }}"
- "{{ cifmw_ci_nmstate_olm_subscription }}"
- "{{ _cifmw_ci_nmstate_olm_operator_group_patched }}"
- "{{ _cifmw_ci_nmstate_olm_subscription_patched }}"
loop_control:
label: "{{ item.metadata.name }}"

Expand All @@ -32,8 +72,8 @@
definition: "{{ item }}"
state: present
loop:
- "{{ cifmw_ci_nmstate_olm_operator_group }}"
- "{{ cifmw_ci_nmstate_olm_subscription }}"
- "{{ _cifmw_ci_nmstate_olm_operator_group_patched }}"
- "{{ _cifmw_ci_nmstate_olm_subscription_patched }}"
loop_control:
label: "{{ item.metadata.name }}"

Expand Down
27 changes: 24 additions & 3 deletions roles/install_yamls/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,39 @@
name: install_yamls
tasks_from: zuul_set_operators_repo.yml

- name: Compute the cifmw_install_yamls_vars final value
tags:
- bootstrap
vars:
_cifmw_install_yamls_vars_patches: >-
{{
hostvars[inventory_hostname] |
dict2items |
selectattr("key", "match",
"^cifmw_install_yamls_vars_patch.*") |
sort(attribute='key') |
map(attribute='value') |
list
}}
ansible.builtin.set_fact:
_install_yamls_override_vars: >-
{{
_install_yamls_override_vars | default({}) |
combine(item, recursive=True)
}}
loop: "{{ [cifmw_install_yamls_vars| default({})] + _cifmw_install_yamls_vars_patches }}"

- name: Set environment override cifmw_install_yamls_environment fact
tags:
- bootstrap
vars:
install_yamls_override_vars: "{{ cifmw_install_yamls_vars| default({}) }}"
install_yamls_operators_repos: "{{ cifmw_install_yamls_operators_repo | default({}) }}"
ansible.builtin.set_fact:
cifmw_install_yamls_environment: >-
{{
install_yamls_override_vars.keys() |
_install_yamls_override_vars.keys() |
map('upper') |
zip(install_yamls_override_vars.values()) |
zip(_install_yamls_override_vars.values()) |
items2dict(key_name=0, value_name=1) |
combine({
'OUT': cifmw_install_yamls_manifests_dir,
Expand Down
65 changes: 59 additions & 6 deletions zuul.d/edpm_multinode.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -375,15 +375,12 @@
mtu: 1500
internal-api:
network: "172.17.0.0/24"
gateway: "172.17.0.1"
vlan: 20
storage:
network: "172.18.0.0/24"
gateway: "172.18.0.1"
vlan: 21
tenant:
network: "172.19.0.0/24"
gateway: "172.19.0.1"
vlan: 22
routers:
ci-router:
Expand Down Expand Up @@ -419,12 +416,15 @@
internal-api:
ip: "172.17.0.5"
trunk-parent: default
skip-nm-configuration: true
storage:
ip: "172.18.0.5"
trunk-parent: default
skip-nm-configuration: true
tenant:
ip: "172.19.0.5"
trunk-parent: default
skip-nm-configuration: true
cifmw_extras:
- '@scenarios/centos-9/multinode-ci.yml'
run:
Expand All @@ -445,23 +445,76 @@
parent: podified-multinode-edpm-deployment-crc-bootstrap-staging
vars:
cifmw_enable_virtual_baremetal_support: true
cifmw_config_nmstate: true
cifmw_ci_nmstate_instance_config:
controller:
interfaces:
- name: "{{ cifmw_networking_env_definition.instances['controller'].networks['baremetal'].interface_name | default(omit) }}"
type: ethernet
state: up

- name: baremetal
type: linux-bridge
state: up
bridge:
options:
stp:
enabled: false
port:
- name: "{{ cifmw_networking_env_definition.instances['controller'].networks['baremetal'].interface_name | default(omit) }}"
stp-hairpin-mode: false
stp-path-cost: 100
stp-priority: 32
ipv4:
address:
- ip: "{{ cifmw_networking_mapper_definition_patch_02_bmaas_net.instances.controller.networks.baremetal.ip }}"
prefix-length: 24
enabled: true
ipv6:
enabled: false
cifmw_ci_nmstate_olm_subscription_patch_01_ironic_ci_base:
metadata:
name: openshift-nmstate
cifmw_ci_nmstate_olm_operator_group_patch_01_ironic_ci_base:
metadata:
name: openshift-nmstate
cifmw_install_yamls_vars_patch_01_ironic_ci_base:
NMSTATE_OPERATOR_GROUP: "openshift-nmstate"
NMSTATE_SUBSCRIPTION: "openshift-nmstate"
cifmw_networking_mapper_definition_patch_02_bmaas_net:
networks:
baremetal:
network: "172.20.1.0/24"
gateway: "172.20.1.1"
mtu: 1500
instances:
controller:
networks:
baremetal:
ip: "172.20.1.11"
skip-nm-configuration: true
crc:
networks:
baremetal:
ip: "172.20.1.5"
skip-nm-configuration: true
cifmw_libvirt_manager_configuration:
vms:
compute:
uefi: true
amount: 2
root_part_id: 4
disk_file_name: "blank"
disksize: 30
memory: 4
cpus: 4
nets:
- baremetal
networks:
baremetal: |
<network>
<name>baremetal</name>
<forward mode='bridge' />
<bridge name='baremetal' />
</network>
run:
- ci/playbooks/edpm/run.yml
- ci/playbooks/edpm/fail.yml
Loading

0 comments on commit 2cb8c37

Please sign in to comment.