diff --git a/roles/sushy_emulator/README.md b/roles/sushy_emulator/README.md new file mode 100644 index 0000000000..b9718407a0 --- /dev/null +++ b/roles/sushy_emulator/README.md @@ -0,0 +1,9 @@ +# sushy_emulator + +## Privilege escalation +If apply, please explain the privilege escalation done in this role. + +## Parameters +* `param_1`: this is an example + +## Examples diff --git a/roles/sushy_emulator/defaults/main.yml b/roles/sushy_emulator/defaults/main.yml new file mode 100644 index 0000000000..78f771782e --- /dev/null +++ b/roles/sushy_emulator/defaults/main.yml @@ -0,0 +1,34 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +# All variables intended for modification should be placed in this file. +# All variables within this role should have a prefix of "cifmw_sushy_emulator" + +cifmw_sushy_emulator_driver: libvirt +cifmw_sushy_emulator_ssh_keytype: "{{ cifmw_ssh_keytype | default('ecdsa') }}" +cifmw_sushy_emulator_ssh_key_file: bmaas-ssh-key-id_rsa +cifmw_sushy_emulator_ssh_keysize: "{{ cifmw_ssh_keysize | default(521) }}" +cifmw_sushy_emulator_libvirt_user: sushyemu +cifmw_sushy_emulator_listen_ip: 0.0.0.0 +cifmw_sushy_emulator_driver_openstack_client_config_file: /etc/openstack/clouds.yaml +cifmw_sushy_emulator_driver_openstack_cloud: None +cifmw_sushy_emulator_namespace: sushy-emulator +cifmw_sushy_emulator_redfish_username: admin +cifmw_sushy_emulator_redfish_password: password +cifmw_sushy_emulator_resource_directory: "{{ (ansible_user_dir, 'ci-framework-data', 'artifacts', 'sushy_emulator') | path_join }}" +cifmw_sushy_emulator_image: quay.io/metal3-io/sushy-tools:latest +cifmw_sushy_emulator_instance_node_name_prefix: edpm-compute diff --git a/roles/sushy_emulator/meta/main.yml b/roles/sushy_emulator/meta/main.yml new file mode 100644 index 0000000000..1a1bbe2d28 --- /dev/null +++ b/roles/sushy_emulator/meta/main.yml @@ -0,0 +1,41 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +galaxy_info: + author: CI Framework + description: CI Framework Role -- sushy_emulator + company: Red Hat + license: Apache-2.0 + min_ansible_version: 2.14 + namespace: cifmw + # + # Provide a list of supported platforms, and for each platform a list of versions. + # If you don't wish to enumerate all versions for a particular platform, use 'all'. + # To view available platforms and versions (or releases), visit: + # https://galaxy.ansible.com/api/v1/platforms/ + # + platforms: + - name: CentOS + versions: + - 9 + + galaxy_tags: + - cifmw + +# List your role dependencies here, one per line. Be sure to remove the '[]' above, +# if you add dependencies to this list. +dependencies: [] diff --git a/roles/sushy_emulator/molecule/default/converge.yml b/roles/sushy_emulator/molecule/default/converge.yml new file mode 100644 index 0000000000..4633d50fad --- /dev/null +++ b/roles/sushy_emulator/molecule/default/converge.yml @@ -0,0 +1,21 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +- name: Converge + hosts: all + roles: + - role: "sushy_emulator" diff --git a/roles/sushy_emulator/molecule/default/molecule.yml b/roles/sushy_emulator/molecule/default/molecule.yml new file mode 100644 index 0000000000..dab4837473 --- /dev/null +++ b/roles/sushy_emulator/molecule/default/molecule.yml @@ -0,0 +1,26 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +# Mainly used to override the defaults set in .config/molecule/ +# By default, it uses the "config_podman.yml" - in CI, it will use +# "config_local.yml". +log: true + +provisioner: + name: ansible + log: true + env: + ANSIBLE_STDOUT_CALLBACK: yaml diff --git a/roles/sushy_emulator/molecule/default/prepare.yml b/roles/sushy_emulator/molecule/default/prepare.yml new file mode 100644 index 0000000000..d3594acc41 --- /dev/null +++ b/roles/sushy_emulator/molecule/default/prepare.yml @@ -0,0 +1,21 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + + +- name: Prepare + hosts: all + roles: + - role: test_deps diff --git a/roles/sushy_emulator/tasks/apply_resources.yml b/roles/sushy_emulator/tasks/apply_resources.yml new file mode 100644 index 0000000000..a7b9ce13c7 --- /dev/null +++ b/roles/sushy_emulator/tasks/apply_resources.yml @@ -0,0 +1,23 @@ +- name: Create the sushy-emulator namespace + kubernetes.core.k8s: + kubeconfig: "{{ cifmw_openshift_kubeconfig }}" + api_key: "{{ cifmw_openshift_token | default(omit)}}" + context: "{{ cifmw_openshift_context | default(omit) }}" + name: "{{ cifmw_sushy_emulator_namespace }}" + kind: Namespace + state: present + +- name: Apply Sushy Emulator resources + kubernetes.core.k8s: + kubeconfig: "{{ cifmw_openshift_kubeconfig }}" + api_key: "{{ cifmw_openshift_token | default(omit)}}" + context: "{{ cifmw_openshift_context | default(omit) }}" + name: "{{ cifmw_sushy_emulator_namespace }}" + state: present + src: "{{ (cifmw_sushy_emulator_resource_directory, item+'.yaml') | path_join }}" + with_items: + - secret + - configmap + - pod + - service + - route diff --git a/roles/sushy_emulator/tasks/collect_details.yml b/roles/sushy_emulator/tasks/collect_details.yml new file mode 100644 index 0000000000..35d82e2863 --- /dev/null +++ b/roles/sushy_emulator/tasks/collect_details.yml @@ -0,0 +1,62 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +- name: Get ingresses domain + environment: + KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" + PATH: "{{ cifmw_path }}" + ansible.builtin.command: + cmd: 'oc get ingresses.config/cluster -o jsonpath={.spec.domain}' + register: _ingress_domain + +- name: Get details for Libvirt driver + when: + - cifmw_sushy_emulator_driver == 'libvirt' + block: + - name: Set vars + ansible.builtin.set_fact: + _libvirt_uri: "qemu+ssh://{{ cifmw_sushy_emulator_libvirt_user }}@{{ hostvars[cifmw_edpm_deploy_baremetal_hypervisor_target].ansible_host }}/system" + + - name: Get Libvirt instance UUIDs + delegate_to: "{{ cifmw_edpm_deploy_baremetal_hypervisor_target }}" + ansible.builtin.shell: + cmd: | + set -o pipefail + virsh --connect=qemu:///system list --all --uuid --name | grep {{ cifmw_sushy_emulator_instance_node_name_prefix }} | cut -d' ' -f1 + register: _virsh_list_uuid + + - name: Set instance_uuid variable + ansible.builtin.set_fact: + _cifmw_sushy_emulator_instances: "{{ _virsh_list_uuid.stdout_lines | regex_replace('\n(?!.*\n)', ', ')}}" + +- name: Gather details for Openstack driver + when: + - cifmw_sushy_emulator_driver == 'openstack' + block: + - name: Get Openstack instance UUIDs + ansible.builtin.command: + cmd: "openstack --os-cloud={{ cifmw_sushy_emulator_driver_openstack_cloud }} server list --name {{ cifmw_sushy_emulator_instance_node_name_prefix }}.* -f json -c ID | jq -c [.[].ID])" + register: _openstack_server_list_uuid + + - name: Set instance_uuid variable for openstack driver + ansible.builtin.set_fact: + _cifmw_sushy_emulator_instances: "{{ _openstack_server_list_uuid }}" + _libvirt_uri: None + + - name: Base64 encode openstack clouds.yaml file + ansible.builtin.slurp: + src: "{{ cifmw_sushy_emulator_driver_openstack_client_config_file }}" + register: _cifmw_sushy_emulator_driver_openstack_client_config_file_b64 diff --git a/roles/sushy_emulator/tasks/create_baremetal_hosts.yml b/roles/sushy_emulator/tasks/create_baremetal_hosts.yml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/roles/sushy_emulator/tasks/main.yml b/roles/sushy_emulator/tasks/main.yml new file mode 100644 index 0000000000..0f5c557816 --- /dev/null +++ b/roles/sushy_emulator/tasks/main.yml @@ -0,0 +1,41 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +- name: Create Sushy Emulator resource directory + ansible.builtin.file: + path: "{{ cifmw_sushy_emulator_resource_directory }}" + state: directory + +- name: Install required packages + become: true + ansible.builtin.package: + name: "httpd-tools" + state: present + +- name: Collect details for Sushy Emulator config + ansible.builtin.import_tasks: collect_details.yml + +- name: Setup access to libvirt hypervisor + ansible.builtin.import_tasks: setup_access.yml + +- name: Render resource files for Sushy Emulator + ansible.builtin.import_tasks: render_resources.yml + +- name: Apply resource files for Sushy Emulator + ansible.builtin.import_tasks: apply_resources.yml + +# - name: Create Sushy Emulator baremetal hosts +# ansible.builtin.import_tasks: create_baremetal_hosts.yml diff --git a/roles/sushy_emulator/tasks/render_resources.yml b/roles/sushy_emulator/tasks/render_resources.yml new file mode 100644 index 0000000000..45744ad31f --- /dev/null +++ b/roles/sushy_emulator/tasks/render_resources.yml @@ -0,0 +1,32 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +- name: Generate htpasswd string + ansible.builtin.command: + cmd: "htpasswd -nbB {{ cifmw_sushy_emulator_redfish_username | quote}} {{ cifmw_sushy_emulator_redfish_password | quote }}" + register: _htpasswd + +- name: Write sushy emulator resource loop + ansible.builtin.template: + src: "{{ item }}_yaml.j2" + dest: "{{ (cifmw_sushy_emulator_resource_directory, item+'.yaml') | path_join }}" + mode: '0644' + with_items: + - secret + - configmap + - pod + - service + - route diff --git a/roles/sushy_emulator/tasks/setup_access.yml b/roles/sushy_emulator/tasks/setup_access.yml new file mode 100644 index 0000000000..d042b516d8 --- /dev/null +++ b/roles/sushy_emulator/tasks/setup_access.yml @@ -0,0 +1,58 @@ +--- +# Copyright Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +- name: Look for Sushy Emulator keypair file + register: _sushy_emulator_key_file + ansible.builtin.stat: + path: "{{ (cifmw_sushy_emulator_resource_directory, 'sushy_emulator_key') | path_join }}" + +- name: "Generate SSH keypair and add it to hypervisor authorized keys file" + when: + - not _sushy_emulator_key_file.stat.exists + block: + - name: Generate SSH keypair + community.crypto.openssh_keypair: + comment: "sushy emulator SSH keypair" + path: "{{ (cifmw_sushy_emulator_resource_directory, 'sushy_emulator_key') | path_join }}" + type: "{{ cifmw_sushy_emulator_ssh_keytype }}" + size: "{{ cifmw_sushy_emulator_ssh_keysize }}" + + - name: Set authorized key taken from file + delegate_to: "{{ cifmw_edpm_deploy_baremetal_hypervisor_target }}" + become: true + ansible.posix.authorized_key: + user: "{{ cifmw_sushy_emulator_libvirt_user }}" + state: present + key: "{{ lookup('file', cifmw_sushy_emulator_resource_directory+'/sushy_emulator_key.pub') }}" + +- name: Base64 encode ssh private key + ansible.builtin.slurp: + src: "{{ cifmw_sushy_emulator_resource_directory }}/sushy_emulator_key" + register: _cifmw_sushy_emulator_private_key_b64 + no_log: true + +- name: Base64 encode ssh public key + ansible.builtin.slurp: + src: "{{ cifmw_sushy_emulator_resource_directory }}/sushy_emulator_key.pub" + register: _cifmw_sushy_emulator_public_key_b64 + no_log: true + +- name: Run ssh-keyscan + ansible.builtin.shell: + cmd: | + set -o pipefail + ssh-keyscan -H {{ hostvars[cifmw_edpm_deploy_baremetal_hypervisor_target].ansible_host }} 2>/dev/null | base64 + register: _cifmw_sushy_emulator_ssh_known_hosts_b64 diff --git a/roles/sushy_emulator/templates/configmap_yaml.j2 b/roles/sushy_emulator/templates/configmap_yaml.j2 new file mode 100644 index 0000000000..ea63e42cbb --- /dev/null +++ b/roles/sushy_emulator/templates/configmap_yaml.j2 @@ -0,0 +1,42 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: sushy-emulator-config + namespace: {{ cifmw_sushy_emulator_namespace }} +data: + htpasswd: | + {{ _htpasswd.stdout }} + config: | + # Listen on all local IP interfaces + SUSHY_EMULATOR_LISTEN_IP = {{ cifmw_sushy_emulator_listen_ip }} + + # Bind to TCP port 8000 + SUSHY_EMULATOR_LISTEN_PORT = 8000 + + # Serve this SSL certificate to the clients + SUSHY_EMULATOR_SSL_CERT = None + + # If SSL certificate is being served, this is its RSA private key + SUSHY_EMULATOR_SSL_KEY = None + + # If authentication is desired, set this to an htpasswd file. + SUSHY_EMULATOR_AUTH_FILE = '/etc/sushy-emulator/.htpasswd' + + # The OpenStack cloud ID to use. This option enables OpenStack driver. + SUSHY_EMULATOR_OS_CLOUD = {{ cifmw_sushy_emulator_driver_openstack_cloud }} + + # The libvirt URI to use. This option enables libvirt driver. + SUSHY_EMULATOR_LIBVIRT_URI = {{ _libvirt_uri }} + + # Instruct the libvirt driver to ignore any instructions to + # set the boot device. Allowing the UEFI firmware to instead + # rely on the EFI Boot Manager + # Note: This sets the legacy boot element to dev="fd" + # and relies on the floppy not existing, it likely wont work + # your VM has a floppy drive. + SUSHY_EMULATOR_IGNORE_BOOT_DEVICE = False + + # This list contains the identities of instances that the driver will filter by. + # It is useful in a tenant environment where only some instances represent + # virtual baremetal. + SUSHY_EMULATOR_ALLOWED_INSTANCES = {{ _cifmw_sushy_emulator_instances }} diff --git a/roles/sushy_emulator/templates/pod_yaml.j2 b/roles/sushy_emulator/templates/pod_yaml.j2 new file mode 100644 index 0000000000..4bcb024788 --- /dev/null +++ b/roles/sushy_emulator/templates/pod_yaml.j2 @@ -0,0 +1,80 @@ +apiVersion: v1 +kind: Pod +metadata: + name: sushy-emulator + namespace: {{ cifmw_sushy_emulator_namespace }} + labels: + name: sushy-emulator +spec: + selector: + app.kubernetes.io/name: sushy-emulator + containers: + - name: sushy-emulator + image: {{ cifmw_sushy_emulator_image }} + command: ["/usr/local/bin/sushy-emulator", "--config", "/etc/sushy-emulator/config.conf"] + ports: + - containerPort: 8000 + volumeMounts: + - name: ssh-secret + mountPath: /root/.ssh + readOnly: true + - name: sushy-emulator-config + mountPath: /etc/sushy-emulator/ +{% if cifmw_sushy_emulator_driver == 'openstack' %} + - name: os-client-config + mountPath: /etc/openstack/ +{% endif %} + readinessProbe: + httpGet: + path: redfish/v1 + port: 8000 + initialDelaySeconds: 5 + periodSeconds: 5 + livenessProbe: + httpGet: + path: redfish/v1 + port: 8000 + initialDelaySeconds: 10 + failureThreshold: 30 + periodSeconds: 10 + startupProbe: + httpGet: + path: redfish/v1 + port: 8000 + failureThreshold: 30 + initialDelaySeconds: 10 + volumes: + - name: ssh-secret + secret: + secretName: sushy-emulator-secret + defaultMode: 0644 # u=rw,g=r,o=r + items: + - key: ssh-privatekey + path: id_rsa + mode: 0600 # u=rw,g=,o= + - key: ssh-publickey + path: id_rsa.pub + mode: 0644 # u=rw,g=r,o=r + - key: ssh-known-hosts + path: known_hosts + mode: 0644 # u=rw,g=r,o=r + - name: sushy-emulator-config + configMap: + name: sushy-emulator-config + defaultMode: 0644 # u=rw,g=r,o=r + items: + - key: config + path: config.conf + - key: htpasswd + path: .htpasswd + mode: 0600 # u=rw,g=r,o=r +{% if cifmw_sushy_emulator_driver == 'openstack' %} + - name: os-client-config + secret: + secretName: os-client-config + defaultMode: 0644 # u=rw,g=r,o=r + items: + - key: openstack-clouds-yaml + path: clouds.yaml + restartPolicy: OnFailure +{% endif %} diff --git a/roles/sushy_emulator/templates/route_yaml.j2 b/roles/sushy_emulator/templates/route_yaml.j2 new file mode 100644 index 0000000000..26b9af8b1d --- /dev/null +++ b/roles/sushy_emulator/templates/route_yaml.j2 @@ -0,0 +1,14 @@ +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + name: sushy-emulator-route + namespace: {{ cifmw_sushy_emulator_namespace }} + labels: + name: sushy-emulator +spec: + host: sushy-emulator.{{ _ingress_domain.stdout }} + port: + targetPort: 8000 + to: + kind: Service + name: sushy-emulator-service diff --git a/roles/sushy_emulator/templates/secret_yaml.j2 b/roles/sushy_emulator/templates/secret_yaml.j2 new file mode 100644 index 0000000000..f89e78a220 --- /dev/null +++ b/roles/sushy_emulator/templates/secret_yaml.j2 @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Secret +metadata: + name: sushy-emulator-secret + namespace: {{ cifmw_sushy_emulator_namespace }} +data: + ssh-publickey: | + {{ _cifmw_sushy_emulator_public_key_b64.content | default('""') }} + ssh-privatekey: | + {{ _cifmw_sushy_emulator_private_key_b64.content | default('""') }} + ssh-known-hosts: | + {{ _cifmw_sushy_emulator_ssh_known_hosts_b64.stdout | default('""') }} +{% if cifmw_sushy_emulator_driver == 'openstack' %} +--- +apiVersion: v1 +kind: Secret +metadata: + name: os-client-config + namespace: {{ cifmw_sushy_emulator_namespace }} +data: + openstack-clouds-yaml: | + {{ _cifmw_sushy_emulator_driver_openstack_client_config_file_b64 | default('""') }} +{% endif %} diff --git a/roles/sushy_emulator/templates/service_yaml.j2 b/roles/sushy_emulator/templates/service_yaml.j2 new file mode 100644 index 0000000000..016f67dec1 --- /dev/null +++ b/roles/sushy_emulator/templates/service_yaml.j2 @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: sushy-emulator-service + namespace: {{ cifmw_sushy_emulator_namespace }} + labels: + name: sushy-emulator +spec: + selector: + name: sushy-emulator + ports: + - protocol: TCP + port: 8000 + targetPort: 8000 diff --git a/zuul.d/molecule.yaml b/zuul.d/molecule.yaml index 91ae9e515a..218b2b034f 100644 --- a/zuul.d/molecule.yaml +++ b/zuul.d/molecule.yaml @@ -535,6 +535,16 @@ parent: cifmw-molecule-base-crc vars: TEST_RUN: set_openstack_containers +- job: + files: + - ^common-requirements.txt + - ^test-requirements.txt + - ^roles/sushy_emulator/(?!meta|README).* + - ^ci/playbooks/molecule.* + name: cifmw-molecule-sushy_emulator + parent: cifmw-molecule-base + vars: + TEST_RUN: sushy_emulator - job: files: - ^common-requirements.txt diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml index 0a4fff4288..9769710504 100644 --- a/zuul.d/projects.yaml +++ b/zuul.d/projects.yaml @@ -3,5 +3,67 @@ jobs: - podified-multinode-edpm-deployment-crc-baremetal - cifmw-baremetal-nested-crc - + - cifmw-content-provider-build-images + - cifmw-edpm-build-images + - cifmw-multinode-kuttl + - cifmw-tcib + - cifmw-molecule-artifacts + - cifmw-molecule-build_containers + - cifmw-molecule-build_openstack_packages + - cifmw-molecule-cert_manager + - cifmw-molecule-ci_gen_kustomize_values + - cifmw-molecule-ci_local_storage + - cifmw-molecule-ci_metallb + - cifmw-molecule-ci_multus + - cifmw-molecule-ci_netconfig + - 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_test_role + - cifmw-molecule-copy_container + - cifmw-molecule-devscripts + - cifmw-molecule-discover_latest_image + - cifmw-molecule-dlrn_promote + - cifmw-molecule-dlrn_report + - 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-networking_mapper + - cifmw-molecule-openshift_login + - cifmw-molecule-openshift_provisioner_node + - cifmw-molecule-openshift_setup + - cifmw-molecule-operator_build + - cifmw-molecule-operator_deploy + - cifmw-molecule-os_must_gather + - cifmw-molecule-pkg_build + - cifmw-molecule-registry_deploy + - cifmw-molecule-repo_setup + - cifmw-molecule-reproducer + - cifmw-molecule-rhol_crc + - cifmw-molecule-run_hook + - cifmw-molecule-set_openstack_containers + - cifmw-molecule-sushy_emulator + - cifmw-molecule-tempest + - cifmw-molecule-test_deps + - cifmw-molecule-test_operator + - cifmw-molecule-tofu + - cifmw-molecule-update + - cifmw-molecule-virtualbmc name: openstack-k8s-operators/ci-framework