From 24d65a3f1f2ebaf2104549c9dd02c1d05530219b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Harald=20Jens=C3=A5s?= <hjensas@redhat.com>
Date: Fri, 8 Nov 2024 14:41:29 +0100
Subject: [PATCH] WIP: crc-bootstrap-staging-ironic

Swtich the scenario to scenarios/centos-9/ironic.yml
Update hooks/playbooks/control_plane_ironic.yml to include kustomization
patches to configure ironic and Nova Cell with computeDriver: ironic.IronicDriver

Depends-On: https://github.com/openstack-k8s-operators/install_yamls/pull/969
---
 hooks/playbooks/control_plane_ironic.yml |  60 +++++++
 zuul.d/edpm_multinode.yaml               | 129 ++++++++++++++
 zuul.d/projects.yaml                     | 207 ++++++++++++-----------
 3 files changed, 293 insertions(+), 103 deletions(-)

diff --git a/hooks/playbooks/control_plane_ironic.yml b/hooks/playbooks/control_plane_ironic.yml
index 7f278107d2..a461eb348a 100644
--- a/hooks/playbooks/control_plane_ironic.yml
+++ b/hooks/playbooks/control_plane_ironic.yml
@@ -21,6 +21,66 @@
           - target:
               kind: OpenStackControlPlane
             patch: |-
+              - op: add
+                path: /spec/swift/enabled
+                value: false
+              - op: add
+                path: /spec/barbican/enabled
+                value: false
+              - op: add
+                path: /spec/telemetry/enabled
+                value: false
               - op: add
                 path: /spec/ironic/enabled
                 value: {{ cifmw_services_ironic_enabled | default('false') }}
+              - op: add
+                path: /spec/ironic/template/rpcTransport
+                value: oslo
+              - op: add
+                path: /spec/ironic/template/ironicAPI/override
+                value:
+                  service:
+                    internal:
+                      metadata:
+                        annotations:
+                          metallb.universe.tf/address-pool: internalapi
+                          metallb.universe.tf/allow-shared-ip: internalapi
+                          metallb.universe.tf/loadBalancerIPs: 172.17.0.80
+                      spec:
+                        type: LoadBalancer
+              - op: add
+                path: /spec/ironic/template/ironicConductors/0/networkAttachments
+                value:
+                  - baremetal
+              - op: add
+                path: /spec/ironic/template/ironicConductors/0/provisionNetwork
+                value: baremetal
+              - op: add
+                path: /spec/ironic/template/ironicConductors/0/customServiceConfig
+                value: |
+                  [neutron]
+                  cleaning_network = provisioning
+                  provisioning_network = provisioning
+                  rescuing_network = provisioning
+              - op: add
+                path: /spec/ironic/template/ironicInspector/networkAttachments
+                value:
+                  - baremetal
+              - op: add
+                path: /spec/ovn/template/ovnController/nicMappings
+                value:
+                  baremetal: baremetal
+              - op: add
+                path: /spec/nova/cellTemplates
+                value:
+                  cell0:
+                    cellDatabaseUser: nova_cell0
+                    hasAPIAccess: true
+                  cell1:
+                    cellDatabaseUser: nova_cell1
+                    cellDatabaseInstance: openstack-cell1
+                    cellMessageBusInstance: rabbitmq-cell1
+                    hasAPIAccess: true
+                    novaComputeTemplates:
+                      compute-ironic:
+                        computeDriver: ironic.IronicDriver
diff --git a/zuul.d/edpm_multinode.yaml b/zuul.d/edpm_multinode.yaml
index 5438fbcb38..f34dcc0ae3 100644
--- a/zuul.d/edpm_multinode.yaml
+++ b/zuul.d/edpm_multinode.yaml
@@ -455,6 +455,124 @@
       cifmw_config_nmstate: true
       cifmw_config_multus: true
       cifmw_ci_nmstate_instance_config:
+        crc:
+          interfaces:
+            - name: ospbr
+              description: Configuring Bridge ospbr with interface ens8
+              type: linux-bridge
+              mtu: 1500
+              bridge:
+                options:
+                  stp:
+                    enabled: false
+                port:
+                  - name: ens8
+                    vlan: {}
+              ipv4:
+                address:
+                  - ip: 192.168.122.10
+                    prefix-length: 24
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: storagemgmt vlan interface
+              name: ens8.23
+              type: vlan
+              vlan:
+                base-iface: ens8
+                id: 23
+                reorder-headers: true
+              ipv4:
+                address:
+                  - ip: 172.20.0.5
+                    prefix-length: 24
+                dhcp: false
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: tenant vlan interface
+              name: ens8.22
+              type: vlan
+              vlan:
+                base-iface: ens8
+                id: 22
+                reorder-headers: true
+              ipv4:
+                address:
+                  - ip: 172.19.0.5
+                    prefix-length: 24
+                dhcp: false
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: storage vlan interface
+              name: ens8.21
+              type: vlan
+              vlan:
+                base-iface: ens8
+                id: 21
+                reorder-headers: true
+              ipv4:
+                address:
+                  - ip: 172.18.0.5
+                    prefix-length: 24
+                dhcp: false
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: internalapi vlan interface
+              name: ens8.20
+              type: vlan
+              vlan:
+                base-iface: ens8
+                id: 20
+                reorder-headers: true
+              ipv4:
+                address:
+                  - ip: 172.17.0.5
+                    prefix-length: 24
+                dhcp: false
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: baremetal bridge
+              name: baremetal
+              mtu: 1500
+              type: linux-bridge
+              bridge:
+                options:
+                  stp:
+                    enabled: false
+                port:
+                  - name: ens7
+              ipv4:
+                address:
+                  - ip: 172.20.1.5
+                    prefix-length: "24"
+                enabled: true
+              ipv6:
+                enabled: false
+            - description: Baremetal VRF
+              name: baremetalvrf
+              state: up
+              type: vrf
+              vrf:
+                port:
+                  - baremetal
+                route-table-id: 10
+          route-rules:
+            config: []
+          routes:
+            config:
+              - destination: 0.0.0.0/0
+                metric: 150
+                next-hop-address: 172.20.1.1
+                next-hop-interface: baremetal
+                table-id: 10
+              #- destination: 172.20.1.0/24
+              #  metric: 150
+              #  next-hop-address: 192.168.122.1
+              #  next-hop-interface: ospbr
         controller:
           interfaces:
             - name: "{{ cifmw_networking_env_definition.instances['controller'].networks['baremetal'].interface_name | default(omit) }}"
@@ -481,10 +599,13 @@
                 enabled: false
       cifmw_install_yamls_vars_patch_01_ironic_ci_base:
         INSTALL_NMSTATE: false
+        INSTALL_NNCP: false
+        NNCP_INTERFACE: ens8
       cifmw_networking_mapper_definition_patch_02_bmaas_net:
         networks:
           baremetal:
             network: "172.20.1.0/24"
+            gateway: "172.20.1.1"
             mtu: 1500
             tools:
               multus:
@@ -500,6 +621,12 @@
             networks:
               baremetal:
                 ip: "172.20.1.5"
+      cifmw_networking_mapper_definition_patch_03_router:
+        routers:
+          ci-router:
+            networks:
+              - default
+              - baremetal
       cifmw_libvirt_manager_configuration:
         vms:
           compute:
@@ -519,5 +646,7 @@
               <forward mode='bridge' />
               <bridge name='baremetal' />
             </network>
+      cifmw_extras:
+        - '@scenarios/centos-9/ironic.yml'
     run:
       - ci/playbooks/edpm/run.yml
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index f0e441bce3..ac39f0f13a 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -2,106 +2,107 @@
     github-check:
       jobs:
       - noop
-      - cifmw-pod-ansible-test
-      - cifmw-pod-k8s-snippets-source
-      - cifmw-pod-pre-commit
-      - cifmw-pod-zuul-files
-      - cifmw-content-provider-build-images
-      - cifmw-edpm-build-images
-      - cifmw-multinode-kuttl
-      - cifmw-tcib
-      - cifmw-architecture-validate-hci
-      - ci-framework-openstack-meta-content-provider
-      - build-push-container-cifmw-client
-      - cifmw-molecule-adoption_osp_deploy
-      - cifmw-molecule-artifacts
-      - cifmw-molecule-build_containers
-      - cifmw-molecule-build_openstack_packages
-      - cifmw-molecule-build_push_container
-      - cifmw-molecule-cert_manager
-      - cifmw-molecule-ci_dcn_site
-      - cifmw-molecule-ci_gen_kustomize_values
-      - cifmw-molecule-ci_local_storage
-      - cifmw-molecule-ci_lvms_storage
-      - cifmw-molecule-ci_multus
-      - cifmw-molecule-ci_network
-      - cifmw-molecule-ci_nmstate
-      - cifmw-molecule-ci_setup
-      - cifmw-molecule-cifmw_block_device
-      - cifmw-molecule-cifmw_ceph_client
-      - cifmw-molecule-cifmw_ceph_spec
-      - cifmw-molecule-cifmw_cephadm
-      - cifmw-molecule-cifmw_create_admin
-      - cifmw-molecule-cifmw_external_dns
-      - cifmw-molecule-cifmw_ntp
-      - cifmw-molecule-cifmw_test_role
-      - cifmw-molecule-compliance
-      - cifmw-molecule-config_drive
-      - cifmw-molecule-copy_container
-      - cifmw-molecule-deploy_bmh
-      - cifmw-molecule-devscripts
-      - cifmw-molecule-discover_latest_image
-      - cifmw-molecule-dlrn_promote
-      - cifmw-molecule-dlrn_report
-      - cifmw-molecule-dnsmasq
-      - cifmw-molecule-edpm_build_images
-      - cifmw-molecule-edpm_deploy
-      - cifmw-molecule-edpm_deploy_baremetal
-      - cifmw-molecule-edpm_kustomize
-      - cifmw-molecule-edpm_prepare
-      - cifmw-molecule-env_op_images
-      - cifmw-molecule-hci_prepare
-      - cifmw-molecule-hive
-      - cifmw-molecule-idrac_configuration
-      - cifmw-molecule-install_ca
-      - cifmw-molecule-install_openstack_ca
-      - cifmw-molecule-install_yamls
-      - cifmw-molecule-kustomize_deploy
-      - cifmw-molecule-libvirt_manager
-      - cifmw-molecule-manage_secrets
-      - cifmw-molecule-mirror_registry
-      - cifmw-molecule-nat64_appliance
-      - cifmw-molecule-networking_mapper
-      - cifmw-molecule-openshift_adm
-      - cifmw-molecule-openshift_login
-      - cifmw-molecule-openshift_obs
-      - cifmw-molecule-openshift_provisioner_node
-      - cifmw-molecule-openshift_setup
-      - cifmw-molecule-operator_build
-      - cifmw-molecule-operator_deploy
-      - cifmw-molecule-os_must_gather
-      - cifmw-molecule-os_net_setup
-      - cifmw-molecule-ovirt
-      - cifmw-molecule-pkg_build
-      - cifmw-molecule-podman
-      - cifmw-molecule-polarion
-      - cifmw-molecule-registry_deploy
-      - cifmw-molecule-repo_setup
-      - cifmw-molecule-reportportal
-      - cifmw-molecule-reproducer
-      - cifmw-molecule-rhol_crc
-      - cifmw-molecule-run_hook
-      - cifmw-molecule-set_openstack_containers
-      - cifmw-molecule-shiftstack
-      - cifmw-molecule-ssh_jumper
-      - cifmw-molecule-sushy_emulator
-      - cifmw-molecule-switch_config
-      - cifmw-molecule-tempest
-      - cifmw-molecule-test_deps
-      - cifmw-molecule-test_operator
-      - cifmw-molecule-tofu
-      - cifmw-molecule-update
-      - cifmw-molecule-update_containers
-      - cifmw-molecule-validations
-      - cifmw-molecule-virtualbmc
-    github-experimental-trigger:
-      jobs:
-      - downstream-va-hci-trigger-job
-      - downstream-uni02beta-upstream-trigger-job
-    github-post:
-      jobs:
-      - build-push-container-cifmw-client-post
-    name: openstack-k8s-operators/ci-framework
-    templates:
-    - podified-multinode-edpm-ci-framework-pipeline
-    - data-plane-adoption-ci-framework-pipeline
+      - podified-multinode-edpm-deployment-crc-bootstrap-staging-ironic
+#      - cifmw-pod-ansible-test
+#      - cifmw-pod-k8s-snippets-source
+#      - cifmw-pod-pre-commit
+#      - cifmw-pod-zuul-files
+#      - cifmw-content-provider-build-images
+#      - cifmw-edpm-build-images
+#      - cifmw-multinode-kuttl
+#      - cifmw-tcib
+#      - cifmw-architecture-validate-hci
+#      - ci-framework-openstack-meta-content-provider
+#      - build-push-container-cifmw-client
+#      - cifmw-molecule-adoption_osp_deploy
+#      - cifmw-molecule-artifacts
+#      - cifmw-molecule-build_containers
+#      - cifmw-molecule-build_openstack_packages
+#      - cifmw-molecule-build_push_container
+#      - cifmw-molecule-cert_manager
+#      - cifmw-molecule-ci_dcn_site
+#      - cifmw-molecule-ci_gen_kustomize_values
+#      - cifmw-molecule-ci_local_storage
+#      - cifmw-molecule-ci_lvms_storage
+#      - cifmw-molecule-ci_multus
+#      - cifmw-molecule-ci_network
+#      - cifmw-molecule-ci_nmstate
+#      - cifmw-molecule-ci_setup
+#      - cifmw-molecule-cifmw_block_device
+#      - cifmw-molecule-cifmw_ceph_client
+#      - cifmw-molecule-cifmw_ceph_spec
+#      - cifmw-molecule-cifmw_cephadm
+#      - cifmw-molecule-cifmw_create_admin
+#      - cifmw-molecule-cifmw_external_dns
+#      - cifmw-molecule-cifmw_ntp
+#      - cifmw-molecule-cifmw_test_role
+#      - cifmw-molecule-compliance
+#      - cifmw-molecule-config_drive
+#      - cifmw-molecule-copy_container
+#      - cifmw-molecule-deploy_bmh
+#      - cifmw-molecule-devscripts
+#      - cifmw-molecule-discover_latest_image
+#      - cifmw-molecule-dlrn_promote
+#      - cifmw-molecule-dlrn_report
+#      - cifmw-molecule-dnsmasq
+#      - cifmw-molecule-edpm_build_images
+#      - cifmw-molecule-edpm_deploy
+#      - cifmw-molecule-edpm_deploy_baremetal
+#      - cifmw-molecule-edpm_kustomize
+#      - cifmw-molecule-edpm_prepare
+#      - cifmw-molecule-env_op_images
+#      - cifmw-molecule-hci_prepare
+#      - cifmw-molecule-hive
+#      - cifmw-molecule-idrac_configuration
+#      - cifmw-molecule-install_ca
+#      - cifmw-molecule-install_openstack_ca
+#      - cifmw-molecule-install_yamls
+#      - cifmw-molecule-kustomize_deploy
+#      - cifmw-molecule-libvirt_manager
+#      - cifmw-molecule-manage_secrets
+#      - cifmw-molecule-mirror_registry
+#      - cifmw-molecule-nat64_appliance
+#      - cifmw-molecule-networking_mapper
+#      - cifmw-molecule-openshift_adm
+#      - cifmw-molecule-openshift_login
+#      - cifmw-molecule-openshift_obs
+#      - cifmw-molecule-openshift_provisioner_node
+#      - cifmw-molecule-openshift_setup
+#      - cifmw-molecule-operator_build
+#      - cifmw-molecule-operator_deploy
+#      - cifmw-molecule-os_must_gather
+#      - cifmw-molecule-os_net_setup
+#      - cifmw-molecule-ovirt
+#      - cifmw-molecule-pkg_build
+#      - cifmw-molecule-podman
+#      - cifmw-molecule-polarion
+#      - cifmw-molecule-registry_deploy
+#      - cifmw-molecule-repo_setup
+#      - cifmw-molecule-reportportal
+#      - cifmw-molecule-reproducer
+#      - cifmw-molecule-rhol_crc
+#      - cifmw-molecule-run_hook
+#      - cifmw-molecule-set_openstack_containers
+#      - cifmw-molecule-shiftstack
+#      - cifmw-molecule-ssh_jumper
+#      - cifmw-molecule-sushy_emulator
+#      - cifmw-molecule-switch_config
+#      - cifmw-molecule-tempest
+#      - cifmw-molecule-test_deps
+#      - cifmw-molecule-test_operator
+#      - cifmw-molecule-tofu
+#      - cifmw-molecule-update
+#      - cifmw-molecule-update_containers
+#      - cifmw-molecule-validations
+#      - cifmw-molecule-virtualbmc
+#    github-experimental-trigger:
+#      jobs:
+#      - downstream-va-hci-trigger-job
+#      - downstream-uni02beta-upstream-trigger-job
+#    github-post:
+#      jobs:
+#      - build-push-container-cifmw-client-post
+#    name: openstack-k8s-operators/ci-framework
+#    templates:
+#    - podified-multinode-edpm-ci-framework-pipeline
+#    - data-plane-adoption-ci-framework-pipeline