Skip os-images-info if no image is listed

Summary

This issue was discovered when I missed enabling an image in sylva_diskimagebuilder_images while having os_image_selector configured.

Steps to reproduce

My os_image-related configuration in values.yaml:

capm3:
    os_image_selector:
      os: ubuntu
      hardened: false

What is the current bug behavior?

I got an error running bootstrap.sh:

⠈⠱ HelmRelease/os-image-server - InstallFailed - Helm install failed for release os-images/os-image-server with chart os-image-server@0.1.0+8f02a86178b3: execution error at (os-image-server/templates/tests/test_download.yaml:1:91): select-os-images: os_images is not a map (is a invalid)

What is the expected correct behavior?

Skip os-images-info if no image is listed

Relevant logs and/or screenshots

root@sylva-a1:~/sylva-mr/sylva-core# helm get values sylva-units
USER-SUPPLIED VALUES:
cluster:
  baremetal_host_default:
    bmh_spec:
      bmc:
        disableCertificateVerification: true
      bootMode: UEFI
      externallyProvisioned: false
      online: true
      rootDeviceHints:
        deviceName: /dev/sda
  baremetal_hosts:
    sylva-mgmt-control:
      bmh_metadata:
        labels:
          cluster-role: control-plane
      bmh_spec:
        bmc:
          address: redfish-virtualmedia://10.6.74.33/redfish/v1/Systems/1
          disableCertificateVerification: true
        bootMACAddress: 3C:EC:EF:E5:DB:62
        description: mgmt control plane node
      credentials:
        password: <...>
        username: root
      interface_mappings:
        eno1np0:
          mac_address: 3C:EC:EF:E5:DB:62
      ip_preallocations:
        primary: 10.6.87.13
  capi_providers:
    bootstrap_provider: cabpr
    infra_provider: capm3
  capm3:
    dns_servers:
    - 10.6.87.11
    os_image_selector:
      hardened: false
      os: ubuntu
      os-release: noble
    primary_pool_end: 10.6.87.15
    primary_pool_gateway: 10.6.87.254
    primary_pool_network: 10.6.87.0
    primary_pool_prefix: "24"
    primary_pool_start: 10.6.87.13
  cluster_primary_interfaces:
  - eno1
  - eno1np0
  control_plane:
    capm3:
      hostSelector:
        matchLabels:
          cluster-role: control-plane
      primary_pool_interface: eno1np0
    network_interfaces:
      eno1np0:
        type: phy
  control_plane_replicas: 1
  rke2:
    additionalUserData:
      config:
        users:
        - groups: users
          lock_passwd: false
          name: node-admin
          passwd: <>
          shell: /bin/bash
          ssh_authorized_keys: <>
            root@sylva-a1
          sudo: ALL=(ALL) NOPASSWD:ALL
cluster_virtual_ip: 10.6.87.91
metal3:
  bootstrap_ip: 10.6.87.11
ntp:
  enabled: true
  servers:
  - clock.corp.redhat.com
openshift:
  assisted:
    imageHostname: bm-image-service.example.com
    serviceHostname: bm-assisted-service.example.com
proxies:
  http_proxy: ""
  https_proxy: ""
  no_proxy: ""
registry_mirrors:
  default_settings:
    override_path: true
    skip_verify: true
  hosts_config:
    docker.io:
    - mirror_url: http://10.6.87.12/v2/docker.io
    gcr.io:
    - mirror_url: http://10.6.87.12/v2/gcr.io
    ghcr.io:
    - mirror_url: http://10.6.87.12/v2/ghcr.io
    quay.io:
    - mirror_url: http://10.6.87.12/v2/quay.io
    registry.gitlab.com:
    - mirror_url: http://10.6.87.12/v2/registry.gitlab.com
    registry.k8s.io:
    - mirror_url: http://10.6.87.12/v2/registry.k8s.io
    registry.opensuse.org:
    - mirror_url: http://10.6.87.12/v2/registry.opensuse.org
    registry.suse.com:
    - mirror_url: http://10.6.87.12/v2/registry.suse.com
source_templates:
  sylva-core:
    spec:
      ref:
        commit: d8f53e03135c8acbc4d6f647a5d665ca3b2a50de
      url: https://gitlab.com/sylva-projects/sylva-core.git
units:
  cabpoa:
    enabled: true
  capm3:
    enabled: true
  ingress-nginx:
    helmrelease_spec:
      values:
        controller:
          config:
            large-client-header-buffers: 4 16k
  local-path-provisioner:
    enabled: true
  longhorn:
    enabled_conditions:
    - false
  metal3:
    enabled: true
    helmrelease_spec:
      values:
        global:
          ironicKernelParams: console=tty1 suse.autologin=tty1 ipv6.disable=1
        metal3-ironic:
          images:
            ironic:
              pullPolicy: Always
              repository: registry.opensuse.org/isv/suse/edge/metal3/ironic/2024.2/containerfile/ironic
              tag: 26.1.2.3
        metal3-mariadb:
          image:
            repository: registry.opensuse.org/isv/suse/edge/metal3/containers/images/suse/mariadb
  minio-monitoring:
    enabled: false
  openshift-assisted-installer:
    enabled: true
  thanos:
    enabled: false
root@sylva-a1:~/sylva-mr/sylva-core# helm get values sylva-units | grep os_images
root@sylva-a1:~/sylva-mr/sylva-core# helm get values sylva-units | grep sylva_diskimagebuilder_images

root@sylva-a1:~/sylva-mr/sylva-core# kubectl logs os-images-info-jw9fp -n sylva-system 
Initiate ConfigMap manifest file
Looping over OS images...
Error: bad file '/opt/images.yaml': yaml: line 2: could not find expected ':'
Updating os-images-info configmap
configmap/os-images-info created
root@sylva-a1:~/sylva-mr/sylva-core# 

Possible fixes

Edited Mar 07, 2025 by Andrew Kiselev
Assignee Loading
Time tracking Loading