diff --git a/.automation b/.automation index a7de3abb3..88da3eb6b 160000 --- a/.automation +++ b/.automation @@ -1 +1 @@ -Subproject commit a7de3abb3f0bf529e78c4ba9ad1cbe26d356dd3b +Subproject commit 88da3eb6b5022bad88db22506b737886bce796de diff --git a/.github/workflows/stackhpc-build-kayobe-image.yml b/.github/workflows/stackhpc-build-kayobe-image.yml index eba0b2799..f6d150f5a 100644 --- a/.github/workflows/stackhpc-build-kayobe-image.yml +++ b/.github/workflows/stackhpc-build-kayobe-image.yml @@ -42,7 +42,7 @@ jobs: build-kayobe-image: name: Build kayobe image if: inputs.if || github.repository == 'stackhpc/stackhpc-kayobe-config' && github.event_name == 'push' - runs-on: ubuntu-24.04 + runs-on: ubuntu-22.04 permissions: contents: read packages: write @@ -93,6 +93,7 @@ jobs: http_proxy=${{ inputs.http_proxy }} https_proxy=${{ inputs.https_proxy }} BASE_IMAGE=${{ inputs.base_image || 'rockylinux:9' }} + USE_PYTHON_312=true KAYOBE_USER_UID=1001 KAYOBE_USER_GID=1001 push: true diff --git a/.github/workflows/stackhpc-pull-request.yml b/.github/workflows/stackhpc-pull-request.yml index b5cf19c06..276b30692 100644 --- a/.github/workflows/stackhpc-pull-request.yml +++ b/.github/workflows/stackhpc-pull-request.yml @@ -8,58 +8,58 @@ name: Pull request 'on': pull_request: jobs: - # # Detect which files have changed and use this to run jobs conditionally. - # # Note that we can't use the workflow-level paths attribute since this - # # would skip the workflow entirely, and would prevent us from making the - # # aio jobs required to pass (a skip counts as a pass). - # check-changes: - # runs-on: ubuntu-24.04 - # permissions: - # pull-requests: read - # name: Check changed files - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' - # outputs: - # aio: ${{ steps.changes.outputs.aio }} - # build-kayobe-image: ${{ steps.changes.outputs.build-kayobe-image }} - # check-tags: ${{ steps.changes.outputs.check-tags }} - # steps: - # - name: GitHub Checkout - # uses: actions/checkout@v4 - - # - name: Check changed files - # uses: dorny/paths-filter@v3 - # id: changes - # with: - # # Filters are defined in this file. - # filters: .github/path-filters.yml - - # tox: - # runs-on: ubuntu-24.04 - # permissions: {} - # strategy: - # matrix: - # include: - # - environment: pep8 - # python-version: "3.10" - # - environment: releasenotes - # python-version: "3.10" - # - environment: docs - # python-version: "3.10" - # name: Tox ${{ matrix.environment }} with Python ${{ matrix.python-version }} - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' - # steps: - # - name: GitHub Checkout ๐Ÿ›Ž - # uses: actions/checkout@v4 - # with: - # fetch-depth: 0 - # - name: Setup Python ${{ matrix.python-version }} ๐Ÿ - # uses: actions/setup-python@v5 - # with: - # python-version: ${{ matrix.python-version }} - # - name: Install Tox ๐Ÿ“ฆ - # run: pip install tox - # - name: Run Tox ${{ matrix.environment }} ๐Ÿงช - # run: tox -e ${{ matrix.environment }} + # Detect which files have changed and use this to run jobs conditionally. + # Note that we can't use the workflow-level paths attribute since this + # would skip the workflow entirely, and would prevent us from making the + # aio jobs required to pass (a skip counts as a pass). + check-changes: + runs-on: ubuntu-24.04 + permissions: + pull-requests: read + name: Check changed files + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + outputs: + aio: ${{ steps.changes.outputs.aio }} + build-kayobe-image: ${{ steps.changes.outputs.build-kayobe-image }} + check-tags: ${{ steps.changes.outputs.check-tags }} + steps: + - name: GitHub Checkout + uses: actions/checkout@v4 + + - name: Check changed files + uses: dorny/paths-filter@v3 + id: changes + with: + # Filters are defined in this file. + filters: .github/path-filters.yml + + tox: + runs-on: ubuntu-24.04 + permissions: {} + strategy: + matrix: + include: + - environment: pep8 + python-version: "3.12" + - environment: releasenotes + python-version: "3.12" + - environment: docs + python-version: "3.12" + name: Tox ${{ matrix.environment }} with Python ${{ matrix.python-version }} + if: github.repository == 'stackhpc/stackhpc-kayobe-config' + steps: + - name: GitHub Checkout ๐Ÿ›Ž + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Python ${{ matrix.python-version }} ๐Ÿ + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install Tox ๐Ÿ“ฆ + run: pip install tox + - name: Run Tox ${{ matrix.environment }} ๐Ÿงช + run: tox -e ${{ matrix.environment }} lint: runs-on: ubuntu-24.04 @@ -106,14 +106,14 @@ jobs: # when the parent jobs completed successfully or were skipped. We pass an # 'if' argument to the called workflow to allow running it conditionally. - # build-kayobe-image: - # name: Build Kayobe Image - # needs: - # - check-changes - # uses: ./.github/workflows/stackhpc-build-kayobe-image.yml - # with: - # if: ${{ needs.check-changes.outputs.build-kayobe-image == 'true' }} - # if: github.repository == 'stackhpc/stackhpc-kayobe-config' + build-kayobe-image: + name: Build Kayobe Image + needs: + - check-changes + uses: ./.github/workflows/stackhpc-build-kayobe-image.yml + with: + if: ${{ needs.check-changes.outputs.build-kayobe-image == 'true' }} + if: github.repository == 'stackhpc/stackhpc-kayobe-config' # check-tags: # name: Check container image tags @@ -127,73 +127,73 @@ jobs: # secrets: inherit # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - # all-in-one-ubuntu-noble-ovs: - # name: aio (Ubuntu Noble OVS) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: ubuntu - # os_release: noble - # ssh_username: ubuntu - # neutron_plugin: ovs - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-ubuntu-noble-ovn: - # name: aio (Ubuntu Noble OVN) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: ubuntu - # os_release: noble - # ssh_username: ubuntu - # neutron_plugin: ovn - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-rocky-9-ovs: - # name: aio (Rocky 9 OVS) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: rocky - # os_release: "9" - # ssh_username: cloud-user - # neutron_plugin: ovs - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} - - # all-in-one-rocky-9-ovn: - # name: aio (Rocky 9 OVN) - # needs: - # - check-changes - # - build-kayobe-image - # uses: ./.github/workflows/stackhpc-all-in-one.yml - # with: - # kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} - # os_distribution: rocky - # os_release: "9" - # ssh_username: cloud-user - # neutron_plugin: ovn - # OS_CLOUD: openstack - # if: ${{ needs.check-changes.outputs.aio == 'true' }} - # secrets: inherit - # if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + all-in-one-ubuntu-noble-ovs: + name: aio (Ubuntu Noble OVS) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: ubuntu + os_release: noble + ssh_username: ubuntu + neutron_plugin: ovs + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-ubuntu-noble-ovn: + name: aio (Ubuntu Noble OVN) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: ubuntu + os_release: noble + ssh_username: ubuntu + neutron_plugin: ovn + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-rocky-9-ovs: + name: aio (Rocky 9 OVS) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: rocky + os_release: "9" + ssh_username: cloud-user + neutron_plugin: ovs + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} + + all-in-one-rocky-9-ovn: + name: aio (Rocky 9 OVN) + needs: + - check-changes + - build-kayobe-image + uses: ./.github/workflows/stackhpc-all-in-one.yml + with: + kayobe_image: ${{ needs.build-kayobe-image.outputs.kayobe_image }} + os_distribution: rocky + os_release: "9" + ssh_username: cloud-user + neutron_plugin: ovn + OS_CLOUD: openstack + if: ${{ needs.check-changes.outputs.aio == 'true' }} + secrets: inherit + if: ${{ ! failure() && ! cancelled() && github.repository == 'stackhpc/stackhpc-kayobe-config' }} # Test two upgrade scenarios: Ubuntu Noble OVS and Rocky 9 OVN. diff --git a/doc/source/operations/upgrading-openstack.rst b/doc/source/operations/upgrading-openstack.rst index db7d2dc1f..688e4faee 100644 --- a/doc/source/operations/upgrading-openstack.rst +++ b/doc/source/operations/upgrading-openstack.rst @@ -52,7 +52,7 @@ to the ``stackhpc.linux.sriov`` role, which is not used by Kayobe. If a custom playbook uses this role, you can retain existing behaviour by setting ``sriov_numvfs_driver`` to ``udev``. -Neutron driver defaults +Neutron driver defaults ----------------------- The default Neutron ML2 type drivers and tenant network types now use diff --git a/etc/kayobe/environments/ci-builder/stackhpc-ci.yml b/etc/kayobe/environments/ci-builder/stackhpc-ci.yml index bdaf32602..eac14337c 100644 --- a/etc/kayobe/environments/ci-builder/stackhpc-ci.yml +++ b/etc/kayobe/environments/ci-builder/stackhpc-ci.yml @@ -8,7 +8,6 @@ kolla_docker_namespace: stackhpc-dev # Kolla feature flag configuration. kolla_enable_barbican: true kolla_enable_blazar: true -kolla_enable_caso: true kolla_enable_central_logging: true kolla_enable_cinder: true kolla_enable_cloudkitty: true diff --git a/etc/kayobe/kolla-image-tags.yml b/etc/kayobe/kolla-image-tags.yml index 186f45fd2..648d98334 100644 --- a/etc/kayobe/kolla-image-tags.yml +++ b/etc/kayobe/kolla-image-tags.yml @@ -5,5 +5,5 @@ # TODO: Build real master images kolla_image_tags: openstack: - rocky-9: master-rocky-9-placeholder - ubuntu-noble: master-ubuntu-noble-placeholder + rocky-9: master-rocky-9-20250213T114650 + ubuntu-noble: master-ubuntu-noble-20250213T091307 diff --git a/etc/kayobe/kolla.yml b/etc/kayobe/kolla.yml index a1ec7150e..952c55daa 100644 --- a/etc/kayobe/kolla.yml +++ b/etc/kayobe/kolla.yml @@ -121,14 +121,6 @@ kolla_sources: type: git location: https://github.com/stackhpc/stackhpc-inspector-plugins.git reference: 1.3.0 - bifrost-base: - type: git - location: https://github.com/stackhpc/bifrost.git - reference: stackhpc/{{ openstack_release }} - cloudkitty-base: - type: git - location: https://github.com/stackhpc/cloudkitty.git - reference: stackhpc/{{ openstack_release }} horizon-plugin-cloudkitty-dashboard: type: git location: https://github.com/stackhpc/cloudkitty-dashboard.git @@ -148,20 +140,12 @@ kolla_sources: reference: stackhpc/{{ openstack_release }} neutron-server-plugin-networking-mlnx: type: git - location: https://github.com/stackhpc/networking-mlnx - reference: stackhpc/{{ openstack_release }} + location: https://opendev.org/x/networking-mlnx + reference: master nova-compute-plugin-networking-mlnx: type: git - location: https://github.com/stackhpc/networking-mlnx - reference: stackhpc/{{ openstack_release }} - octavia-base: - type: git - location: https://github.com/stackhpc/octavia.git - reference: stackhpc/{{ openstack_release }} - blazar-base: - type: git - location: https://github.com/stackhpc/blazar - reference: stackhpc/master + location: https://opendev.org/x/networking-mlnx + reference: master ############################################################################### # Kolla image build configuration. @@ -183,12 +167,6 @@ stackhpc_rocky_9_additional_repos: - url: "{{ stackhpc_repo_centos_stream_9_nfv_openvswitch_url }}" file: "CentOS-NFV-OpenvSwitch.repo" tag: "centos-nfv-openvswitch" - - url: "{{ stackhpc_repo_delorian_master_testing_url }}" - file: "DeLorean.repo" - tag: "delorean-master-testing" - - url: "{{ stackhpc_repo_delorian_master_build_deps_url }}" - file: "DeLorean.repo" - tag: "delorean-master-build-deps" - url: "{{ stackhpc_repo_centos_stream_9_opstools_url }}" file: "CentOS-OpsTools.repo" tag: "centos-opstools" @@ -371,9 +349,16 @@ kolla_build_customizations_common: - python3-libvirt - python3-ethtool neutron_mlnx_agent_pip_packages_override: - - networking-mlnx@git+https://github.com/stackhpc/networking-mlnx@stackhpc/{{ openstack_release }} + - networking-mlnx@git+https://opendev.org/x/networking-mlnx@master kolla_build_customizations_rocky: + base_centos_yum_repo_packages_append: + - centos-release-ceph-squid + base_centos_yum_repo_packages_remove: + - centos-release-ceph-reef + base_centos_yum_repos_to_disable_remove: + - centos-ceph-reef + - epel kolla_toolbox_packages_remove: - openvswitch kolla_toolbox_packages_append: diff --git a/etc/kayobe/pulp-host-image-versions.yml b/etc/kayobe/pulp-host-image-versions.yml index fa91d4657..4ecd4e1fb 100644 --- a/etc/kayobe/pulp-host-image-versions.yml +++ b/etc/kayobe/pulp-host-image-versions.yml @@ -2,5 +2,5 @@ # Overcloud host image versioning tags # These images must be in SMS, since they are used by our AIO CI runners # TODO: Build real master images -stackhpc_rocky_9_overcloud_host_image_version: "2024.1-20241209T151515" -stackhpc_ubuntu_noble_overcloud_host_image_version: "2024.1-20250116T133659" +stackhpc_rocky_9_overcloud_host_image_version: "master-20250213T092714" +stackhpc_ubuntu_noble_overcloud_host_image_version: "master-20250213T092714" diff --git a/tools/kolla-images.py b/tools/kolla-images.py index 82ded3f81..098ad2339 100755 --- a/tools/kolla-images.py +++ b/tools/kolla-images.py @@ -99,7 +99,7 @@ # List of supported base distributions and versions. SUPPORTED_BASE_DISTROS = [ "rocky-9", - "ubuntu-jammy", + "ubuntu-noble", ] @@ -229,6 +229,8 @@ def get_openstack_release() -> str: key, value = line.split("=") if key.strip() == "defaultbranch": value = value.strip() + if value == "master": + return value[:] for prefix in ("stable/", "unmaintained/"): if value.startswith(prefix): return value[len(prefix):]