diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d0eb858d..8c670890 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -105,7 +105,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "true" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|Auth|DefaultCluster|CLICommands)$ RUN_TALEMU_TESTS: "true" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -301,7 +301,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|EtcdBackupAndRestore)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -317,6 +317,86 @@ jobs: /tmp/integration-test retention-days: "5" continue-on-error: true + e2e-cluster-import: + runs-on: + - self-hosted + - omni + if: contains(fromJSON(needs.default.outputs.labels), 'integration/e2e') || contains(fromJSON(needs.default.outputs.labels), 'integration/e2e-cluster-import') + needs: + - default + steps: + - name: gather-system-info + id: system-info + uses: kenchan0130/actions-system-info@v1.3.1 + continue-on-error: true + - name: print-system-info + run: | + MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024)) + + OUTPUTS=( + "CPU Core: ${{ steps.system-info.outputs.cpu-core }}" + "CPU Model: ${{ steps.system-info.outputs.cpu-model }}" + "Hostname: ${{ steps.system-info.outputs.hostname }}" + "NodeName: ${NODE_NAME}" + "Kernel release: ${{ steps.system-info.outputs.kernel-release }}" + "Kernel version: ${{ steps.system-info.outputs.kernel-version }}" + "Name: ${{ steps.system-info.outputs.name }}" + "Platform: ${{ steps.system-info.outputs.platform }}" + "Release: ${{ steps.system-info.outputs.release }}" + "Total memory: ${MEMORY_GB} GB" + ) + + for OUTPUT in "${OUTPUTS[@]}";do + echo "${OUTPUT}" + done + continue-on-error: true + - name: checkout + uses: actions/checkout@v4 + - name: Unshallow + run: | + git fetch --prune --unshallow + - name: Set up Docker Buildx + id: setup-buildx + uses: docker/setup-buildx-action@v3 + with: + driver: remote + endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234 + timeout-minutes: 10 + - name: Mask secrets + run: | + echo "$(sops -d .secrets.yaml | yq -e '.secrets | to_entries[] | "::add-mask::" + .value')" + - name: Set secrets for job + run: | + sops -d .secrets.yaml | yq -e '.secrets | to_entries[] | .key + "=" + .value' >> "$GITHUB_ENV" + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: artifacts + path: _out + - name: Fix artifact permissions + run: | + xargs -a _out/executable-artifacts -I {} chmod +x {} + - name: run-integration-test + env: + INTEGRATION_RUN_E2E_TEST: "false" + INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ClusterImport)$ + RUN_TALEMU_TESTS: "false" + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ + WITH_DEBUG: "true" + WITH_RACE: "true" + run: | + sudo -E make run-integration-test + - name: save-integration-test-artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: integration-test-e2e-cluster-import + path: |- + ~/.talos/clusters/**/*.log + !~/.talos/clusters/**/swtpm.log + /tmp/integration-test + retention-days: "5" + continue-on-error: true e2e-forced-removal: runs-on: - self-hosted @@ -381,7 +461,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ForcedMachineRemoval|ReplaceControlPlanes|ConfigPatching|KubernetesNodeAudit)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -462,7 +542,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(OmniUpgradeVerify)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -542,7 +622,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|RollingUpdateParallelism)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -622,7 +702,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosImageGeneration|ImmediateClusterDestruction|DefaultCluster|EncryptedCluster|SinglenodeCluster|Auth)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -703,7 +783,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosImageGeneration|ImmediateClusterDestruction|DefaultCluster|EncryptedCluster|SinglenodeCluster|Auth)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -783,7 +863,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ClusterTemplate)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -863,7 +943,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | @@ -943,7 +1023,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|WorkloadProxy)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-backups-cron.yaml b/.github/workflows/e2e-backups-cron.yaml index d6281dfd..ee5bd570 100644 --- a/.github/workflows/e2e-backups-cron.yaml +++ b/.github/workflows/e2e-backups-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|EtcdBackupAndRestore)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-cluster-import-cron.yaml b/.github/workflows/e2e-cluster-import-cron.yaml new file mode 100644 index 00000000..038f6fa3 --- /dev/null +++ b/.github/workflows/e2e-cluster-import-cron.yaml @@ -0,0 +1,80 @@ +# THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. +# +# Generated on 2025-07-14T11:13:09Z by kres c691b83. + +concurrency: + group: ${{ github.head_ref || github.run_id }} + cancel-in-progress: true +"on": + schedule: + - cron: 30 1 * * * +name: e2e-cluster-import-cron +jobs: + default: + runs-on: + - self-hosted + - omni + steps: + - name: gather-system-info + id: system-info + uses: kenchan0130/actions-system-info@v1.3.1 + continue-on-error: true + - name: print-system-info + run: | + MEMORY_GB=$((${{ steps.system-info.outputs.totalmem }}/1024/1024/1024)) + + OUTPUTS=( + "CPU Core: ${{ steps.system-info.outputs.cpu-core }}" + "CPU Model: ${{ steps.system-info.outputs.cpu-model }}" + "Hostname: ${{ steps.system-info.outputs.hostname }}" + "NodeName: ${NODE_NAME}" + "Kernel release: ${{ steps.system-info.outputs.kernel-release }}" + "Kernel version: ${{ steps.system-info.outputs.kernel-version }}" + "Name: ${{ steps.system-info.outputs.name }}" + "Platform: ${{ steps.system-info.outputs.platform }}" + "Release: ${{ steps.system-info.outputs.release }}" + "Total memory: ${MEMORY_GB} GB" + ) + + for OUTPUT in "${OUTPUTS[@]}";do + echo "${OUTPUT}" + done + continue-on-error: true + - name: checkout + uses: actions/checkout@v4 + - name: Unshallow + run: | + git fetch --prune --unshallow + - name: Set up Docker Buildx + id: setup-buildx + uses: docker/setup-buildx-action@v3 + with: + driver: remote + endpoint: tcp://buildkit-amd64.ci.svc.cluster.local:1234 + timeout-minutes: 10 + - name: Mask secrets + run: | + echo "$(sops -d .secrets.yaml | yq -e '.secrets | to_entries[] | "::add-mask::" + .value')" + - name: Set secrets for job + run: | + sops -d .secrets.yaml | yq -e '.secrets | to_entries[] | .key + "=" + .value' >> "$GITHUB_ENV" + - name: run-integration-test + env: + INTEGRATION_RUN_E2E_TEST: "false" + INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ClusterImport)$ + RUN_TALEMU_TESTS: "false" + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ + WITH_DEBUG: "true" + WITH_RACE: "true" + run: | + sudo -E make run-integration-test + - name: save-integration-test-artifacts + if: always() + uses: actions/upload-artifact@v4 + with: + name: integration-test + path: |- + ~/.talos/clusters/**/*.log + !~/.talos/clusters/**/swtpm.log + /tmp/integration-test + retention-days: "5" diff --git a/.github/workflows/e2e-forced-removal-cron.yaml b/.github/workflows/e2e-forced-removal-cron.yaml index 7ed002a9..07a597f4 100644 --- a/.github/workflows/e2e-forced-removal-cron.yaml +++ b/.github/workflows/e2e-forced-removal-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ForcedMachineRemoval|ReplaceControlPlanes|ConfigPatching|KubernetesNodeAudit)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-omni-upgrade-cron.yaml b/.github/workflows/e2e-omni-upgrade-cron.yaml index b341bf69..b7d89c78 100644 --- a/.github/workflows/e2e-omni-upgrade-cron.yaml +++ b/.github/workflows/e2e-omni-upgrade-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -64,7 +64,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(OmniUpgradeVerify)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-scaling-cron.yaml b/.github/workflows/e2e-scaling-cron.yaml index 649f9e7c..e4741449 100644 --- a/.github/workflows/e2e-scaling-cron.yaml +++ b/.github/workflows/e2e-scaling-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|RollingUpdateParallelism)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-short-cron.yaml b/.github/workflows/e2e-short-cron.yaml index 15eb2eee..d71fce39 100644 --- a/.github/workflows/e2e-short-cron.yaml +++ b/.github/workflows/e2e-short-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosImageGeneration|ImmediateClusterDestruction|DefaultCluster|EncryptedCluster|SinglenodeCluster|Auth)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-short-secureboot-cron.yaml b/.github/workflows/e2e-short-secureboot-cron.yaml index 5dac6039..14faa220 100644 --- a/.github/workflows/e2e-short-secureboot-cron.yaml +++ b/.github/workflows/e2e-short-secureboot-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -64,7 +64,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosImageGeneration|ImmediateClusterDestruction|DefaultCluster|EncryptedCluster|SinglenodeCluster|Auth)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-templates-cron.yaml b/.github/workflows/e2e-templates-cron.yaml index bc62bcfc..f41d8104 100644 --- a/.github/workflows/e2e-templates-cron.yaml +++ b/.github/workflows/e2e-templates-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|ClusterTemplate)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-upgrades-cron.yaml b/.github/workflows/e2e-upgrades-cron.yaml index 12bb663c..27e58811 100644 --- a/.github/workflows/e2e-upgrades-cron.yaml +++ b/.github/workflows/e2e-upgrades-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/e2e-workload-proxy-cron.yaml b/.github/workflows/e2e-workload-proxy-cron.yaml index d8ad5dd7..7d4709e3 100644 --- a/.github/workflows/e2e-workload-proxy-cron.yaml +++ b/.github/workflows/e2e-workload-proxy-cron.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. concurrency: group: ${{ github.head_ref || github.run_id }} @@ -63,7 +63,7 @@ jobs: INTEGRATION_RUN_E2E_TEST: "false" INTEGRATION_TEST_ARGS: --test.run TestIntegration/Suites/(CleanState|WorkloadProxy)$ RUN_TALEMU_TESTS: "false" - TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$ + TALEMU_TEST_ARGS: --test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$ WITH_DEBUG: "true" WITH_RACE: "true" run: | diff --git a/.github/workflows/slack-notify.yaml b/.github/workflows/slack-notify.yaml index c95462a8..65825d40 100644 --- a/.github/workflows/slack-notify.yaml +++ b/.github/workflows/slack-notify.yaml @@ -1,6 +1,6 @@ # THIS FILE WAS AUTOMATICALLY GENERATED, PLEASE DO NOT EDIT. # -# Generated on 2025-07-11T15:30:30Z by kres c691b83. +# Generated on 2025-07-14T11:13:09Z by kres c691b83. "on": workflow_run: @@ -15,6 +15,7 @@ - e2e-backups-cron - e2e-workload-proxy-cron - e2e-omni-upgrade-cron + - e2e-cluster-import-cron types: - completed name: slack-notify diff --git a/.kres.yaml b/.kres.yaml index 3f36817e..951c382b 100644 --- a/.kres.yaml +++ b/.kres.yaml @@ -212,7 +212,7 @@ spec: WITH_RACE: "true" INTEGRATION_RUN_E2E_TEST: "true" INTEGRATION_TEST_ARGS: "--test.run TestIntegration/Suites/(CleanState|Auth|DefaultCluster|CLICommands)$" - TALEMU_TEST_ARGS: "--test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets)$" + TALEMU_TEST_ARGS: "--test.run TestIntegration/Suites/(ImmediateClusterDestruction|EncryptedCluster|SinglenodeCluster|ScaleUpAndDown|ScaleUpAndDownMachineClassBasedMachineSets|TalosUpgrades|KubernetesUpgrades|MaintenanceUpgrade|ClusterTemplate|ScaleUpAndDownAutoProvisionMachineSets|ClusterImport)$" RUN_TALEMU_TESTS: true jobs: - name: e2e-short-secureboot @@ -324,6 +324,18 @@ spec: INTEGRATION_PREPARE_TEST_ARGS: "--test.run TestIntegration/Suites/(CleanState|OmniUpgradePrepare)$" INTEGRATION_TEST_ARGS: "--test.run TestIntegration/Suites/(OmniUpgradeVerify)$" RUN_TALEMU_TESTS: false + - name: e2e-cluster-import + crons: + - '30 1 * * *' + runnerLabels: + - omni + triggerLabels: + - integration/e2e + - integration/e2e-cluster-import + environmentOverride: + INTEGRATION_RUN_E2E_TEST: "false" + INTEGRATION_TEST_ARGS: "--test.run TestIntegration/Suites/(CleanState|ClusterImport)$" + RUN_TALEMU_TESTS: false --- kind: common.Build spec: diff --git a/client/api/omni/specs/omni.pb.go b/client/api/omni/specs/omni.pb.go index be6ed05c..29aba2d9 100644 --- a/client/api/omni/specs/omni.pb.go +++ b/client/api/omni/specs/omni.pb.go @@ -565,7 +565,7 @@ func (x MachineSetSpec_UpdateStrategy) Number() protoreflect.EnumNumber { // Deprecated: Use MachineSetSpec_UpdateStrategy.Descriptor instead. func (MachineSetSpec_UpdateStrategy) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 0} } type MachineSetSpec_MachineClass_Type int32 @@ -613,7 +613,7 @@ func (x MachineSetSpec_MachineClass_Type) Number() protoreflect.EnumNumber { // Deprecated: Use MachineSetSpec_MachineClass_Type.Descriptor instead. func (MachineSetSpec_MachineClass_Type) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 0, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 0, 0} } type MachineSetSpec_MachineAllocation_Type int32 @@ -661,7 +661,7 @@ func (x MachineSetSpec_MachineAllocation_Type) Number() protoreflect.EnumNumber // Deprecated: Use MachineSetSpec_MachineAllocation_Type.Descriptor instead. func (MachineSetSpec_MachineAllocation_Type) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 1, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 1, 0} } type TalosUpgradeStatusSpec_Phase int32 @@ -719,7 +719,7 @@ func (x TalosUpgradeStatusSpec_Phase) Number() protoreflect.EnumNumber { // Deprecated: Use TalosUpgradeStatusSpec_Phase.Descriptor instead. func (TalosUpgradeStatusSpec_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{41, 0} } type MachineStatusSnapshotSpec_PowerStage int32 @@ -768,7 +768,7 @@ func (x MachineStatusSnapshotSpec_PowerStage) Number() protoreflect.EnumNumber { // Deprecated: Use MachineStatusSnapshotSpec_PowerStage.Descriptor instead. func (MachineStatusSnapshotSpec_PowerStage) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{44, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 0} } type ControlPlaneStatusSpec_Condition_Status int32 @@ -817,7 +817,7 @@ func (x ControlPlaneStatusSpec_Condition_Status) Number() protoreflect.EnumNumbe // Deprecated: Use ControlPlaneStatusSpec_Condition_Status.Descriptor instead. func (ControlPlaneStatusSpec_Condition_Status) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 0, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 0, 0} } type ControlPlaneStatusSpec_Condition_Severity int32 @@ -866,7 +866,7 @@ func (x ControlPlaneStatusSpec_Condition_Severity) Number() protoreflect.EnumNum // Deprecated: Use ControlPlaneStatusSpec_Condition_Severity.Descriptor instead. func (ControlPlaneStatusSpec_Condition_Severity) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 0, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 0, 1} } type KubernetesUpgradeStatusSpec_Phase int32 @@ -921,7 +921,7 @@ func (x KubernetesUpgradeStatusSpec_Phase) Number() protoreflect.EnumNumber { // Deprecated: Use KubernetesUpgradeStatusSpec_Phase.Descriptor instead. func (KubernetesUpgradeStatusSpec_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{48, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{49, 0} } type ExtensionsConfigurationStatusSpec_Phase int32 @@ -970,7 +970,7 @@ func (x ExtensionsConfigurationStatusSpec_Phase) Number() protoreflect.EnumNumbe // Deprecated: Use ExtensionsConfigurationStatusSpec_Phase.Descriptor instead. func (ExtensionsConfigurationStatusSpec_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{68, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{69, 0} } type MachineExtensionsStatusSpec_Item_Phase int32 @@ -1019,7 +1019,7 @@ func (x MachineExtensionsStatusSpec_Item_Phase) Number() protoreflect.EnumNumber // Deprecated: Use MachineExtensionsStatusSpec_Item_Phase.Descriptor instead. func (MachineExtensionsStatusSpec_Item_Phase) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{70, 0, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{71, 0, 0} } type ClusterMachineRequestStatusSpec_Stage int32 @@ -1077,7 +1077,7 @@ func (x ClusterMachineRequestStatusSpec_Stage) Number() protoreflect.EnumNumber // Deprecated: Use ClusterMachineRequestStatusSpec_Stage.Descriptor instead. func (ClusterMachineRequestStatusSpec_Stage) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{79, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{80, 0} } type InfraMachineConfigSpec_AcceptanceStatus int32 @@ -1126,7 +1126,7 @@ func (x InfraMachineConfigSpec_AcceptanceStatus) Number() protoreflect.EnumNumbe // Deprecated: Use InfraMachineConfigSpec_AcceptanceStatus.Descriptor instead. func (InfraMachineConfigSpec_AcceptanceStatus) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{80, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{81, 0} } type InfraMachineConfigSpec_MachinePowerState int32 @@ -1175,7 +1175,7 @@ func (x InfraMachineConfigSpec_MachinePowerState) Number() protoreflect.EnumNumb // Deprecated: Use InfraMachineConfigSpec_MachinePowerState.Descriptor instead. func (InfraMachineConfigSpec_MachinePowerState) EnumDescriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{80, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{81, 1} } // MachineSpec describes a Machine. @@ -3339,7 +3339,9 @@ func (x *ClusterBootstrapStatusSpec) GetBootstrapped() bool { type ClusterSecretsSpec struct { state protoimpl.MessageState `protogen:"open.v1"` // Bytes holding serialized cluster secrets. - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + // imported holds origin of the cluster secrets. + Imported bool `protobuf:"varint,2,opt,name=imported,proto3" json:"imported,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -3381,6 +3383,59 @@ func (x *ClusterSecretsSpec) GetData() []byte { return nil } +func (x *ClusterSecretsSpec) GetImported() bool { + if x != nil { + return x.Imported + } + return false +} + +// ImportedClusterSecretsSpec describes imported cluster secrets. +type ImportedClusterSecretsSpec struct { + state protoimpl.MessageState `protogen:"open.v1"` + // data holds imported cluster secrets. + Data string `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ImportedClusterSecretsSpec) Reset() { + *x = ImportedClusterSecretsSpec{} + mi := &file_omni_specs_omni_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ImportedClusterSecretsSpec) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportedClusterSecretsSpec) ProtoMessage() {} + +func (x *ImportedClusterSecretsSpec) ProtoReflect() protoreflect.Message { + mi := &file_omni_specs_omni_proto_msgTypes[33] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportedClusterSecretsSpec.ProtoReflect.Descriptor instead. +func (*ImportedClusterSecretsSpec) Descriptor() ([]byte, []int) { + return file_omni_specs_omni_proto_rawDescGZIP(), []int{33} +} + +func (x *ImportedClusterSecretsSpec) GetData() string { + if x != nil { + return x.Data + } + return "" +} + // LoadBalancerConfigSpec describes the configuration of a load balancer. type LoadBalancerConfigSpec struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -3395,7 +3450,7 @@ type LoadBalancerConfigSpec struct { func (x *LoadBalancerConfigSpec) Reset() { *x = LoadBalancerConfigSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[33] + mi := &file_omni_specs_omni_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3407,7 +3462,7 @@ func (x *LoadBalancerConfigSpec) String() string { func (*LoadBalancerConfigSpec) ProtoMessage() {} func (x *LoadBalancerConfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[33] + mi := &file_omni_specs_omni_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3420,7 +3475,7 @@ func (x *LoadBalancerConfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use LoadBalancerConfigSpec.ProtoReflect.Descriptor instead. func (*LoadBalancerConfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{33} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{34} } func (x *LoadBalancerConfigSpec) GetBindPort() string { @@ -3455,7 +3510,7 @@ type LoadBalancerStatusSpec struct { func (x *LoadBalancerStatusSpec) Reset() { *x = LoadBalancerStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[34] + mi := &file_omni_specs_omni_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3467,7 +3522,7 @@ func (x *LoadBalancerStatusSpec) String() string { func (*LoadBalancerStatusSpec) ProtoMessage() {} func (x *LoadBalancerStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[34] + mi := &file_omni_specs_omni_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3480,7 +3535,7 @@ func (x *LoadBalancerStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use LoadBalancerStatusSpec.ProtoReflect.Descriptor instead. func (*LoadBalancerStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{34} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{35} } func (x *LoadBalancerStatusSpec) GetHealthy() bool { @@ -3507,7 +3562,7 @@ type KubernetesVersionSpec struct { func (x *KubernetesVersionSpec) Reset() { *x = KubernetesVersionSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[35] + mi := &file_omni_specs_omni_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3519,7 +3574,7 @@ func (x *KubernetesVersionSpec) String() string { func (*KubernetesVersionSpec) ProtoMessage() {} func (x *KubernetesVersionSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[35] + mi := &file_omni_specs_omni_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3532,7 +3587,7 @@ func (x *KubernetesVersionSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesVersionSpec.ProtoReflect.Descriptor instead. func (*KubernetesVersionSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{35} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{36} } func (x *KubernetesVersionSpec) GetVersion() string { @@ -3554,7 +3609,7 @@ type TalosVersionSpec struct { func (x *TalosVersionSpec) Reset() { *x = TalosVersionSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[36] + mi := &file_omni_specs_omni_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3566,7 +3621,7 @@ func (x *TalosVersionSpec) String() string { func (*TalosVersionSpec) ProtoMessage() {} func (x *TalosVersionSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[36] + mi := &file_omni_specs_omni_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3579,7 +3634,7 @@ func (x *TalosVersionSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosVersionSpec.ProtoReflect.Descriptor instead. func (*TalosVersionSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{36} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{37} } func (x *TalosVersionSpec) GetVersion() string { @@ -3629,7 +3684,7 @@ type InstallationMediaSpec struct { func (x *InstallationMediaSpec) Reset() { *x = InstallationMediaSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[37] + mi := &file_omni_specs_omni_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3641,7 +3696,7 @@ func (x *InstallationMediaSpec) String() string { func (*InstallationMediaSpec) ProtoMessage() {} func (x *InstallationMediaSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[37] + mi := &file_omni_specs_omni_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3654,7 +3709,7 @@ func (x *InstallationMediaSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallationMediaSpec.ProtoReflect.Descriptor instead. func (*InstallationMediaSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{37} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{38} } func (x *InstallationMediaSpec) GetName() string { @@ -3744,7 +3799,7 @@ type ConfigPatchSpec struct { func (x *ConfigPatchSpec) Reset() { *x = ConfigPatchSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[38] + mi := &file_omni_specs_omni_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3756,7 +3811,7 @@ func (x *ConfigPatchSpec) String() string { func (*ConfigPatchSpec) ProtoMessage() {} func (x *ConfigPatchSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[38] + mi := &file_omni_specs_omni_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3769,7 +3824,7 @@ func (x *ConfigPatchSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigPatchSpec.ProtoReflect.Descriptor instead. func (*ConfigPatchSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{38} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{39} } func (x *ConfigPatchSpec) GetData() string { @@ -3814,7 +3869,7 @@ type MachineSetSpec struct { func (x *MachineSetSpec) Reset() { *x = MachineSetSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[39] + mi := &file_omni_specs_omni_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3826,7 +3881,7 @@ func (x *MachineSetSpec) String() string { func (*MachineSetSpec) ProtoMessage() {} func (x *MachineSetSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[39] + mi := &file_omni_specs_omni_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3839,7 +3894,7 @@ func (x *MachineSetSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetSpec.ProtoReflect.Descriptor instead. func (*MachineSetSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40} } func (x *MachineSetSpec) GetUpdateStrategy() MachineSetSpec_UpdateStrategy { @@ -3915,7 +3970,7 @@ type TalosUpgradeStatusSpec struct { func (x *TalosUpgradeStatusSpec) Reset() { *x = TalosUpgradeStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[40] + mi := &file_omni_specs_omni_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3927,7 +3982,7 @@ func (x *TalosUpgradeStatusSpec) String() string { func (*TalosUpgradeStatusSpec) ProtoMessage() {} func (x *TalosUpgradeStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[40] + mi := &file_omni_specs_omni_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3940,7 +3995,7 @@ func (x *TalosUpgradeStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosUpgradeStatusSpec.ProtoReflect.Descriptor instead. func (*TalosUpgradeStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{40} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{41} } func (x *TalosUpgradeStatusSpec) GetPhase() TalosUpgradeStatusSpec_Phase { @@ -4011,7 +4066,7 @@ type MachineSetStatusSpec struct { func (x *MachineSetStatusSpec) Reset() { *x = MachineSetStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[41] + mi := &file_omni_specs_omni_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4023,7 +4078,7 @@ func (x *MachineSetStatusSpec) String() string { func (*MachineSetStatusSpec) ProtoMessage() {} func (x *MachineSetStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[41] + mi := &file_omni_specs_omni_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4036,7 +4091,7 @@ func (x *MachineSetStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetStatusSpec.ProtoReflect.Descriptor instead. func (*MachineSetStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{41} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{42} } func (x *MachineSetStatusSpec) GetPhase() MachineSetPhase { @@ -4097,7 +4152,7 @@ type MachineSetNodeSpec struct { func (x *MachineSetNodeSpec) Reset() { *x = MachineSetNodeSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[42] + mi := &file_omni_specs_omni_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4109,7 +4164,7 @@ func (x *MachineSetNodeSpec) String() string { func (*MachineSetNodeSpec) ProtoMessage() {} func (x *MachineSetNodeSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[42] + mi := &file_omni_specs_omni_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4122,7 +4177,7 @@ func (x *MachineSetNodeSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetNodeSpec.ProtoReflect.Descriptor instead. func (*MachineSetNodeSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{42} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{43} } // MachineLabelsSpec is the resource that adds user defined labels to the MachineStatus. @@ -4134,7 +4189,7 @@ type MachineLabelsSpec struct { func (x *MachineLabelsSpec) Reset() { *x = MachineLabelsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[43] + mi := &file_omni_specs_omni_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4201,7 @@ func (x *MachineLabelsSpec) String() string { func (*MachineLabelsSpec) ProtoMessage() {} func (x *MachineLabelsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[43] + mi := &file_omni_specs_omni_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4159,7 +4214,7 @@ func (x *MachineLabelsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineLabelsSpec.ProtoReflect.Descriptor instead. func (*MachineLabelsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{43} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{44} } // MachineStatusSnapshotSpec describes latest known status of MachineStatus Talos resource. @@ -4173,7 +4228,7 @@ type MachineStatusSnapshotSpec struct { func (x *MachineStatusSnapshotSpec) Reset() { *x = MachineStatusSnapshotSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[44] + mi := &file_omni_specs_omni_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4185,7 +4240,7 @@ func (x *MachineStatusSnapshotSpec) String() string { func (*MachineStatusSnapshotSpec) ProtoMessage() {} func (x *MachineStatusSnapshotSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[44] + mi := &file_omni_specs_omni_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4198,7 +4253,7 @@ func (x *MachineStatusSnapshotSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineStatusSnapshotSpec.ProtoReflect.Descriptor instead. func (*MachineStatusSnapshotSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{44} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{45} } func (x *MachineStatusSnapshotSpec) GetMachineStatus() *machine.MachineStatusEvent { @@ -4225,7 +4280,7 @@ type ControlPlaneStatusSpec struct { func (x *ControlPlaneStatusSpec) Reset() { *x = ControlPlaneStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[45] + mi := &file_omni_specs_omni_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4237,7 +4292,7 @@ func (x *ControlPlaneStatusSpec) String() string { func (*ControlPlaneStatusSpec) ProtoMessage() {} func (x *ControlPlaneStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[45] + mi := &file_omni_specs_omni_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4250,7 +4305,7 @@ func (x *ControlPlaneStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlPlaneStatusSpec.ProtoReflect.Descriptor instead. func (*ControlPlaneStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46} } func (x *ControlPlaneStatusSpec) GetConditions() []*ControlPlaneStatusSpec_Condition { @@ -4271,7 +4326,7 @@ type ClusterEndpointSpec struct { func (x *ClusterEndpointSpec) Reset() { *x = ClusterEndpointSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[46] + mi := &file_omni_specs_omni_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4283,7 +4338,7 @@ func (x *ClusterEndpointSpec) String() string { func (*ClusterEndpointSpec) ProtoMessage() {} func (x *ClusterEndpointSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[46] + mi := &file_omni_specs_omni_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4296,7 +4351,7 @@ func (x *ClusterEndpointSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterEndpointSpec.ProtoReflect.Descriptor instead. func (*ClusterEndpointSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{46} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{47} } func (x *ClusterEndpointSpec) GetManagementAddresses() []string { @@ -4319,7 +4374,7 @@ type KubernetesStatusSpec struct { func (x *KubernetesStatusSpec) Reset() { *x = KubernetesStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[47] + mi := &file_omni_specs_omni_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4331,7 +4386,7 @@ func (x *KubernetesStatusSpec) String() string { func (*KubernetesStatusSpec) ProtoMessage() {} func (x *KubernetesStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[47] + mi := &file_omni_specs_omni_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4344,7 +4399,7 @@ func (x *KubernetesStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{47} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{48} } func (x *KubernetesStatusSpec) GetNodes() []*KubernetesStatusSpec_NodeStatus { @@ -4384,7 +4439,7 @@ type KubernetesUpgradeStatusSpec struct { func (x *KubernetesUpgradeStatusSpec) Reset() { *x = KubernetesUpgradeStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[48] + mi := &file_omni_specs_omni_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4396,7 +4451,7 @@ func (x *KubernetesUpgradeStatusSpec) String() string { func (*KubernetesUpgradeStatusSpec) ProtoMessage() {} func (x *KubernetesUpgradeStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[48] + mi := &file_omni_specs_omni_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4409,7 +4464,7 @@ func (x *KubernetesUpgradeStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUpgradeStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesUpgradeStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{48} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{49} } func (x *KubernetesUpgradeStatusSpec) GetPhase() KubernetesUpgradeStatusSpec_Phase { @@ -4474,7 +4529,7 @@ type KubernetesUpgradeManifestStatusSpec struct { func (x *KubernetesUpgradeManifestStatusSpec) Reset() { *x = KubernetesUpgradeManifestStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[49] + mi := &file_omni_specs_omni_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4486,7 +4541,7 @@ func (x *KubernetesUpgradeManifestStatusSpec) String() string { func (*KubernetesUpgradeManifestStatusSpec) ProtoMessage() {} func (x *KubernetesUpgradeManifestStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[49] + mi := &file_omni_specs_omni_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4499,7 +4554,7 @@ func (x *KubernetesUpgradeManifestStatusSpec) ProtoReflect() protoreflect.Messag // Deprecated: Use KubernetesUpgradeManifestStatusSpec.ProtoReflect.Descriptor instead. func (*KubernetesUpgradeManifestStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{49} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{50} } func (x *KubernetesUpgradeManifestStatusSpec) GetOutOfSync() int32 { @@ -4527,7 +4582,7 @@ type DestroyStatusSpec struct { func (x *DestroyStatusSpec) Reset() { *x = DestroyStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[50] + mi := &file_omni_specs_omni_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4539,7 +4594,7 @@ func (x *DestroyStatusSpec) String() string { func (*DestroyStatusSpec) ProtoMessage() {} func (x *DestroyStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[50] + mi := &file_omni_specs_omni_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4552,7 +4607,7 @@ func (x *DestroyStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use DestroyStatusSpec.ProtoReflect.Descriptor instead. func (*DestroyStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{50} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{51} } func (x *DestroyStatusSpec) GetPhase() string { @@ -4581,7 +4636,7 @@ type OngoingTaskSpec struct { func (x *OngoingTaskSpec) Reset() { *x = OngoingTaskSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[51] + mi := &file_omni_specs_omni_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4593,7 +4648,7 @@ func (x *OngoingTaskSpec) String() string { func (*OngoingTaskSpec) ProtoMessage() {} func (x *OngoingTaskSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[51] + mi := &file_omni_specs_omni_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4606,7 +4661,7 @@ func (x *OngoingTaskSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use OngoingTaskSpec.ProtoReflect.Descriptor instead. func (*OngoingTaskSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{51} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{52} } func (x *OngoingTaskSpec) GetTitle() string { @@ -4683,7 +4738,7 @@ type ClusterMachineEncryptionKeySpec struct { func (x *ClusterMachineEncryptionKeySpec) Reset() { *x = ClusterMachineEncryptionKeySpec{} - mi := &file_omni_specs_omni_proto_msgTypes[52] + mi := &file_omni_specs_omni_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4695,7 +4750,7 @@ func (x *ClusterMachineEncryptionKeySpec) String() string { func (*ClusterMachineEncryptionKeySpec) ProtoMessage() {} func (x *ClusterMachineEncryptionKeySpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[52] + mi := &file_omni_specs_omni_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4708,7 +4763,7 @@ func (x *ClusterMachineEncryptionKeySpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterMachineEncryptionKeySpec.ProtoReflect.Descriptor instead. func (*ClusterMachineEncryptionKeySpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{52} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{53} } func (x *ClusterMachineEncryptionKeySpec) GetData() []byte { @@ -4739,7 +4794,7 @@ type ExposedServiceSpec struct { func (x *ExposedServiceSpec) Reset() { *x = ExposedServiceSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[53] + mi := &file_omni_specs_omni_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4751,7 +4806,7 @@ func (x *ExposedServiceSpec) String() string { func (*ExposedServiceSpec) ProtoMessage() {} func (x *ExposedServiceSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[53] + mi := &file_omni_specs_omni_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4764,7 +4819,7 @@ func (x *ExposedServiceSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ExposedServiceSpec.ProtoReflect.Descriptor instead. func (*ExposedServiceSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{53} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{54} } func (x *ExposedServiceSpec) GetPort() uint32 { @@ -4819,7 +4874,7 @@ type ClusterWorkloadProxyStatusSpec struct { func (x *ClusterWorkloadProxyStatusSpec) Reset() { *x = ClusterWorkloadProxyStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[54] + mi := &file_omni_specs_omni_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4831,7 +4886,7 @@ func (x *ClusterWorkloadProxyStatusSpec) String() string { func (*ClusterWorkloadProxyStatusSpec) ProtoMessage() {} func (x *ClusterWorkloadProxyStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[54] + mi := &file_omni_specs_omni_proto_msgTypes[55] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4844,7 +4899,7 @@ func (x *ClusterWorkloadProxyStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterWorkloadProxyStatusSpec.ProtoReflect.Descriptor instead. func (*ClusterWorkloadProxyStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{54} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{55} } func (x *ClusterWorkloadProxyStatusSpec) GetNumExposedServices() uint32 { @@ -4872,7 +4927,7 @@ type FeaturesConfigSpec struct { func (x *FeaturesConfigSpec) Reset() { *x = FeaturesConfigSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[55] + mi := &file_omni_specs_omni_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4884,7 +4939,7 @@ func (x *FeaturesConfigSpec) String() string { func (*FeaturesConfigSpec) ProtoMessage() {} func (x *FeaturesConfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[55] + mi := &file_omni_specs_omni_proto_msgTypes[56] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4897,7 +4952,7 @@ func (x *FeaturesConfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use FeaturesConfigSpec.ProtoReflect.Descriptor instead. func (*FeaturesConfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{55} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{56} } func (x *FeaturesConfigSpec) GetEnableWorkloadProxying() bool { @@ -4949,7 +5004,7 @@ type EtcdBackupSettings struct { func (x *EtcdBackupSettings) Reset() { *x = EtcdBackupSettings{} - mi := &file_omni_specs_omni_proto_msgTypes[56] + mi := &file_omni_specs_omni_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4961,7 +5016,7 @@ func (x *EtcdBackupSettings) String() string { func (*EtcdBackupSettings) ProtoMessage() {} func (x *EtcdBackupSettings) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[56] + mi := &file_omni_specs_omni_proto_msgTypes[57] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4974,7 +5029,7 @@ func (x *EtcdBackupSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use EtcdBackupSettings.ProtoReflect.Descriptor instead. func (*EtcdBackupSettings) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{56} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{57} } func (x *EtcdBackupSettings) GetTickInterval() *durationpb.Duration { @@ -5011,7 +5066,7 @@ type MachineClassSpec struct { func (x *MachineClassSpec) Reset() { *x = MachineClassSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[57] + mi := &file_omni_specs_omni_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5023,7 +5078,7 @@ func (x *MachineClassSpec) String() string { func (*MachineClassSpec) ProtoMessage() {} func (x *MachineClassSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[57] + mi := &file_omni_specs_omni_proto_msgTypes[58] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5036,7 +5091,7 @@ func (x *MachineClassSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineClassSpec.ProtoReflect.Descriptor instead. func (*MachineClassSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{57} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{58} } func (x *MachineClassSpec) GetMatchLabels() []string { @@ -5065,7 +5120,7 @@ type MachineConfigGenOptionsSpec struct { func (x *MachineConfigGenOptionsSpec) Reset() { *x = MachineConfigGenOptionsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[58] + mi := &file_omni_specs_omni_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5077,7 +5132,7 @@ func (x *MachineConfigGenOptionsSpec) String() string { func (*MachineConfigGenOptionsSpec) ProtoMessage() {} func (x *MachineConfigGenOptionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[58] + mi := &file_omni_specs_omni_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5090,7 +5145,7 @@ func (x *MachineConfigGenOptionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineConfigGenOptionsSpec.ProtoReflect.Descriptor instead. func (*MachineConfigGenOptionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{58} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{59} } func (x *MachineConfigGenOptionsSpec) GetInstallDisk() string { @@ -5121,7 +5176,7 @@ type EtcdAuditResultSpec struct { func (x *EtcdAuditResultSpec) Reset() { *x = EtcdAuditResultSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[59] + mi := &file_omni_specs_omni_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5133,7 +5188,7 @@ func (x *EtcdAuditResultSpec) String() string { func (*EtcdAuditResultSpec) ProtoMessage() {} func (x *EtcdAuditResultSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[59] + mi := &file_omni_specs_omni_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5146,7 +5201,7 @@ func (x *EtcdAuditResultSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use EtcdAuditResultSpec.ProtoReflect.Descriptor instead. func (*EtcdAuditResultSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{59} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{60} } func (x *EtcdAuditResultSpec) GetEtcdMemberIds() []uint64 { @@ -5167,7 +5222,7 @@ type KubeconfigSpec struct { func (x *KubeconfigSpec) Reset() { *x = KubeconfigSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[60] + mi := &file_omni_specs_omni_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5179,7 +5234,7 @@ func (x *KubeconfigSpec) String() string { func (*KubeconfigSpec) ProtoMessage() {} func (x *KubeconfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[60] + mi := &file_omni_specs_omni_proto_msgTypes[61] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5192,7 +5247,7 @@ func (x *KubeconfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubeconfigSpec.ProtoReflect.Descriptor instead. func (*KubeconfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{60} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{61} } func (x *KubeconfigSpec) GetData() []byte { @@ -5215,7 +5270,7 @@ type KubernetesUsageSpec struct { func (x *KubernetesUsageSpec) Reset() { *x = KubernetesUsageSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[61] + mi := &file_omni_specs_omni_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5227,7 +5282,7 @@ func (x *KubernetesUsageSpec) String() string { func (*KubernetesUsageSpec) ProtoMessage() {} func (x *KubernetesUsageSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[61] + mi := &file_omni_specs_omni_proto_msgTypes[62] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5240,7 +5295,7 @@ func (x *KubernetesUsageSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{61} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{62} } func (x *KubernetesUsageSpec) GetCpu() *KubernetesUsageSpec_Quantity { @@ -5282,7 +5337,7 @@ type ImagePullRequestSpec struct { func (x *ImagePullRequestSpec) Reset() { *x = ImagePullRequestSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[62] + mi := &file_omni_specs_omni_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5294,7 +5349,7 @@ func (x *ImagePullRequestSpec) String() string { func (*ImagePullRequestSpec) ProtoMessage() {} func (x *ImagePullRequestSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[62] + mi := &file_omni_specs_omni_proto_msgTypes[63] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5307,7 +5362,7 @@ func (x *ImagePullRequestSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ImagePullRequestSpec.ProtoReflect.Descriptor instead. func (*ImagePullRequestSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{62} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{63} } func (x *ImagePullRequestSpec) GetNodeImageList() []*ImagePullRequestSpec_NodeImageList { @@ -5333,7 +5388,7 @@ type ImagePullStatusSpec struct { func (x *ImagePullStatusSpec) Reset() { *x = ImagePullStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[63] + mi := &file_omni_specs_omni_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5345,7 +5400,7 @@ func (x *ImagePullStatusSpec) String() string { func (*ImagePullStatusSpec) ProtoMessage() {} func (x *ImagePullStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[63] + mi := &file_omni_specs_omni_proto_msgTypes[64] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5358,7 +5413,7 @@ func (x *ImagePullStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ImagePullStatusSpec.ProtoReflect.Descriptor instead. func (*ImagePullStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{63} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{64} } func (x *ImagePullStatusSpec) GetLastProcessedNode() string { @@ -5413,7 +5468,7 @@ type SchematicSpec struct { func (x *SchematicSpec) Reset() { *x = SchematicSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[64] + mi := &file_omni_specs_omni_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5425,7 +5480,7 @@ func (x *SchematicSpec) String() string { func (*SchematicSpec) ProtoMessage() {} func (x *SchematicSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[64] + mi := &file_omni_specs_omni_proto_msgTypes[65] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5438,7 +5493,7 @@ func (x *SchematicSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use SchematicSpec.ProtoReflect.Descriptor instead. func (*SchematicSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{64} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{65} } // TalosExtensionsSpec represents all available extensions for a particular Talos version. @@ -5451,7 +5506,7 @@ type TalosExtensionsSpec struct { func (x *TalosExtensionsSpec) Reset() { *x = TalosExtensionsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[65] + mi := &file_omni_specs_omni_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5463,7 +5518,7 @@ func (x *TalosExtensionsSpec) String() string { func (*TalosExtensionsSpec) ProtoMessage() {} func (x *TalosExtensionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[65] + mi := &file_omni_specs_omni_proto_msgTypes[66] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5476,7 +5531,7 @@ func (x *TalosExtensionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosExtensionsSpec.ProtoReflect.Descriptor instead. func (*TalosExtensionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{65} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{66} } func (x *TalosExtensionsSpec) GetItems() []*TalosExtensionsSpec_Info { @@ -5497,7 +5552,7 @@ type SchematicConfigurationSpec struct { func (x *SchematicConfigurationSpec) Reset() { *x = SchematicConfigurationSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[66] + mi := &file_omni_specs_omni_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5509,7 +5564,7 @@ func (x *SchematicConfigurationSpec) String() string { func (*SchematicConfigurationSpec) ProtoMessage() {} func (x *SchematicConfigurationSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[66] + mi := &file_omni_specs_omni_proto_msgTypes[67] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5522,7 +5577,7 @@ func (x *SchematicConfigurationSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use SchematicConfigurationSpec.ProtoReflect.Descriptor instead. func (*SchematicConfigurationSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{66} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{67} } func (x *SchematicConfigurationSpec) GetSchematicId() string { @@ -5549,7 +5604,7 @@ type ExtensionsConfigurationSpec struct { func (x *ExtensionsConfigurationSpec) Reset() { *x = ExtensionsConfigurationSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[67] + mi := &file_omni_specs_omni_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5561,7 +5616,7 @@ func (x *ExtensionsConfigurationSpec) String() string { func (*ExtensionsConfigurationSpec) ProtoMessage() {} func (x *ExtensionsConfigurationSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[67] + mi := &file_omni_specs_omni_proto_msgTypes[68] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5574,7 +5629,7 @@ func (x *ExtensionsConfigurationSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtensionsConfigurationSpec.ProtoReflect.Descriptor instead. func (*ExtensionsConfigurationSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{67} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{68} } func (x *ExtensionsConfigurationSpec) GetExtensions() []string { @@ -5597,7 +5652,7 @@ type ExtensionsConfigurationStatusSpec struct { func (x *ExtensionsConfigurationStatusSpec) Reset() { *x = ExtensionsConfigurationStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[68] + mi := &file_omni_specs_omni_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5609,7 +5664,7 @@ func (x *ExtensionsConfigurationStatusSpec) String() string { func (*ExtensionsConfigurationStatusSpec) ProtoMessage() {} func (x *ExtensionsConfigurationStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[68] + mi := &file_omni_specs_omni_proto_msgTypes[69] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5622,7 +5677,7 @@ func (x *ExtensionsConfigurationStatusSpec) ProtoReflect() protoreflect.Message // Deprecated: Use ExtensionsConfigurationStatusSpec.ProtoReflect.Descriptor instead. func (*ExtensionsConfigurationStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{68} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{69} } func (x *ExtensionsConfigurationStatusSpec) GetPhase() ExtensionsConfigurationStatusSpec_Phase { @@ -5656,7 +5711,7 @@ type MachineExtensionsSpec struct { func (x *MachineExtensionsSpec) Reset() { *x = MachineExtensionsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[69] + mi := &file_omni_specs_omni_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5668,7 +5723,7 @@ func (x *MachineExtensionsSpec) String() string { func (*MachineExtensionsSpec) ProtoMessage() {} func (x *MachineExtensionsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[69] + mi := &file_omni_specs_omni_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5681,7 +5736,7 @@ func (x *MachineExtensionsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsSpec.ProtoReflect.Descriptor instead. func (*MachineExtensionsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{69} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{70} } func (x *MachineExtensionsSpec) GetExtensions() []string { @@ -5702,7 +5757,7 @@ type MachineExtensionsStatusSpec struct { func (x *MachineExtensionsStatusSpec) Reset() { *x = MachineExtensionsStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[70] + mi := &file_omni_specs_omni_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5714,7 +5769,7 @@ func (x *MachineExtensionsStatusSpec) String() string { func (*MachineExtensionsStatusSpec) ProtoMessage() {} func (x *MachineExtensionsStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[70] + mi := &file_omni_specs_omni_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5727,7 +5782,7 @@ func (x *MachineExtensionsStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsStatusSpec.ProtoReflect.Descriptor instead. func (*MachineExtensionsStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{70} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{71} } func (x *MachineExtensionsStatusSpec) GetExtensions() []*MachineExtensionsStatusSpec_Item { @@ -5757,7 +5812,7 @@ type MachineStatusMetricsSpec struct { func (x *MachineStatusMetricsSpec) Reset() { *x = MachineStatusMetricsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[71] + mi := &file_omni_specs_omni_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5769,7 +5824,7 @@ func (x *MachineStatusMetricsSpec) String() string { func (*MachineStatusMetricsSpec) ProtoMessage() {} func (x *MachineStatusMetricsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[71] + mi := &file_omni_specs_omni_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5782,7 +5837,7 @@ func (x *MachineStatusMetricsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineStatusMetricsSpec.ProtoReflect.Descriptor instead. func (*MachineStatusMetricsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{71} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{72} } func (x *MachineStatusMetricsSpec) GetRegisteredMachinesCount() uint32 { @@ -5825,7 +5880,7 @@ type ClusterStatusMetricsSpec struct { func (x *ClusterStatusMetricsSpec) Reset() { *x = ClusterStatusMetricsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[72] + mi := &file_omni_specs_omni_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5837,7 +5892,7 @@ func (x *ClusterStatusMetricsSpec) String() string { func (*ClusterStatusMetricsSpec) ProtoMessage() {} func (x *ClusterStatusMetricsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[72] + mi := &file_omni_specs_omni_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5850,7 +5905,7 @@ func (x *ClusterStatusMetricsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterStatusMetricsSpec.ProtoReflect.Descriptor instead. func (*ClusterStatusMetricsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{72} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{73} } func (x *ClusterStatusMetricsSpec) GetNotReadyCount() uint32 { @@ -5880,7 +5935,7 @@ type ClusterKubernetesNodesSpec struct { func (x *ClusterKubernetesNodesSpec) Reset() { *x = ClusterKubernetesNodesSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[73] + mi := &file_omni_specs_omni_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5892,7 +5947,7 @@ func (x *ClusterKubernetesNodesSpec) String() string { func (*ClusterKubernetesNodesSpec) ProtoMessage() {} func (x *ClusterKubernetesNodesSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[73] + mi := &file_omni_specs_omni_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5905,7 +5960,7 @@ func (x *ClusterKubernetesNodesSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterKubernetesNodesSpec.ProtoReflect.Descriptor instead. func (*ClusterKubernetesNodesSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{73} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{74} } func (x *ClusterKubernetesNodesSpec) GetNodes() []string { @@ -5928,7 +5983,7 @@ type KubernetesNodeAuditResultSpec struct { func (x *KubernetesNodeAuditResultSpec) Reset() { *x = KubernetesNodeAuditResultSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[74] + mi := &file_omni_specs_omni_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5940,7 +5995,7 @@ func (x *KubernetesNodeAuditResultSpec) String() string { func (*KubernetesNodeAuditResultSpec) ProtoMessage() {} func (x *KubernetesNodeAuditResultSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[74] + mi := &file_omni_specs_omni_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5953,7 +6008,7 @@ func (x *KubernetesNodeAuditResultSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesNodeAuditResultSpec.ProtoReflect.Descriptor instead. func (*KubernetesNodeAuditResultSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{74} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{75} } func (x *KubernetesNodeAuditResultSpec) GetDeletedNodes() []string { @@ -5981,7 +6036,7 @@ type MachineRequestSetSpec struct { func (x *MachineRequestSetSpec) Reset() { *x = MachineRequestSetSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[75] + mi := &file_omni_specs_omni_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5993,7 +6048,7 @@ func (x *MachineRequestSetSpec) String() string { func (*MachineRequestSetSpec) ProtoMessage() {} func (x *MachineRequestSetSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[75] + mi := &file_omni_specs_omni_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6006,7 +6061,7 @@ func (x *MachineRequestSetSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineRequestSetSpec.ProtoReflect.Descriptor instead. func (*MachineRequestSetSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{75} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{76} } func (x *MachineRequestSetSpec) GetProviderId() string { @@ -6074,7 +6129,7 @@ type MachineRequestSetStatusSpec struct { func (x *MachineRequestSetStatusSpec) Reset() { *x = MachineRequestSetStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[76] + mi := &file_omni_specs_omni_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6086,7 +6141,7 @@ func (x *MachineRequestSetStatusSpec) String() string { func (*MachineRequestSetStatusSpec) ProtoMessage() {} func (x *MachineRequestSetStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[76] + mi := &file_omni_specs_omni_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6099,7 +6154,7 @@ func (x *MachineRequestSetStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineRequestSetStatusSpec.ProtoReflect.Descriptor instead. func (*MachineRequestSetStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{76} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{77} } // ClusterDiagnosticSpec describes the nodes in a cluster with diagnostics information available (indicating potential problems). @@ -6112,7 +6167,7 @@ type ClusterDiagnosticsSpec struct { func (x *ClusterDiagnosticsSpec) Reset() { *x = ClusterDiagnosticsSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[77] + mi := &file_omni_specs_omni_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6124,7 +6179,7 @@ func (x *ClusterDiagnosticsSpec) String() string { func (*ClusterDiagnosticsSpec) ProtoMessage() {} func (x *ClusterDiagnosticsSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[77] + mi := &file_omni_specs_omni_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6137,7 +6192,7 @@ func (x *ClusterDiagnosticsSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterDiagnosticsSpec.ProtoReflect.Descriptor instead. func (*ClusterDiagnosticsSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{77} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{78} } func (x *ClusterDiagnosticsSpec) GetNodes() []*ClusterDiagnosticsSpec_Node { @@ -6158,7 +6213,7 @@ type MachineRequestSetPressureSpec struct { func (x *MachineRequestSetPressureSpec) Reset() { *x = MachineRequestSetPressureSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[78] + mi := &file_omni_specs_omni_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6170,7 +6225,7 @@ func (x *MachineRequestSetPressureSpec) String() string { func (*MachineRequestSetPressureSpec) ProtoMessage() {} func (x *MachineRequestSetPressureSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[78] + mi := &file_omni_specs_omni_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6183,7 +6238,7 @@ func (x *MachineRequestSetPressureSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineRequestSetPressureSpec.ProtoReflect.Descriptor instead. func (*MachineRequestSetPressureSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{78} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{79} } func (x *MachineRequestSetPressureSpec) GetRequiredMachines() uint32 { @@ -6207,7 +6262,7 @@ type ClusterMachineRequestStatusSpec struct { func (x *ClusterMachineRequestStatusSpec) Reset() { *x = ClusterMachineRequestStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[79] + mi := &file_omni_specs_omni_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6219,7 +6274,7 @@ func (x *ClusterMachineRequestStatusSpec) String() string { func (*ClusterMachineRequestStatusSpec) ProtoMessage() {} func (x *ClusterMachineRequestStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[79] + mi := &file_omni_specs_omni_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6232,7 +6287,7 @@ func (x *ClusterMachineRequestStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterMachineRequestStatusSpec.ProtoReflect.Descriptor instead. func (*ClusterMachineRequestStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{79} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{80} } func (x *ClusterMachineRequestStatusSpec) GetStatus() string { @@ -6277,7 +6332,7 @@ type InfraMachineConfigSpec struct { func (x *InfraMachineConfigSpec) Reset() { *x = InfraMachineConfigSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[80] + mi := &file_omni_specs_omni_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6289,7 +6344,7 @@ func (x *InfraMachineConfigSpec) String() string { func (*InfraMachineConfigSpec) ProtoMessage() {} func (x *InfraMachineConfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[80] + mi := &file_omni_specs_omni_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6302,7 +6357,7 @@ func (x *InfraMachineConfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use InfraMachineConfigSpec.ProtoReflect.Descriptor instead. func (*InfraMachineConfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{80} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{81} } func (x *InfraMachineConfigSpec) GetPowerState() InfraMachineConfigSpec_MachinePowerState { @@ -6350,7 +6405,7 @@ type InfraMachineBMCConfigSpec struct { func (x *InfraMachineBMCConfigSpec) Reset() { *x = InfraMachineBMCConfigSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[81] + mi := &file_omni_specs_omni_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6362,7 +6417,7 @@ func (x *InfraMachineBMCConfigSpec) String() string { func (*InfraMachineBMCConfigSpec) ProtoMessage() {} func (x *InfraMachineBMCConfigSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[81] + mi := &file_omni_specs_omni_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6375,7 +6430,7 @@ func (x *InfraMachineBMCConfigSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use InfraMachineBMCConfigSpec.ProtoReflect.Descriptor instead. func (*InfraMachineBMCConfigSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{81} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{82} } func (x *InfraMachineBMCConfigSpec) GetIpmi() *InfraMachineBMCConfigSpec_IPMI { @@ -6402,7 +6457,7 @@ type MaintenanceConfigStatusSpec struct { func (x *MaintenanceConfigStatusSpec) Reset() { *x = MaintenanceConfigStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[82] + mi := &file_omni_specs_omni_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6414,7 +6469,7 @@ func (x *MaintenanceConfigStatusSpec) String() string { func (*MaintenanceConfigStatusSpec) ProtoMessage() {} func (x *MaintenanceConfigStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[82] + mi := &file_omni_specs_omni_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6427,7 +6482,7 @@ func (x *MaintenanceConfigStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MaintenanceConfigStatusSpec.ProtoReflect.Descriptor instead. func (*MaintenanceConfigStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{82} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{83} } func (x *MaintenanceConfigStatusSpec) GetPublicKeyAtLastApply() string { @@ -6446,7 +6501,7 @@ type NodeForceDestroyRequestSpec struct { func (x *NodeForceDestroyRequestSpec) Reset() { *x = NodeForceDestroyRequestSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[83] + mi := &file_omni_specs_omni_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6458,7 +6513,7 @@ func (x *NodeForceDestroyRequestSpec) String() string { func (*NodeForceDestroyRequestSpec) ProtoMessage() {} func (x *NodeForceDestroyRequestSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[83] + mi := &file_omni_specs_omni_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6471,7 +6526,7 @@ func (x *NodeForceDestroyRequestSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use NodeForceDestroyRequestSpec.ProtoReflect.Descriptor instead. func (*NodeForceDestroyRequestSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{83} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{84} } type DiscoveryAffiliateDeleteTaskSpec struct { @@ -6484,7 +6539,7 @@ type DiscoveryAffiliateDeleteTaskSpec struct { func (x *DiscoveryAffiliateDeleteTaskSpec) Reset() { *x = DiscoveryAffiliateDeleteTaskSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[84] + mi := &file_omni_specs_omni_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6496,7 +6551,7 @@ func (x *DiscoveryAffiliateDeleteTaskSpec) String() string { func (*DiscoveryAffiliateDeleteTaskSpec) ProtoMessage() {} func (x *DiscoveryAffiliateDeleteTaskSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[84] + mi := &file_omni_specs_omni_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6509,7 +6564,7 @@ func (x *DiscoveryAffiliateDeleteTaskSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use DiscoveryAffiliateDeleteTaskSpec.ProtoReflect.Descriptor instead. func (*DiscoveryAffiliateDeleteTaskSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{84} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{85} } func (x *DiscoveryAffiliateDeleteTaskSpec) GetClusterId() string { @@ -6539,7 +6594,7 @@ type InfraProviderCombinedStatusSpec struct { func (x *InfraProviderCombinedStatusSpec) Reset() { *x = InfraProviderCombinedStatusSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[85] + mi := &file_omni_specs_omni_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6551,7 +6606,7 @@ func (x *InfraProviderCombinedStatusSpec) String() string { func (*InfraProviderCombinedStatusSpec) ProtoMessage() {} func (x *InfraProviderCombinedStatusSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[85] + mi := &file_omni_specs_omni_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6564,7 +6619,7 @@ func (x *InfraProviderCombinedStatusSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use InfraProviderCombinedStatusSpec.ProtoReflect.Descriptor instead. func (*InfraProviderCombinedStatusSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{85} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{86} } func (x *InfraProviderCombinedStatusSpec) GetName() string { @@ -6604,7 +6659,7 @@ type MachineConfigDiffSpec struct { func (x *MachineConfigDiffSpec) Reset() { *x = MachineConfigDiffSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[86] + mi := &file_omni_specs_omni_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6616,7 +6671,7 @@ func (x *MachineConfigDiffSpec) String() string { func (*MachineConfigDiffSpec) ProtoMessage() {} func (x *MachineConfigDiffSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[86] + mi := &file_omni_specs_omni_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6629,7 +6684,7 @@ func (x *MachineConfigDiffSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineConfigDiffSpec.ProtoReflect.Descriptor instead. func (*MachineConfigDiffSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{86} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{87} } func (x *MachineConfigDiffSpec) GetDiff() string { @@ -6656,7 +6711,7 @@ type MachineStatusSpec_HardwareStatus struct { func (x *MachineStatusSpec_HardwareStatus) Reset() { *x = MachineStatusSpec_HardwareStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[87] + mi := &file_omni_specs_omni_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6668,7 +6723,7 @@ func (x *MachineStatusSpec_HardwareStatus) String() string { func (*MachineStatusSpec_HardwareStatus) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[87] + mi := &file_omni_specs_omni_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6731,7 +6786,7 @@ type MachineStatusSpec_NetworkStatus struct { func (x *MachineStatusSpec_NetworkStatus) Reset() { *x = MachineStatusSpec_NetworkStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[88] + mi := &file_omni_specs_omni_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6743,7 +6798,7 @@ func (x *MachineStatusSpec_NetworkStatus) String() string { func (*MachineStatusSpec_NetworkStatus) ProtoMessage() {} func (x *MachineStatusSpec_NetworkStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[88] + mi := &file_omni_specs_omni_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6819,7 +6874,7 @@ type MachineStatusSpec_PlatformMetadata struct { func (x *MachineStatusSpec_PlatformMetadata) Reset() { *x = MachineStatusSpec_PlatformMetadata{} - mi := &file_omni_specs_omni_proto_msgTypes[89] + mi := &file_omni_specs_omni_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6831,7 +6886,7 @@ func (x *MachineStatusSpec_PlatformMetadata) String() string { func (*MachineStatusSpec_PlatformMetadata) ProtoMessage() {} func (x *MachineStatusSpec_PlatformMetadata) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[89] + mi := &file_omni_specs_omni_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6937,7 +6992,7 @@ type MachineStatusSpec_Schematic struct { func (x *MachineStatusSpec_Schematic) Reset() { *x = MachineStatusSpec_Schematic{} - mi := &file_omni_specs_omni_proto_msgTypes[90] + mi := &file_omni_specs_omni_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6949,7 +7004,7 @@ func (x *MachineStatusSpec_Schematic) String() string { func (*MachineStatusSpec_Schematic) ProtoMessage() {} func (x *MachineStatusSpec_Schematic) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[90] + mi := &file_omni_specs_omni_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7039,7 +7094,7 @@ type MachineStatusSpec_Diagnostic struct { func (x *MachineStatusSpec_Diagnostic) Reset() { *x = MachineStatusSpec_Diagnostic{} - mi := &file_omni_specs_omni_proto_msgTypes[91] + mi := &file_omni_specs_omni_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7051,7 +7106,7 @@ func (x *MachineStatusSpec_Diagnostic) String() string { func (*MachineStatusSpec_Diagnostic) ProtoMessage() {} func (x *MachineStatusSpec_Diagnostic) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[91] + mi := &file_omni_specs_omni_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7107,7 +7162,7 @@ type MachineStatusSpec_HardwareStatus_Processor struct { func (x *MachineStatusSpec_HardwareStatus_Processor) Reset() { *x = MachineStatusSpec_HardwareStatus_Processor{} - mi := &file_omni_specs_omni_proto_msgTypes[93] + mi := &file_omni_specs_omni_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7119,7 +7174,7 @@ func (x *MachineStatusSpec_HardwareStatus_Processor) String() string { func (*MachineStatusSpec_HardwareStatus_Processor) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_Processor) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[93] + mi := &file_omni_specs_omni_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7183,7 +7238,7 @@ type MachineStatusSpec_HardwareStatus_MemoryModule struct { func (x *MachineStatusSpec_HardwareStatus_MemoryModule) Reset() { *x = MachineStatusSpec_HardwareStatus_MemoryModule{} - mi := &file_omni_specs_omni_proto_msgTypes[94] + mi := &file_omni_specs_omni_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7195,7 +7250,7 @@ func (x *MachineStatusSpec_HardwareStatus_MemoryModule) String() string { func (*MachineStatusSpec_HardwareStatus_MemoryModule) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_MemoryModule) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[94] + mi := &file_omni_specs_omni_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7258,7 +7313,7 @@ type MachineStatusSpec_HardwareStatus_BlockDevice struct { func (x *MachineStatusSpec_HardwareStatus_BlockDevice) Reset() { *x = MachineStatusSpec_HardwareStatus_BlockDevice{} - mi := &file_omni_specs_omni_proto_msgTypes[95] + mi := &file_omni_specs_omni_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7270,7 +7325,7 @@ func (x *MachineStatusSpec_HardwareStatus_BlockDevice) String() string { func (*MachineStatusSpec_HardwareStatus_BlockDevice) ProtoMessage() {} func (x *MachineStatusSpec_HardwareStatus_BlockDevice) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[95] + mi := &file_omni_specs_omni_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7389,7 +7444,7 @@ type MachineStatusSpec_NetworkStatus_NetworkLinkStatus struct { func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) Reset() { *x = MachineStatusSpec_NetworkStatus_NetworkLinkStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[96] + mi := &file_omni_specs_omni_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7401,7 +7456,7 @@ func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) String() string { func (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoMessage() {} func (x *MachineStatusSpec_NetworkStatus_NetworkLinkStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[96] + mi := &file_omni_specs_omni_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7466,7 +7521,7 @@ type ClusterSpec_Features struct { func (x *ClusterSpec_Features) Reset() { *x = ClusterSpec_Features{} - mi := &file_omni_specs_omni_proto_msgTypes[97] + mi := &file_omni_specs_omni_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7478,7 +7533,7 @@ func (x *ClusterSpec_Features) String() string { func (*ClusterSpec_Features) ProtoMessage() {} func (x *ClusterSpec_Features) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[97] + mi := &file_omni_specs_omni_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7525,7 +7580,7 @@ type ClusterMachineStatusSpec_ProvisionStatus struct { func (x *ClusterMachineStatusSpec_ProvisionStatus) Reset() { *x = ClusterMachineStatusSpec_ProvisionStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[98] + mi := &file_omni_specs_omni_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7537,7 +7592,7 @@ func (x *ClusterMachineStatusSpec_ProvisionStatus) String() string { func (*ClusterMachineStatusSpec_ProvisionStatus) ProtoMessage() {} func (x *ClusterMachineStatusSpec_ProvisionStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[98] + mi := &file_omni_specs_omni_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7582,7 +7637,7 @@ type MachineSetSpec_MachineClass struct { func (x *MachineSetSpec_MachineClass) Reset() { *x = MachineSetSpec_MachineClass{} - mi := &file_omni_specs_omni_proto_msgTypes[99] + mi := &file_omni_specs_omni_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7594,7 +7649,7 @@ func (x *MachineSetSpec_MachineClass) String() string { func (*MachineSetSpec_MachineClass) ProtoMessage() {} func (x *MachineSetSpec_MachineClass) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[99] + mi := &file_omni_specs_omni_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7607,7 +7662,7 @@ func (x *MachineSetSpec_MachineClass) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetSpec_MachineClass.ProtoReflect.Descriptor instead. func (*MachineSetSpec_MachineClass) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 0} } func (x *MachineSetSpec_MachineClass) GetName() string { @@ -7646,7 +7701,7 @@ type MachineSetSpec_MachineAllocation struct { func (x *MachineSetSpec_MachineAllocation) Reset() { *x = MachineSetSpec_MachineAllocation{} - mi := &file_omni_specs_omni_proto_msgTypes[100] + mi := &file_omni_specs_omni_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7658,7 +7713,7 @@ func (x *MachineSetSpec_MachineAllocation) String() string { func (*MachineSetSpec_MachineAllocation) ProtoMessage() {} func (x *MachineSetSpec_MachineAllocation) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[100] + mi := &file_omni_specs_omni_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7671,7 +7726,7 @@ func (x *MachineSetSpec_MachineAllocation) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetSpec_MachineAllocation.ProtoReflect.Descriptor instead. func (*MachineSetSpec_MachineAllocation) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 1} } func (x *MachineSetSpec_MachineAllocation) GetName() string { @@ -7709,7 +7764,7 @@ type MachineSetSpec_BootstrapSpec struct { func (x *MachineSetSpec_BootstrapSpec) Reset() { *x = MachineSetSpec_BootstrapSpec{} - mi := &file_omni_specs_omni_proto_msgTypes[101] + mi := &file_omni_specs_omni_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7721,7 +7776,7 @@ func (x *MachineSetSpec_BootstrapSpec) String() string { func (*MachineSetSpec_BootstrapSpec) ProtoMessage() {} func (x *MachineSetSpec_BootstrapSpec) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[101] + mi := &file_omni_specs_omni_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7734,7 +7789,7 @@ func (x *MachineSetSpec_BootstrapSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineSetSpec_BootstrapSpec.ProtoReflect.Descriptor instead. func (*MachineSetSpec_BootstrapSpec) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 2} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 2} } func (x *MachineSetSpec_BootstrapSpec) GetClusterUuid() string { @@ -7763,7 +7818,7 @@ type MachineSetSpec_RollingUpdateStrategyConfig struct { func (x *MachineSetSpec_RollingUpdateStrategyConfig) Reset() { *x = MachineSetSpec_RollingUpdateStrategyConfig{} - mi := &file_omni_specs_omni_proto_msgTypes[102] + mi := &file_omni_specs_omni_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7775,7 +7830,7 @@ func (x *MachineSetSpec_RollingUpdateStrategyConfig) String() string { func (*MachineSetSpec_RollingUpdateStrategyConfig) ProtoMessage() {} func (x *MachineSetSpec_RollingUpdateStrategyConfig) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[102] + mi := &file_omni_specs_omni_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7788,7 +7843,7 @@ func (x *MachineSetSpec_RollingUpdateStrategyConfig) ProtoReflect() protoreflect // Deprecated: Use MachineSetSpec_RollingUpdateStrategyConfig.ProtoReflect.Descriptor instead. func (*MachineSetSpec_RollingUpdateStrategyConfig) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 3} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 3} } func (x *MachineSetSpec_RollingUpdateStrategyConfig) GetMaxParallelism() uint32 { @@ -7810,7 +7865,7 @@ type MachineSetSpec_UpdateStrategyConfig struct { func (x *MachineSetSpec_UpdateStrategyConfig) Reset() { *x = MachineSetSpec_UpdateStrategyConfig{} - mi := &file_omni_specs_omni_proto_msgTypes[103] + mi := &file_omni_specs_omni_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7822,7 +7877,7 @@ func (x *MachineSetSpec_UpdateStrategyConfig) String() string { func (*MachineSetSpec_UpdateStrategyConfig) ProtoMessage() {} func (x *MachineSetSpec_UpdateStrategyConfig) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[103] + mi := &file_omni_specs_omni_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7835,7 +7890,7 @@ func (x *MachineSetSpec_UpdateStrategyConfig) ProtoReflect() protoreflect.Messag // Deprecated: Use MachineSetSpec_UpdateStrategyConfig.ProtoReflect.Descriptor instead. func (*MachineSetSpec_UpdateStrategyConfig) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{39, 4} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{40, 4} } func (x *MachineSetSpec_UpdateStrategyConfig) GetRolling() *MachineSetSpec_RollingUpdateStrategyConfig { @@ -7857,7 +7912,7 @@ type ControlPlaneStatusSpec_Condition struct { func (x *ControlPlaneStatusSpec_Condition) Reset() { *x = ControlPlaneStatusSpec_Condition{} - mi := &file_omni_specs_omni_proto_msgTypes[104] + mi := &file_omni_specs_omni_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7869,7 +7924,7 @@ func (x *ControlPlaneStatusSpec_Condition) String() string { func (*ControlPlaneStatusSpec_Condition) ProtoMessage() {} func (x *ControlPlaneStatusSpec_Condition) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[104] + mi := &file_omni_specs_omni_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7882,7 +7937,7 @@ func (x *ControlPlaneStatusSpec_Condition) ProtoReflect() protoreflect.Message { // Deprecated: Use ControlPlaneStatusSpec_Condition.ProtoReflect.Descriptor instead. func (*ControlPlaneStatusSpec_Condition) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{45, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{46, 0} } func (x *ControlPlaneStatusSpec_Condition) GetType() ConditionType { @@ -7924,7 +7979,7 @@ type KubernetesStatusSpec_NodeStatus struct { func (x *KubernetesStatusSpec_NodeStatus) Reset() { *x = KubernetesStatusSpec_NodeStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[105] + mi := &file_omni_specs_omni_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7936,7 +7991,7 @@ func (x *KubernetesStatusSpec_NodeStatus) String() string { func (*KubernetesStatusSpec_NodeStatus) ProtoMessage() {} func (x *KubernetesStatusSpec_NodeStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[105] + mi := &file_omni_specs_omni_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7949,7 +8004,7 @@ func (x *KubernetesStatusSpec_NodeStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesStatusSpec_NodeStatus.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_NodeStatus) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{47, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{48, 0} } func (x *KubernetesStatusSpec_NodeStatus) GetNodename() string { @@ -7984,7 +8039,7 @@ type KubernetesStatusSpec_StaticPodStatus struct { func (x *KubernetesStatusSpec_StaticPodStatus) Reset() { *x = KubernetesStatusSpec_StaticPodStatus{} - mi := &file_omni_specs_omni_proto_msgTypes[106] + mi := &file_omni_specs_omni_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7996,7 +8051,7 @@ func (x *KubernetesStatusSpec_StaticPodStatus) String() string { func (*KubernetesStatusSpec_StaticPodStatus) ProtoMessage() {} func (x *KubernetesStatusSpec_StaticPodStatus) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[106] + mi := &file_omni_specs_omni_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8009,7 +8064,7 @@ func (x *KubernetesStatusSpec_StaticPodStatus) ProtoReflect() protoreflect.Messa // Deprecated: Use KubernetesStatusSpec_StaticPodStatus.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_StaticPodStatus) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{47, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{48, 1} } func (x *KubernetesStatusSpec_StaticPodStatus) GetApp() string { @@ -8043,7 +8098,7 @@ type KubernetesStatusSpec_NodeStaticPods struct { func (x *KubernetesStatusSpec_NodeStaticPods) Reset() { *x = KubernetesStatusSpec_NodeStaticPods{} - mi := &file_omni_specs_omni_proto_msgTypes[107] + mi := &file_omni_specs_omni_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8055,7 +8110,7 @@ func (x *KubernetesStatusSpec_NodeStaticPods) String() string { func (*KubernetesStatusSpec_NodeStaticPods) ProtoMessage() {} func (x *KubernetesStatusSpec_NodeStaticPods) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[107] + mi := &file_omni_specs_omni_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8068,7 +8123,7 @@ func (x *KubernetesStatusSpec_NodeStaticPods) ProtoReflect() protoreflect.Messag // Deprecated: Use KubernetesStatusSpec_NodeStaticPods.ProtoReflect.Descriptor instead. func (*KubernetesStatusSpec_NodeStaticPods) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{47, 2} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{48, 2} } func (x *KubernetesStatusSpec_NodeStaticPods) GetNodename() string { @@ -8099,7 +8154,7 @@ type MachineClassSpec_Provision struct { func (x *MachineClassSpec_Provision) Reset() { *x = MachineClassSpec_Provision{} - mi := &file_omni_specs_omni_proto_msgTypes[108] + mi := &file_omni_specs_omni_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8111,7 +8166,7 @@ func (x *MachineClassSpec_Provision) String() string { func (*MachineClassSpec_Provision) ProtoMessage() {} func (x *MachineClassSpec_Provision) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[108] + mi := &file_omni_specs_omni_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8124,7 +8179,7 @@ func (x *MachineClassSpec_Provision) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineClassSpec_Provision.ProtoReflect.Descriptor instead. func (*MachineClassSpec_Provision) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{57, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{58, 0} } func (x *MachineClassSpec_Provision) GetProviderId() string { @@ -8182,7 +8237,7 @@ type MachineConfigGenOptionsSpec_InstallImage struct { func (x *MachineConfigGenOptionsSpec_InstallImage) Reset() { *x = MachineConfigGenOptionsSpec_InstallImage{} - mi := &file_omni_specs_omni_proto_msgTypes[109] + mi := &file_omni_specs_omni_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8194,7 +8249,7 @@ func (x *MachineConfigGenOptionsSpec_InstallImage) String() string { func (*MachineConfigGenOptionsSpec_InstallImage) ProtoMessage() {} func (x *MachineConfigGenOptionsSpec_InstallImage) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[109] + mi := &file_omni_specs_omni_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8207,7 +8262,7 @@ func (x *MachineConfigGenOptionsSpec_InstallImage) ProtoReflect() protoreflect.M // Deprecated: Use MachineConfigGenOptionsSpec_InstallImage.ProtoReflect.Descriptor instead. func (*MachineConfigGenOptionsSpec_InstallImage) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{58, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{59, 0} } func (x *MachineConfigGenOptionsSpec_InstallImage) GetTalosVersion() string { @@ -8263,7 +8318,7 @@ type KubernetesUsageSpec_Quantity struct { func (x *KubernetesUsageSpec_Quantity) Reset() { *x = KubernetesUsageSpec_Quantity{} - mi := &file_omni_specs_omni_proto_msgTypes[110] + mi := &file_omni_specs_omni_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8275,7 +8330,7 @@ func (x *KubernetesUsageSpec_Quantity) String() string { func (*KubernetesUsageSpec_Quantity) ProtoMessage() {} func (x *KubernetesUsageSpec_Quantity) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[110] + mi := &file_omni_specs_omni_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8288,7 +8343,7 @@ func (x *KubernetesUsageSpec_Quantity) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec_Quantity.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec_Quantity) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{61, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{62, 0} } func (x *KubernetesUsageSpec_Quantity) GetRequests() float64 { @@ -8322,7 +8377,7 @@ type KubernetesUsageSpec_Pod struct { func (x *KubernetesUsageSpec_Pod) Reset() { *x = KubernetesUsageSpec_Pod{} - mi := &file_omni_specs_omni_proto_msgTypes[111] + mi := &file_omni_specs_omni_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8334,7 +8389,7 @@ func (x *KubernetesUsageSpec_Pod) String() string { func (*KubernetesUsageSpec_Pod) ProtoMessage() {} func (x *KubernetesUsageSpec_Pod) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[111] + mi := &file_omni_specs_omni_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8347,7 +8402,7 @@ func (x *KubernetesUsageSpec_Pod) ProtoReflect() protoreflect.Message { // Deprecated: Use KubernetesUsageSpec_Pod.ProtoReflect.Descriptor instead. func (*KubernetesUsageSpec_Pod) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{61, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{62, 1} } func (x *KubernetesUsageSpec_Pod) GetCount() int32 { @@ -8374,7 +8429,7 @@ type ImagePullRequestSpec_NodeImageList struct { func (x *ImagePullRequestSpec_NodeImageList) Reset() { *x = ImagePullRequestSpec_NodeImageList{} - mi := &file_omni_specs_omni_proto_msgTypes[112] + mi := &file_omni_specs_omni_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8386,7 +8441,7 @@ func (x *ImagePullRequestSpec_NodeImageList) String() string { func (*ImagePullRequestSpec_NodeImageList) ProtoMessage() {} func (x *ImagePullRequestSpec_NodeImageList) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[112] + mi := &file_omni_specs_omni_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8399,7 +8454,7 @@ func (x *ImagePullRequestSpec_NodeImageList) ProtoReflect() protoreflect.Message // Deprecated: Use ImagePullRequestSpec_NodeImageList.ProtoReflect.Descriptor instead. func (*ImagePullRequestSpec_NodeImageList) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{62, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{63, 0} } func (x *ImagePullRequestSpec_NodeImageList) GetNode() string { @@ -8431,7 +8486,7 @@ type TalosExtensionsSpec_Info struct { func (x *TalosExtensionsSpec_Info) Reset() { *x = TalosExtensionsSpec_Info{} - mi := &file_omni_specs_omni_proto_msgTypes[113] + mi := &file_omni_specs_omni_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8443,7 +8498,7 @@ func (x *TalosExtensionsSpec_Info) String() string { func (*TalosExtensionsSpec_Info) ProtoMessage() {} func (x *TalosExtensionsSpec_Info) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[113] + mi := &file_omni_specs_omni_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8456,7 +8511,7 @@ func (x *TalosExtensionsSpec_Info) ProtoReflect() protoreflect.Message { // Deprecated: Use TalosExtensionsSpec_Info.ProtoReflect.Descriptor instead. func (*TalosExtensionsSpec_Info) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{65, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{66, 0} } func (x *TalosExtensionsSpec_Info) GetName() string { @@ -8512,7 +8567,7 @@ type MachineExtensionsStatusSpec_Item struct { func (x *MachineExtensionsStatusSpec_Item) Reset() { *x = MachineExtensionsStatusSpec_Item{} - mi := &file_omni_specs_omni_proto_msgTypes[114] + mi := &file_omni_specs_omni_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8524,7 +8579,7 @@ func (x *MachineExtensionsStatusSpec_Item) String() string { func (*MachineExtensionsStatusSpec_Item) ProtoMessage() {} func (x *MachineExtensionsStatusSpec_Item) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[114] + mi := &file_omni_specs_omni_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8537,7 +8592,7 @@ func (x *MachineExtensionsStatusSpec_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use MachineExtensionsStatusSpec_Item.ProtoReflect.Descriptor instead. func (*MachineExtensionsStatusSpec_Item) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{70, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{71, 0} } func (x *MachineExtensionsStatusSpec_Item) GetName() string { @@ -8571,7 +8626,7 @@ type ClusterDiagnosticsSpec_Node struct { func (x *ClusterDiagnosticsSpec_Node) Reset() { *x = ClusterDiagnosticsSpec_Node{} - mi := &file_omni_specs_omni_proto_msgTypes[116] + mi := &file_omni_specs_omni_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8583,7 +8638,7 @@ func (x *ClusterDiagnosticsSpec_Node) String() string { func (*ClusterDiagnosticsSpec_Node) ProtoMessage() {} func (x *ClusterDiagnosticsSpec_Node) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[116] + mi := &file_omni_specs_omni_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8596,7 +8651,7 @@ func (x *ClusterDiagnosticsSpec_Node) ProtoReflect() protoreflect.Message { // Deprecated: Use ClusterDiagnosticsSpec_Node.ProtoReflect.Descriptor instead. func (*ClusterDiagnosticsSpec_Node) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{77, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{78, 0} } func (x *ClusterDiagnosticsSpec_Node) GetId() string { @@ -8625,7 +8680,7 @@ type InfraMachineBMCConfigSpec_IPMI struct { func (x *InfraMachineBMCConfigSpec_IPMI) Reset() { *x = InfraMachineBMCConfigSpec_IPMI{} - mi := &file_omni_specs_omni_proto_msgTypes[117] + mi := &file_omni_specs_omni_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8637,7 +8692,7 @@ func (x *InfraMachineBMCConfigSpec_IPMI) String() string { func (*InfraMachineBMCConfigSpec_IPMI) ProtoMessage() {} func (x *InfraMachineBMCConfigSpec_IPMI) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[117] + mi := &file_omni_specs_omni_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8650,7 +8705,7 @@ func (x *InfraMachineBMCConfigSpec_IPMI) ProtoReflect() protoreflect.Message { // Deprecated: Use InfraMachineBMCConfigSpec_IPMI.ProtoReflect.Descriptor instead. func (*InfraMachineBMCConfigSpec_IPMI) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{81, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{82, 0} } func (x *InfraMachineBMCConfigSpec_IPMI) GetAddress() string { @@ -8690,7 +8745,7 @@ type InfraMachineBMCConfigSpec_API struct { func (x *InfraMachineBMCConfigSpec_API) Reset() { *x = InfraMachineBMCConfigSpec_API{} - mi := &file_omni_specs_omni_proto_msgTypes[118] + mi := &file_omni_specs_omni_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8702,7 +8757,7 @@ func (x *InfraMachineBMCConfigSpec_API) String() string { func (*InfraMachineBMCConfigSpec_API) ProtoMessage() {} func (x *InfraMachineBMCConfigSpec_API) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[118] + mi := &file_omni_specs_omni_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8715,7 +8770,7 @@ func (x *InfraMachineBMCConfigSpec_API) ProtoReflect() protoreflect.Message { // Deprecated: Use InfraMachineBMCConfigSpec_API.ProtoReflect.Descriptor instead. func (*InfraMachineBMCConfigSpec_API) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{81, 1} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{82, 1} } func (x *InfraMachineBMCConfigSpec_API) GetAddress() string { @@ -8736,7 +8791,7 @@ type InfraProviderCombinedStatusSpec_Health struct { func (x *InfraProviderCombinedStatusSpec_Health) Reset() { *x = InfraProviderCombinedStatusSpec_Health{} - mi := &file_omni_specs_omni_proto_msgTypes[119] + mi := &file_omni_specs_omni_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8748,7 +8803,7 @@ func (x *InfraProviderCombinedStatusSpec_Health) String() string { func (*InfraProviderCombinedStatusSpec_Health) ProtoMessage() {} func (x *InfraProviderCombinedStatusSpec_Health) ProtoReflect() protoreflect.Message { - mi := &file_omni_specs_omni_proto_msgTypes[119] + mi := &file_omni_specs_omni_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8761,7 +8816,7 @@ func (x *InfraProviderCombinedStatusSpec_Health) ProtoReflect() protoreflect.Mes // Deprecated: Use InfraProviderCombinedStatusSpec_Health.ProtoReflect.Descriptor instead. func (*InfraProviderCombinedStatusSpec_Health) Descriptor() ([]byte, []int) { - return file_omni_specs_omni_proto_rawDescGZIP(), []int{85, 0} + return file_omni_specs_omni_proto_rawDescGZIP(), []int{86, 0} } func (x *InfraProviderCombinedStatusSpec_Health) GetConnected() bool { @@ -9070,9 +9125,12 @@ const file_omni_specs_omni_proto_rawDesc = "" + "\rtalos_version\x18\a \x01(\tR\ftalosVersion\x12!\n" + "\fschematic_id\x18\b \x01(\tR\vschematicIdJ\x04\b\x01\x10\x02J\x04\b\x02\x10\x03\"@\n" + "\x1aClusterBootstrapStatusSpec\x12\"\n" + - "\fbootstrapped\x18\x01 \x01(\bR\fbootstrapped\"(\n" + + "\fbootstrapped\x18\x01 \x01(\bR\fbootstrapped\"D\n" + "\x12ClusterSecretsSpec\x12\x12\n" + - "\x04data\x18\x01 \x01(\fR\x04data\"\x8a\x01\n" + + "\x04data\x18\x01 \x01(\fR\x04data\x12\x1a\n" + + "\bimported\x18\x02 \x01(\bR\bimported\"0\n" + + "\x1aImportedClusterSecretsSpec\x12\x12\n" + + "\x04data\x18\x01 \x01(\tR\x04data\"\x8a\x01\n" + "\x16LoadBalancerConfigSpec\x12\x1b\n" + "\tbind_port\x18\x02 \x01(\tR\bbindPort\x12/\n" + "\x13siderolink_endpoint\x18\x04 \x01(\tR\x12siderolinkEndpoint\x12\x1c\n" + @@ -9488,7 +9546,7 @@ func file_omni_specs_omni_proto_rawDescGZIP() []byte { } var file_omni_specs_omni_proto_enumTypes = make([]protoimpl.EnumInfo, 22) -var file_omni_specs_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 120) +var file_omni_specs_omni_proto_msgTypes = make([]protoimpl.MessageInfo, 121) var file_omni_specs_omni_proto_goTypes = []any{ (ConfigApplyStatus)(0), // 0: specs.ConfigApplyStatus (MachineSetPhase)(0), // 1: specs.MachineSetPhase @@ -9545,179 +9603,180 @@ var file_omni_specs_omni_proto_goTypes = []any{ (*ClusterMachineConfigStatusSpec)(nil), // 52: specs.ClusterMachineConfigStatusSpec (*ClusterBootstrapStatusSpec)(nil), // 53: specs.ClusterBootstrapStatusSpec (*ClusterSecretsSpec)(nil), // 54: specs.ClusterSecretsSpec - (*LoadBalancerConfigSpec)(nil), // 55: specs.LoadBalancerConfigSpec - (*LoadBalancerStatusSpec)(nil), // 56: specs.LoadBalancerStatusSpec - (*KubernetesVersionSpec)(nil), // 57: specs.KubernetesVersionSpec - (*TalosVersionSpec)(nil), // 58: specs.TalosVersionSpec - (*InstallationMediaSpec)(nil), // 59: specs.InstallationMediaSpec - (*ConfigPatchSpec)(nil), // 60: specs.ConfigPatchSpec - (*MachineSetSpec)(nil), // 61: specs.MachineSetSpec - (*TalosUpgradeStatusSpec)(nil), // 62: specs.TalosUpgradeStatusSpec - (*MachineSetStatusSpec)(nil), // 63: specs.MachineSetStatusSpec - (*MachineSetNodeSpec)(nil), // 64: specs.MachineSetNodeSpec - (*MachineLabelsSpec)(nil), // 65: specs.MachineLabelsSpec - (*MachineStatusSnapshotSpec)(nil), // 66: specs.MachineStatusSnapshotSpec - (*ControlPlaneStatusSpec)(nil), // 67: specs.ControlPlaneStatusSpec - (*ClusterEndpointSpec)(nil), // 68: specs.ClusterEndpointSpec - (*KubernetesStatusSpec)(nil), // 69: specs.KubernetesStatusSpec - (*KubernetesUpgradeStatusSpec)(nil), // 70: specs.KubernetesUpgradeStatusSpec - (*KubernetesUpgradeManifestStatusSpec)(nil), // 71: specs.KubernetesUpgradeManifestStatusSpec - (*DestroyStatusSpec)(nil), // 72: specs.DestroyStatusSpec - (*OngoingTaskSpec)(nil), // 73: specs.OngoingTaskSpec - (*ClusterMachineEncryptionKeySpec)(nil), // 74: specs.ClusterMachineEncryptionKeySpec - (*ExposedServiceSpec)(nil), // 75: specs.ExposedServiceSpec - (*ClusterWorkloadProxyStatusSpec)(nil), // 76: specs.ClusterWorkloadProxyStatusSpec - (*FeaturesConfigSpec)(nil), // 77: specs.FeaturesConfigSpec - (*EtcdBackupSettings)(nil), // 78: specs.EtcdBackupSettings - (*MachineClassSpec)(nil), // 79: specs.MachineClassSpec - (*MachineConfigGenOptionsSpec)(nil), // 80: specs.MachineConfigGenOptionsSpec - (*EtcdAuditResultSpec)(nil), // 81: specs.EtcdAuditResultSpec - (*KubeconfigSpec)(nil), // 82: specs.KubeconfigSpec - (*KubernetesUsageSpec)(nil), // 83: specs.KubernetesUsageSpec - (*ImagePullRequestSpec)(nil), // 84: specs.ImagePullRequestSpec - (*ImagePullStatusSpec)(nil), // 85: specs.ImagePullStatusSpec - (*SchematicSpec)(nil), // 86: specs.SchematicSpec - (*TalosExtensionsSpec)(nil), // 87: specs.TalosExtensionsSpec - (*SchematicConfigurationSpec)(nil), // 88: specs.SchematicConfigurationSpec - (*ExtensionsConfigurationSpec)(nil), // 89: specs.ExtensionsConfigurationSpec - (*ExtensionsConfigurationStatusSpec)(nil), // 90: specs.ExtensionsConfigurationStatusSpec - (*MachineExtensionsSpec)(nil), // 91: specs.MachineExtensionsSpec - (*MachineExtensionsStatusSpec)(nil), // 92: specs.MachineExtensionsStatusSpec - (*MachineStatusMetricsSpec)(nil), // 93: specs.MachineStatusMetricsSpec - (*ClusterStatusMetricsSpec)(nil), // 94: specs.ClusterStatusMetricsSpec - (*ClusterKubernetesNodesSpec)(nil), // 95: specs.ClusterKubernetesNodesSpec - (*KubernetesNodeAuditResultSpec)(nil), // 96: specs.KubernetesNodeAuditResultSpec - (*MachineRequestSetSpec)(nil), // 97: specs.MachineRequestSetSpec - (*MachineRequestSetStatusSpec)(nil), // 98: specs.MachineRequestSetStatusSpec - (*ClusterDiagnosticsSpec)(nil), // 99: specs.ClusterDiagnosticsSpec - (*MachineRequestSetPressureSpec)(nil), // 100: specs.MachineRequestSetPressureSpec - (*ClusterMachineRequestStatusSpec)(nil), // 101: specs.ClusterMachineRequestStatusSpec - (*InfraMachineConfigSpec)(nil), // 102: specs.InfraMachineConfigSpec - (*InfraMachineBMCConfigSpec)(nil), // 103: specs.InfraMachineBMCConfigSpec - (*MaintenanceConfigStatusSpec)(nil), // 104: specs.MaintenanceConfigStatusSpec - (*NodeForceDestroyRequestSpec)(nil), // 105: specs.NodeForceDestroyRequestSpec - (*DiscoveryAffiliateDeleteTaskSpec)(nil), // 106: specs.DiscoveryAffiliateDeleteTaskSpec - (*InfraProviderCombinedStatusSpec)(nil), // 107: specs.InfraProviderCombinedStatusSpec - (*MachineConfigDiffSpec)(nil), // 108: specs.MachineConfigDiffSpec - (*MachineStatusSpec_HardwareStatus)(nil), // 109: specs.MachineStatusSpec.HardwareStatus - (*MachineStatusSpec_NetworkStatus)(nil), // 110: specs.MachineStatusSpec.NetworkStatus - (*MachineStatusSpec_PlatformMetadata)(nil), // 111: specs.MachineStatusSpec.PlatformMetadata - (*MachineStatusSpec_Schematic)(nil), // 112: specs.MachineStatusSpec.Schematic - (*MachineStatusSpec_Diagnostic)(nil), // 113: specs.MachineStatusSpec.Diagnostic - nil, // 114: specs.MachineStatusSpec.ImageLabelsEntry - (*MachineStatusSpec_HardwareStatus_Processor)(nil), // 115: specs.MachineStatusSpec.HardwareStatus.Processor - (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil), // 116: specs.MachineStatusSpec.HardwareStatus.MemoryModule - (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil), // 117: specs.MachineStatusSpec.HardwareStatus.BlockDevice - (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil), // 118: specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus - (*ClusterSpec_Features)(nil), // 119: specs.ClusterSpec.Features - (*ClusterMachineStatusSpec_ProvisionStatus)(nil), // 120: specs.ClusterMachineStatusSpec.ProvisionStatus - (*MachineSetSpec_MachineClass)(nil), // 121: specs.MachineSetSpec.MachineClass - (*MachineSetSpec_MachineAllocation)(nil), // 122: specs.MachineSetSpec.MachineAllocation - (*MachineSetSpec_BootstrapSpec)(nil), // 123: specs.MachineSetSpec.BootstrapSpec - (*MachineSetSpec_RollingUpdateStrategyConfig)(nil), // 124: specs.MachineSetSpec.RollingUpdateStrategyConfig - (*MachineSetSpec_UpdateStrategyConfig)(nil), // 125: specs.MachineSetSpec.UpdateStrategyConfig - (*ControlPlaneStatusSpec_Condition)(nil), // 126: specs.ControlPlaneStatusSpec.Condition - (*KubernetesStatusSpec_NodeStatus)(nil), // 127: specs.KubernetesStatusSpec.NodeStatus - (*KubernetesStatusSpec_StaticPodStatus)(nil), // 128: specs.KubernetesStatusSpec.StaticPodStatus - (*KubernetesStatusSpec_NodeStaticPods)(nil), // 129: specs.KubernetesStatusSpec.NodeStaticPods - (*MachineClassSpec_Provision)(nil), // 130: specs.MachineClassSpec.Provision - (*MachineConfigGenOptionsSpec_InstallImage)(nil), // 131: specs.MachineConfigGenOptionsSpec.InstallImage - (*KubernetesUsageSpec_Quantity)(nil), // 132: specs.KubernetesUsageSpec.Quantity - (*KubernetesUsageSpec_Pod)(nil), // 133: specs.KubernetesUsageSpec.Pod - (*ImagePullRequestSpec_NodeImageList)(nil), // 134: specs.ImagePullRequestSpec.NodeImageList - (*TalosExtensionsSpec_Info)(nil), // 135: specs.TalosExtensionsSpec.Info - (*MachineExtensionsStatusSpec_Item)(nil), // 136: specs.MachineExtensionsStatusSpec.Item - nil, // 137: specs.ClusterStatusMetricsSpec.PhasesEntry - (*ClusterDiagnosticsSpec_Node)(nil), // 138: specs.ClusterDiagnosticsSpec.Node - (*InfraMachineBMCConfigSpec_IPMI)(nil), // 139: specs.InfraMachineBMCConfigSpec.IPMI - (*InfraMachineBMCConfigSpec_API)(nil), // 140: specs.InfraMachineBMCConfigSpec.API - (*InfraProviderCombinedStatusSpec_Health)(nil), // 141: specs.InfraProviderCombinedStatusSpec.Health - (*durationpb.Duration)(nil), // 142: google.protobuf.Duration - (*timestamppb.Timestamp)(nil), // 143: google.protobuf.Timestamp - (*machine.MachineStatusEvent)(nil), // 144: machine.MachineStatusEvent + (*ImportedClusterSecretsSpec)(nil), // 55: specs.ImportedClusterSecretsSpec + (*LoadBalancerConfigSpec)(nil), // 56: specs.LoadBalancerConfigSpec + (*LoadBalancerStatusSpec)(nil), // 57: specs.LoadBalancerStatusSpec + (*KubernetesVersionSpec)(nil), // 58: specs.KubernetesVersionSpec + (*TalosVersionSpec)(nil), // 59: specs.TalosVersionSpec + (*InstallationMediaSpec)(nil), // 60: specs.InstallationMediaSpec + (*ConfigPatchSpec)(nil), // 61: specs.ConfigPatchSpec + (*MachineSetSpec)(nil), // 62: specs.MachineSetSpec + (*TalosUpgradeStatusSpec)(nil), // 63: specs.TalosUpgradeStatusSpec + (*MachineSetStatusSpec)(nil), // 64: specs.MachineSetStatusSpec + (*MachineSetNodeSpec)(nil), // 65: specs.MachineSetNodeSpec + (*MachineLabelsSpec)(nil), // 66: specs.MachineLabelsSpec + (*MachineStatusSnapshotSpec)(nil), // 67: specs.MachineStatusSnapshotSpec + (*ControlPlaneStatusSpec)(nil), // 68: specs.ControlPlaneStatusSpec + (*ClusterEndpointSpec)(nil), // 69: specs.ClusterEndpointSpec + (*KubernetesStatusSpec)(nil), // 70: specs.KubernetesStatusSpec + (*KubernetesUpgradeStatusSpec)(nil), // 71: specs.KubernetesUpgradeStatusSpec + (*KubernetesUpgradeManifestStatusSpec)(nil), // 72: specs.KubernetesUpgradeManifestStatusSpec + (*DestroyStatusSpec)(nil), // 73: specs.DestroyStatusSpec + (*OngoingTaskSpec)(nil), // 74: specs.OngoingTaskSpec + (*ClusterMachineEncryptionKeySpec)(nil), // 75: specs.ClusterMachineEncryptionKeySpec + (*ExposedServiceSpec)(nil), // 76: specs.ExposedServiceSpec + (*ClusterWorkloadProxyStatusSpec)(nil), // 77: specs.ClusterWorkloadProxyStatusSpec + (*FeaturesConfigSpec)(nil), // 78: specs.FeaturesConfigSpec + (*EtcdBackupSettings)(nil), // 79: specs.EtcdBackupSettings + (*MachineClassSpec)(nil), // 80: specs.MachineClassSpec + (*MachineConfigGenOptionsSpec)(nil), // 81: specs.MachineConfigGenOptionsSpec + (*EtcdAuditResultSpec)(nil), // 82: specs.EtcdAuditResultSpec + (*KubeconfigSpec)(nil), // 83: specs.KubeconfigSpec + (*KubernetesUsageSpec)(nil), // 84: specs.KubernetesUsageSpec + (*ImagePullRequestSpec)(nil), // 85: specs.ImagePullRequestSpec + (*ImagePullStatusSpec)(nil), // 86: specs.ImagePullStatusSpec + (*SchematicSpec)(nil), // 87: specs.SchematicSpec + (*TalosExtensionsSpec)(nil), // 88: specs.TalosExtensionsSpec + (*SchematicConfigurationSpec)(nil), // 89: specs.SchematicConfigurationSpec + (*ExtensionsConfigurationSpec)(nil), // 90: specs.ExtensionsConfigurationSpec + (*ExtensionsConfigurationStatusSpec)(nil), // 91: specs.ExtensionsConfigurationStatusSpec + (*MachineExtensionsSpec)(nil), // 92: specs.MachineExtensionsSpec + (*MachineExtensionsStatusSpec)(nil), // 93: specs.MachineExtensionsStatusSpec + (*MachineStatusMetricsSpec)(nil), // 94: specs.MachineStatusMetricsSpec + (*ClusterStatusMetricsSpec)(nil), // 95: specs.ClusterStatusMetricsSpec + (*ClusterKubernetesNodesSpec)(nil), // 96: specs.ClusterKubernetesNodesSpec + (*KubernetesNodeAuditResultSpec)(nil), // 97: specs.KubernetesNodeAuditResultSpec + (*MachineRequestSetSpec)(nil), // 98: specs.MachineRequestSetSpec + (*MachineRequestSetStatusSpec)(nil), // 99: specs.MachineRequestSetStatusSpec + (*ClusterDiagnosticsSpec)(nil), // 100: specs.ClusterDiagnosticsSpec + (*MachineRequestSetPressureSpec)(nil), // 101: specs.MachineRequestSetPressureSpec + (*ClusterMachineRequestStatusSpec)(nil), // 102: specs.ClusterMachineRequestStatusSpec + (*InfraMachineConfigSpec)(nil), // 103: specs.InfraMachineConfigSpec + (*InfraMachineBMCConfigSpec)(nil), // 104: specs.InfraMachineBMCConfigSpec + (*MaintenanceConfigStatusSpec)(nil), // 105: specs.MaintenanceConfigStatusSpec + (*NodeForceDestroyRequestSpec)(nil), // 106: specs.NodeForceDestroyRequestSpec + (*DiscoveryAffiliateDeleteTaskSpec)(nil), // 107: specs.DiscoveryAffiliateDeleteTaskSpec + (*InfraProviderCombinedStatusSpec)(nil), // 108: specs.InfraProviderCombinedStatusSpec + (*MachineConfigDiffSpec)(nil), // 109: specs.MachineConfigDiffSpec + (*MachineStatusSpec_HardwareStatus)(nil), // 110: specs.MachineStatusSpec.HardwareStatus + (*MachineStatusSpec_NetworkStatus)(nil), // 111: specs.MachineStatusSpec.NetworkStatus + (*MachineStatusSpec_PlatformMetadata)(nil), // 112: specs.MachineStatusSpec.PlatformMetadata + (*MachineStatusSpec_Schematic)(nil), // 113: specs.MachineStatusSpec.Schematic + (*MachineStatusSpec_Diagnostic)(nil), // 114: specs.MachineStatusSpec.Diagnostic + nil, // 115: specs.MachineStatusSpec.ImageLabelsEntry + (*MachineStatusSpec_HardwareStatus_Processor)(nil), // 116: specs.MachineStatusSpec.HardwareStatus.Processor + (*MachineStatusSpec_HardwareStatus_MemoryModule)(nil), // 117: specs.MachineStatusSpec.HardwareStatus.MemoryModule + (*MachineStatusSpec_HardwareStatus_BlockDevice)(nil), // 118: specs.MachineStatusSpec.HardwareStatus.BlockDevice + (*MachineStatusSpec_NetworkStatus_NetworkLinkStatus)(nil), // 119: specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus + (*ClusterSpec_Features)(nil), // 120: specs.ClusterSpec.Features + (*ClusterMachineStatusSpec_ProvisionStatus)(nil), // 121: specs.ClusterMachineStatusSpec.ProvisionStatus + (*MachineSetSpec_MachineClass)(nil), // 122: specs.MachineSetSpec.MachineClass + (*MachineSetSpec_MachineAllocation)(nil), // 123: specs.MachineSetSpec.MachineAllocation + (*MachineSetSpec_BootstrapSpec)(nil), // 124: specs.MachineSetSpec.BootstrapSpec + (*MachineSetSpec_RollingUpdateStrategyConfig)(nil), // 125: specs.MachineSetSpec.RollingUpdateStrategyConfig + (*MachineSetSpec_UpdateStrategyConfig)(nil), // 126: specs.MachineSetSpec.UpdateStrategyConfig + (*ControlPlaneStatusSpec_Condition)(nil), // 127: specs.ControlPlaneStatusSpec.Condition + (*KubernetesStatusSpec_NodeStatus)(nil), // 128: specs.KubernetesStatusSpec.NodeStatus + (*KubernetesStatusSpec_StaticPodStatus)(nil), // 129: specs.KubernetesStatusSpec.StaticPodStatus + (*KubernetesStatusSpec_NodeStaticPods)(nil), // 130: specs.KubernetesStatusSpec.NodeStaticPods + (*MachineClassSpec_Provision)(nil), // 131: specs.MachineClassSpec.Provision + (*MachineConfigGenOptionsSpec_InstallImage)(nil), // 132: specs.MachineConfigGenOptionsSpec.InstallImage + (*KubernetesUsageSpec_Quantity)(nil), // 133: specs.KubernetesUsageSpec.Quantity + (*KubernetesUsageSpec_Pod)(nil), // 134: specs.KubernetesUsageSpec.Pod + (*ImagePullRequestSpec_NodeImageList)(nil), // 135: specs.ImagePullRequestSpec.NodeImageList + (*TalosExtensionsSpec_Info)(nil), // 136: specs.TalosExtensionsSpec.Info + (*MachineExtensionsStatusSpec_Item)(nil), // 137: specs.MachineExtensionsStatusSpec.Item + nil, // 138: specs.ClusterStatusMetricsSpec.PhasesEntry + (*ClusterDiagnosticsSpec_Node)(nil), // 139: specs.ClusterDiagnosticsSpec.Node + (*InfraMachineBMCConfigSpec_IPMI)(nil), // 140: specs.InfraMachineBMCConfigSpec.IPMI + (*InfraMachineBMCConfigSpec_API)(nil), // 141: specs.InfraMachineBMCConfigSpec.API + (*InfraProviderCombinedStatusSpec_Health)(nil), // 142: specs.InfraProviderCombinedStatusSpec.Health + (*durationpb.Duration)(nil), // 143: google.protobuf.Duration + (*timestamppb.Timestamp)(nil), // 144: google.protobuf.Timestamp + (*machine.MachineStatusEvent)(nil), // 145: machine.MachineStatusEvent } var file_omni_specs_omni_proto_depIdxs = []int32{ - 109, // 0: specs.MachineStatusSpec.hardware:type_name -> specs.MachineStatusSpec.HardwareStatus - 110, // 1: specs.MachineStatusSpec.network:type_name -> specs.MachineStatusSpec.NetworkStatus + 110, // 0: specs.MachineStatusSpec.hardware:type_name -> specs.MachineStatusSpec.HardwareStatus + 111, // 1: specs.MachineStatusSpec.network:type_name -> specs.MachineStatusSpec.NetworkStatus 4, // 2: specs.MachineStatusSpec.role:type_name -> specs.MachineStatusSpec.Role - 111, // 3: specs.MachineStatusSpec.platform_metadata:type_name -> specs.MachineStatusSpec.PlatformMetadata - 114, // 4: specs.MachineStatusSpec.image_labels:type_name -> specs.MachineStatusSpec.ImageLabelsEntry - 112, // 5: specs.MachineStatusSpec.schematic:type_name -> specs.MachineStatusSpec.Schematic - 113, // 6: specs.MachineStatusSpec.diagnostics:type_name -> specs.MachineStatusSpec.Diagnostic + 112, // 3: specs.MachineStatusSpec.platform_metadata:type_name -> specs.MachineStatusSpec.PlatformMetadata + 115, // 4: specs.MachineStatusSpec.image_labels:type_name -> specs.MachineStatusSpec.ImageLabelsEntry + 113, // 5: specs.MachineStatusSpec.schematic:type_name -> specs.MachineStatusSpec.Schematic + 114, // 6: specs.MachineStatusSpec.diagnostics:type_name -> specs.MachineStatusSpec.Diagnostic 5, // 7: specs.MachineStatusSpec.power_state:type_name -> specs.MachineStatusSpec.PowerState 23, // 8: specs.MachineStatusSpec.security_state:type_name -> specs.SecurityState - 119, // 9: specs.ClusterSpec.features:type_name -> specs.ClusterSpec.Features + 120, // 9: specs.ClusterSpec.features:type_name -> specs.ClusterSpec.Features 30, // 10: specs.ClusterSpec.backup_configuration:type_name -> specs.EtcdBackupConf - 142, // 11: specs.EtcdBackupConf.interval:type_name -> google.protobuf.Duration - 143, // 12: specs.EtcdBackupSpec.created_at:type_name -> google.protobuf.Timestamp - 142, // 13: specs.BackupDataSpec.interval:type_name -> google.protobuf.Duration + 143, // 11: specs.EtcdBackupConf.interval:type_name -> google.protobuf.Duration + 144, // 12: specs.EtcdBackupSpec.created_at:type_name -> google.protobuf.Timestamp + 143, // 13: specs.BackupDataSpec.interval:type_name -> google.protobuf.Duration 6, // 14: specs.EtcdBackupStatusSpec.status:type_name -> specs.EtcdBackupStatusSpec.Status - 143, // 15: specs.EtcdBackupStatusSpec.last_backup_time:type_name -> google.protobuf.Timestamp - 143, // 16: specs.EtcdBackupStatusSpec.last_backup_attempt:type_name -> google.protobuf.Timestamp - 143, // 17: specs.EtcdManualBackupSpec.backup_at:type_name -> google.protobuf.Timestamp + 144, // 15: specs.EtcdBackupStatusSpec.last_backup_time:type_name -> google.protobuf.Timestamp + 144, // 16: specs.EtcdBackupStatusSpec.last_backup_attempt:type_name -> google.protobuf.Timestamp + 144, // 17: specs.EtcdManualBackupSpec.backup_at:type_name -> google.protobuf.Timestamp 36, // 18: specs.EtcdBackupOverallStatusSpec.last_backup_status:type_name -> specs.EtcdBackupStatusSpec 7, // 19: specs.ClusterMachineStatusSpec.stage:type_name -> specs.ClusterMachineStatusSpec.Stage 0, // 20: specs.ClusterMachineStatusSpec.config_apply_status:type_name -> specs.ConfigApplyStatus - 120, // 21: specs.ClusterMachineStatusSpec.provision_status:type_name -> specs.ClusterMachineStatusSpec.ProvisionStatus + 121, // 21: specs.ClusterMachineStatusSpec.provision_status:type_name -> specs.ClusterMachineStatusSpec.ProvisionStatus 48, // 22: specs.ClusterStatusSpec.machines:type_name -> specs.Machines 8, // 23: specs.ClusterStatusSpec.phase:type_name -> specs.ClusterStatusSpec.Phase 9, // 24: specs.MachineSetSpec.update_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy - 122, // 25: specs.MachineSetSpec.machine_class:type_name -> specs.MachineSetSpec.MachineAllocation - 123, // 26: specs.MachineSetSpec.bootstrap_spec:type_name -> specs.MachineSetSpec.BootstrapSpec + 123, // 25: specs.MachineSetSpec.machine_class:type_name -> specs.MachineSetSpec.MachineAllocation + 124, // 26: specs.MachineSetSpec.bootstrap_spec:type_name -> specs.MachineSetSpec.BootstrapSpec 9, // 27: specs.MachineSetSpec.delete_strategy:type_name -> specs.MachineSetSpec.UpdateStrategy - 125, // 28: specs.MachineSetSpec.update_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig - 125, // 29: specs.MachineSetSpec.delete_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig - 122, // 30: specs.MachineSetSpec.machine_allocation:type_name -> specs.MachineSetSpec.MachineAllocation + 126, // 28: specs.MachineSetSpec.update_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig + 126, // 29: specs.MachineSetSpec.delete_strategy_config:type_name -> specs.MachineSetSpec.UpdateStrategyConfig + 123, // 30: specs.MachineSetSpec.machine_allocation:type_name -> specs.MachineSetSpec.MachineAllocation 12, // 31: specs.TalosUpgradeStatusSpec.phase:type_name -> specs.TalosUpgradeStatusSpec.Phase 1, // 32: specs.MachineSetStatusSpec.phase:type_name -> specs.MachineSetPhase 48, // 33: specs.MachineSetStatusSpec.machines:type_name -> specs.Machines - 122, // 34: specs.MachineSetStatusSpec.machine_allocation:type_name -> specs.MachineSetSpec.MachineAllocation - 144, // 35: specs.MachineStatusSnapshotSpec.machine_status:type_name -> machine.MachineStatusEvent + 123, // 34: specs.MachineSetStatusSpec.machine_allocation:type_name -> specs.MachineSetSpec.MachineAllocation + 145, // 35: specs.MachineStatusSnapshotSpec.machine_status:type_name -> machine.MachineStatusEvent 13, // 36: specs.MachineStatusSnapshotSpec.power_stage:type_name -> specs.MachineStatusSnapshotSpec.PowerStage - 126, // 37: specs.ControlPlaneStatusSpec.conditions:type_name -> specs.ControlPlaneStatusSpec.Condition - 127, // 38: specs.KubernetesStatusSpec.nodes:type_name -> specs.KubernetesStatusSpec.NodeStatus - 129, // 39: specs.KubernetesStatusSpec.static_pods:type_name -> specs.KubernetesStatusSpec.NodeStaticPods + 127, // 37: specs.ControlPlaneStatusSpec.conditions:type_name -> specs.ControlPlaneStatusSpec.Condition + 128, // 38: specs.KubernetesStatusSpec.nodes:type_name -> specs.KubernetesStatusSpec.NodeStatus + 130, // 39: specs.KubernetesStatusSpec.static_pods:type_name -> specs.KubernetesStatusSpec.NodeStaticPods 16, // 40: specs.KubernetesUpgradeStatusSpec.phase:type_name -> specs.KubernetesUpgradeStatusSpec.Phase - 62, // 41: specs.OngoingTaskSpec.talos_upgrade:type_name -> specs.TalosUpgradeStatusSpec - 70, // 42: specs.OngoingTaskSpec.kubernetes_upgrade:type_name -> specs.KubernetesUpgradeStatusSpec - 72, // 43: specs.OngoingTaskSpec.destroy:type_name -> specs.DestroyStatusSpec - 78, // 44: specs.FeaturesConfigSpec.etcd_backup_settings:type_name -> specs.EtcdBackupSettings - 142, // 45: specs.EtcdBackupSettings.tick_interval:type_name -> google.protobuf.Duration - 142, // 46: specs.EtcdBackupSettings.min_interval:type_name -> google.protobuf.Duration - 142, // 47: specs.EtcdBackupSettings.max_interval:type_name -> google.protobuf.Duration - 130, // 48: specs.MachineClassSpec.auto_provision:type_name -> specs.MachineClassSpec.Provision - 131, // 49: specs.MachineConfigGenOptionsSpec.install_image:type_name -> specs.MachineConfigGenOptionsSpec.InstallImage - 132, // 50: specs.KubernetesUsageSpec.cpu:type_name -> specs.KubernetesUsageSpec.Quantity - 132, // 51: specs.KubernetesUsageSpec.mem:type_name -> specs.KubernetesUsageSpec.Quantity - 132, // 52: specs.KubernetesUsageSpec.storage:type_name -> specs.KubernetesUsageSpec.Quantity - 133, // 53: specs.KubernetesUsageSpec.pods:type_name -> specs.KubernetesUsageSpec.Pod - 134, // 54: specs.ImagePullRequestSpec.node_image_list:type_name -> specs.ImagePullRequestSpec.NodeImageList - 135, // 55: specs.TalosExtensionsSpec.items:type_name -> specs.TalosExtensionsSpec.Info + 63, // 41: specs.OngoingTaskSpec.talos_upgrade:type_name -> specs.TalosUpgradeStatusSpec + 71, // 42: specs.OngoingTaskSpec.kubernetes_upgrade:type_name -> specs.KubernetesUpgradeStatusSpec + 73, // 43: specs.OngoingTaskSpec.destroy:type_name -> specs.DestroyStatusSpec + 79, // 44: specs.FeaturesConfigSpec.etcd_backup_settings:type_name -> specs.EtcdBackupSettings + 143, // 45: specs.EtcdBackupSettings.tick_interval:type_name -> google.protobuf.Duration + 143, // 46: specs.EtcdBackupSettings.min_interval:type_name -> google.protobuf.Duration + 143, // 47: specs.EtcdBackupSettings.max_interval:type_name -> google.protobuf.Duration + 131, // 48: specs.MachineClassSpec.auto_provision:type_name -> specs.MachineClassSpec.Provision + 132, // 49: specs.MachineConfigGenOptionsSpec.install_image:type_name -> specs.MachineConfigGenOptionsSpec.InstallImage + 133, // 50: specs.KubernetesUsageSpec.cpu:type_name -> specs.KubernetesUsageSpec.Quantity + 133, // 51: specs.KubernetesUsageSpec.mem:type_name -> specs.KubernetesUsageSpec.Quantity + 133, // 52: specs.KubernetesUsageSpec.storage:type_name -> specs.KubernetesUsageSpec.Quantity + 134, // 53: specs.KubernetesUsageSpec.pods:type_name -> specs.KubernetesUsageSpec.Pod + 135, // 54: specs.ImagePullRequestSpec.node_image_list:type_name -> specs.ImagePullRequestSpec.NodeImageList + 136, // 55: specs.TalosExtensionsSpec.items:type_name -> specs.TalosExtensionsSpec.Info 17, // 56: specs.ExtensionsConfigurationStatusSpec.phase:type_name -> specs.ExtensionsConfigurationStatusSpec.Phase - 136, // 57: specs.MachineExtensionsStatusSpec.extensions:type_name -> specs.MachineExtensionsStatusSpec.Item - 137, // 58: specs.ClusterStatusMetricsSpec.phases:type_name -> specs.ClusterStatusMetricsSpec.PhasesEntry + 137, // 57: specs.MachineExtensionsStatusSpec.extensions:type_name -> specs.MachineExtensionsStatusSpec.Item + 138, // 58: specs.ClusterStatusMetricsSpec.phases:type_name -> specs.ClusterStatusMetricsSpec.PhasesEntry 25, // 59: specs.MachineRequestSetSpec.meta_values:type_name -> specs.MetaValue 3, // 60: specs.MachineRequestSetSpec.grpc_tunnel:type_name -> specs.GrpcTunnelMode - 138, // 61: specs.ClusterDiagnosticsSpec.nodes:type_name -> specs.ClusterDiagnosticsSpec.Node + 139, // 61: specs.ClusterDiagnosticsSpec.nodes:type_name -> specs.ClusterDiagnosticsSpec.Node 19, // 62: specs.ClusterMachineRequestStatusSpec.stage:type_name -> specs.ClusterMachineRequestStatusSpec.Stage 21, // 63: specs.InfraMachineConfigSpec.power_state:type_name -> specs.InfraMachineConfigSpec.MachinePowerState 20, // 64: specs.InfraMachineConfigSpec.acceptance_status:type_name -> specs.InfraMachineConfigSpec.AcceptanceStatus - 139, // 65: specs.InfraMachineBMCConfigSpec.ipmi:type_name -> specs.InfraMachineBMCConfigSpec.IPMI - 140, // 66: specs.InfraMachineBMCConfigSpec.api:type_name -> specs.InfraMachineBMCConfigSpec.API - 141, // 67: specs.InfraProviderCombinedStatusSpec.health:type_name -> specs.InfraProviderCombinedStatusSpec.Health - 115, // 68: specs.MachineStatusSpec.HardwareStatus.processors:type_name -> specs.MachineStatusSpec.HardwareStatus.Processor - 116, // 69: specs.MachineStatusSpec.HardwareStatus.memory_modules:type_name -> specs.MachineStatusSpec.HardwareStatus.MemoryModule - 117, // 70: specs.MachineStatusSpec.HardwareStatus.blockdevices:type_name -> specs.MachineStatusSpec.HardwareStatus.BlockDevice - 118, // 71: specs.MachineStatusSpec.NetworkStatus.network_links:type_name -> specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus + 140, // 65: specs.InfraMachineBMCConfigSpec.ipmi:type_name -> specs.InfraMachineBMCConfigSpec.IPMI + 141, // 66: specs.InfraMachineBMCConfigSpec.api:type_name -> specs.InfraMachineBMCConfigSpec.API + 142, // 67: specs.InfraProviderCombinedStatusSpec.health:type_name -> specs.InfraProviderCombinedStatusSpec.Health + 116, // 68: specs.MachineStatusSpec.HardwareStatus.processors:type_name -> specs.MachineStatusSpec.HardwareStatus.Processor + 117, // 69: specs.MachineStatusSpec.HardwareStatus.memory_modules:type_name -> specs.MachineStatusSpec.HardwareStatus.MemoryModule + 118, // 70: specs.MachineStatusSpec.HardwareStatus.blockdevices:type_name -> specs.MachineStatusSpec.HardwareStatus.BlockDevice + 119, // 71: specs.MachineStatusSpec.NetworkStatus.network_links:type_name -> specs.MachineStatusSpec.NetworkStatus.NetworkLinkStatus 24, // 72: specs.MachineStatusSpec.Schematic.overlay:type_name -> specs.Overlay 25, // 73: specs.MachineStatusSpec.Schematic.meta_values:type_name -> specs.MetaValue 10, // 74: specs.MachineSetSpec.MachineClass.allocation_type:type_name -> specs.MachineSetSpec.MachineClass.Type 11, // 75: specs.MachineSetSpec.MachineAllocation.allocation_type:type_name -> specs.MachineSetSpec.MachineAllocation.Type - 124, // 76: specs.MachineSetSpec.UpdateStrategyConfig.rolling:type_name -> specs.MachineSetSpec.RollingUpdateStrategyConfig + 125, // 76: specs.MachineSetSpec.UpdateStrategyConfig.rolling:type_name -> specs.MachineSetSpec.RollingUpdateStrategyConfig 2, // 77: specs.ControlPlaneStatusSpec.Condition.type:type_name -> specs.ConditionType 14, // 78: specs.ControlPlaneStatusSpec.Condition.status:type_name -> specs.ControlPlaneStatusSpec.Condition.Status 15, // 79: specs.ControlPlaneStatusSpec.Condition.severity:type_name -> specs.ControlPlaneStatusSpec.Condition.Severity - 128, // 80: specs.KubernetesStatusSpec.NodeStaticPods.static_pods:type_name -> specs.KubernetesStatusSpec.StaticPodStatus + 129, // 80: specs.KubernetesStatusSpec.NodeStaticPods.static_pods:type_name -> specs.KubernetesStatusSpec.StaticPodStatus 25, // 81: specs.MachineClassSpec.Provision.meta_values:type_name -> specs.MetaValue 3, // 82: specs.MachineClassSpec.Provision.grpc_tunnel:type_name -> specs.GrpcTunnelMode 23, // 83: specs.MachineConfigGenOptionsSpec.InstallImage.security_state:type_name -> specs.SecurityState @@ -9734,7 +9793,7 @@ func file_omni_specs_omni_proto_init() { if File_omni_specs_omni_proto != nil { return } - file_omni_specs_omni_proto_msgTypes[51].OneofWrappers = []any{ + file_omni_specs_omni_proto_msgTypes[52].OneofWrappers = []any{ (*OngoingTaskSpec_TalosUpgrade)(nil), (*OngoingTaskSpec_KubernetesUpgrade)(nil), (*OngoingTaskSpec_Destroy)(nil), @@ -9745,7 +9804,7 @@ func file_omni_specs_omni_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_omni_specs_omni_proto_rawDesc), len(file_omni_specs_omni_proto_rawDesc)), NumEnums: 22, - NumMessages: 120, + NumMessages: 121, NumExtensions: 0, NumServices: 0, }, diff --git a/client/api/omni/specs/omni.proto b/client/api/omni/specs/omni.proto index edf0566c..2521fd36 100644 --- a/client/api/omni/specs/omni.proto +++ b/client/api/omni/specs/omni.proto @@ -613,6 +613,14 @@ message ClusterBootstrapStatusSpec { message ClusterSecretsSpec { // Bytes holding serialized cluster secrets. bytes data = 1; + // imported holds origin of the cluster secrets. + bool imported = 2; +} + +// ImportedClusterSecretsSpec describes imported cluster secrets. +message ImportedClusterSecretsSpec { + // data holds imported cluster secrets. + string data = 1; } // LoadBalancerConfigSpec describes the configuration of a load balancer. diff --git a/client/api/omni/specs/omni_vtproto.pb.go b/client/api/omni/specs/omni_vtproto.pb.go index a56bf56a..d663d5fb 100644 --- a/client/api/omni/specs/omni_vtproto.pb.go +++ b/client/api/omni/specs/omni_vtproto.pb.go @@ -987,6 +987,7 @@ func (m *ClusterSecretsSpec) CloneVT() *ClusterSecretsSpec { return (*ClusterSecretsSpec)(nil) } r := new(ClusterSecretsSpec) + r.Imported = m.Imported if rhs := m.Data; rhs != nil { tmpBytes := make([]byte, len(rhs)) copy(tmpBytes, rhs) @@ -1003,6 +1004,23 @@ func (m *ClusterSecretsSpec) CloneMessageVT() proto.Message { return m.CloneVT() } +func (m *ImportedClusterSecretsSpec) CloneVT() *ImportedClusterSecretsSpec { + if m == nil { + return (*ImportedClusterSecretsSpec)(nil) + } + r := new(ImportedClusterSecretsSpec) + r.Data = m.Data + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *ImportedClusterSecretsSpec) CloneMessageVT() proto.Message { + return m.CloneVT() +} + func (m *LoadBalancerConfigSpec) CloneVT() *LoadBalancerConfigSpec { if m == nil { return (*LoadBalancerConfigSpec)(nil) @@ -3912,6 +3930,9 @@ func (this *ClusterSecretsSpec) EqualVT(that *ClusterSecretsSpec) bool { if string(this.Data) != string(that.Data) { return false } + if this.Imported != that.Imported { + return false + } return string(this.unknownFields) == string(that.unknownFields) } @@ -3922,6 +3943,25 @@ func (this *ClusterSecretsSpec) EqualMessageVT(thatMsg proto.Message) bool { } return this.EqualVT(that) } +func (this *ImportedClusterSecretsSpec) EqualVT(that *ImportedClusterSecretsSpec) bool { + if this == that { + return true + } else if this == nil || that == nil { + return false + } + if this.Data != that.Data { + return false + } + return string(this.unknownFields) == string(that.unknownFields) +} + +func (this *ImportedClusterSecretsSpec) EqualMessageVT(thatMsg proto.Message) bool { + that, ok := thatMsg.(*ImportedClusterSecretsSpec) + if !ok { + return false + } + return this.EqualVT(that) +} func (this *LoadBalancerConfigSpec) EqualVT(that *LoadBalancerConfigSpec) bool { if this == that { return true @@ -8817,6 +8857,56 @@ func (m *ClusterSecretsSpec) MarshalToVT(dAtA []byte) (int, error) { } func (m *ClusterSecretsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Imported { + i-- + if m.Imported { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.Data) > 0 { + i -= len(m.Data) + copy(dAtA[i:], m.Data) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Data))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ImportedClusterSecretsSpec) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ImportedClusterSecretsSpec) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *ImportedClusterSecretsSpec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { if m == nil { return 0, nil } @@ -13978,6 +14068,23 @@ func (m *ClusterBootstrapStatusSpec) SizeVT() (n int) { } func (m *ClusterSecretsSpec) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Data) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + if m.Imported { + n += 2 + } + n += len(m.unknownFields) + return n +} + +func (m *ImportedClusterSecretsSpec) SizeVT() (n int) { if m == nil { return 0 } @@ -22832,6 +22939,109 @@ func (m *ClusterSecretsSpec) UnmarshalVT(dAtA []byte) error { m.Data = []byte{} } iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Imported", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Imported = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ImportedClusterSecretsSpec) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ImportedClusterSecretsSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ImportedClusterSecretsSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Data = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) diff --git a/client/pkg/omni/resources/common/common.go b/client/pkg/omni/resources/common/common.go index b8afed34..52496397 100644 --- a/client/pkg/omni/resources/common/common.go +++ b/client/pkg/omni/resources/common/common.go @@ -32,6 +32,7 @@ var UserManagedResourceTypes = []resource.Type{ omni.EtcdBackupS3ConfType, omni.ExtensionsConfigurationType, omni.MachineRequestSetType, + omni.ImportedClusterSecretsType, omni.InfraMachineBMCConfigType, omni.InfraMachineConfigType, omni.NodeForceDestroyRequestType, diff --git a/client/pkg/omni/resources/omni/imported_secrets.go b/client/pkg/omni/resources/omni/imported_secrets.go new file mode 100644 index 00000000..a49dcc71 --- /dev/null +++ b/client/pkg/omni/resources/omni/imported_secrets.go @@ -0,0 +1,65 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/. + +package omni + +import ( + "time" + + "github.com/cosi-project/runtime/pkg/resource" + "github.com/cosi-project/runtime/pkg/resource/meta" + "github.com/cosi-project/runtime/pkg/resource/protobuf" + "github.com/cosi-project/runtime/pkg/resource/typed" + "github.com/siderolabs/talos/pkg/machinery/config/generate/secrets" + "gopkg.in/yaml.v3" + + "github.com/siderolabs/omni/client/api/omni/specs" + "github.com/siderolabs/omni/client/pkg/omni/resources" +) + +// NewImportedClusterSecrets creates new ImportedClusterSecrets state. +func NewImportedClusterSecrets(ns string, id resource.ID) *ImportedClusterSecrets { + return typed.NewResource[ImportedClusterSecretsSpec, ImportedClusterSecretsExtension]( + resource.NewMetadata(ns, ImportedClusterSecretsType, id, resource.VersionUndefined), + protobuf.NewResourceSpec(&specs.ImportedClusterSecretsSpec{}), + ) +} + +// ImportedClusterSecretsType is the type of ImportedClusterSecrets resource. +// +// tsgen:ImportedClusterSecretsType +const ImportedClusterSecretsType = resource.Type("ImportedClusterSecrets.omni.sidero.dev") + +// ImportedClusterSecrets resource describes imported cluster secrets. +type ImportedClusterSecrets = typed.Resource[ImportedClusterSecretsSpec, ImportedClusterSecretsExtension] + +// ImportedClusterSecretsSpec wraps specs.ImportedClusterSecretsSpec. +type ImportedClusterSecretsSpec = protobuf.ResourceSpec[specs.ImportedClusterSecretsSpec, *specs.ImportedClusterSecretsSpec] + +// ImportedClusterSecretsExtension providers auxiliary methods for ImportedClusterSecrets resource. +type ImportedClusterSecretsExtension struct{} + +// ResourceDefinition implements [typed.Extension] interface. +func (ImportedClusterSecretsExtension) ResourceDefinition() meta.ResourceDefinitionSpec { + return meta.ResourceDefinitionSpec{ + Type: ImportedClusterSecretsType, + Aliases: []resource.Type{}, + DefaultNamespace: resources.DefaultNamespace, + PrintColumns: []meta.PrintColumn{}, + } +} + +// FromImportedSecretsToSecretsBundle converts the resource into generate.SecretsBundle resource. +func FromImportedSecretsToSecretsBundle(ics *ImportedClusterSecrets) (*secrets.Bundle, error) { + secretBundle := &secrets.Bundle{} + + err := yaml.Unmarshal([]byte(ics.TypedSpec().Value.Data), secretBundle) + if err != nil { + return nil, err + } + + secretBundle.Clock = secrets.NewFixedClock(time.Now()) + + return secretBundle, err +} diff --git a/client/pkg/omni/resources/omni/labels.go b/client/pkg/omni/resources/omni/labels.go index f9b77649..83e43a11 100644 --- a/client/pkg/omni/resources/omni/labels.go +++ b/client/pkg/omni/resources/omni/labels.go @@ -101,6 +101,10 @@ const ( // InfraProviderLabelPrefixFormat is the prefix of all labels which are managed by the infra providers. InfraProviderLabelPrefixFormat = InfraProviderLabelPrefix + "/%s/" + + // LabelClusterTainted is added to the ClusterStatus and is used to relay if the cluster secrets are sourced from ImportedClusterSecrets. + // tsgen:LabelClusterTainted + LabelClusterTainted = SystemLabelPrefix + "tainted" ) const ( diff --git a/client/pkg/omni/resources/omni/omni.go b/client/pkg/omni/resources/omni/omni.go index c4f71eb9..ed4c367d 100644 --- a/client/pkg/omni/resources/omni/omni.go +++ b/client/pkg/omni/resources/omni/omni.go @@ -47,6 +47,7 @@ func init() { registry.MustRegisterResource(FeaturesConfigType, &FeaturesConfig{}) registry.MustRegisterResource(ImagePullRequestType, &ImagePullRequest{}) registry.MustRegisterResource(ImagePullStatusType, &ImagePullStatus{}) + registry.MustRegisterResource(ImportedClusterSecretsType, &ImportedClusterSecrets{}) registry.MustRegisterResource(InfraMachineBMCConfigType, &InfraMachineBMCConfig{}) registry.MustRegisterResource(InfraMachineConfigType, &InfraMachineConfig{}) registry.MustRegisterResource(InfraProviderCombinedStatusType, &InfraProviderCombinedStatus{}) diff --git a/cmd/omni/cmd/cmd.go b/cmd/omni/cmd/cmd.go index bba6a5e8..07804d8c 100644 --- a/cmd/omni/cmd/cmd.go +++ b/cmd/omni/cmd/cmd.go @@ -663,6 +663,13 @@ func defineFeatureFlags() { cmdConfig.Features.DisableControllerRuntimeCache, "disable watch-based cache for controller-runtime (affects performance)", ) + + rootCmd.Flags().BoolVar( + &cmdConfig.Features.EnableClusterImport, + "enable-cluster-import", + cmdConfig.Features.EnableClusterImport, + "enable cluster import feature.", + ) } func defineDebugFlags() { diff --git a/frontend/src/api/omni/specs/omni.pb.ts b/frontend/src/api/omni/specs/omni.pb.ts index 8c59ce34..047140b8 100644 --- a/frontend/src/api/omni/specs/omni.pb.ts +++ b/frontend/src/api/omni/specs/omni.pb.ts @@ -472,6 +472,11 @@ export type ClusterBootstrapStatusSpec = { export type ClusterSecretsSpec = { data?: Uint8Array + imported?: boolean +} + +export type ImportedClusterSecretsSpec = { + data?: string } export type LoadBalancerConfigSpec = { diff --git a/frontend/src/api/resources.ts b/frontend/src/api/resources.ts index cbf89660..a74ae05a 100644 --- a/frontend/src/api/resources.ts +++ b/frontend/src/api/resources.ts @@ -114,6 +114,7 @@ export const FeaturesConfigID = "features-config"; export const FeaturesConfigType = "FeaturesConfigs.omni.sidero.dev"; export const ImagePullRequestType = "ImagePullRequests.omni.sidero.dev"; export const ImagePullStatusType = "ImagePullStatuses.omni.sidero.dev"; +export const ImportedClusterSecretsType = "ImportedClusterSecrets.omni.sidero.dev"; export const InfraMachineBMCConfigType = "InfraMachineBMCConfigs.omni.sidero.dev"; export const InfraMachineConfigType = "InfraMachineConfigs.omni.sidero.dev"; export const InfraProviderCombinedStatusType = "InfraProviderCombinedStatuses.omni.sidero.dev"; @@ -142,6 +143,7 @@ export const LabelNoManualAllocation = "omni.sidero.dev/no-manual-allocation"; export const LabelIsManagedByStaticInfraProvider = "omni.sidero.dev/is-managed-by-static-infra-provider"; export const LabelMachinePendingAccept = "omni.sidero.dev/accept-pending"; export const InfraProviderLabelPrefix = "omni.sidero.dev/infra-provider"; +export const LabelClusterTainted = "omni.sidero.dev/tainted"; export const MachineStatusLabelConnected = "omni.sidero.dev/connected"; export const MachineStatusLabelReadyToUse = "omni.sidero.dev/ready-to-use"; export const MachineStatusLabelDisconnected = "omni.sidero.dev/disconnected"; diff --git a/go.mod b/go.mod index dcae46b5..c1afbc19 100644 --- a/go.mod +++ b/go.mod @@ -61,7 +61,7 @@ require ( github.com/prometheus/client_golang v1.22.0 github.com/prometheus/common v0.63.0 github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 - github.com/siderolabs/crypto v0.6.0 + github.com/siderolabs/crypto v0.6.3 github.com/siderolabs/discovery-api v0.1.6 github.com/siderolabs/discovery-client v0.1.11 github.com/siderolabs/discovery-service v1.0.10 @@ -82,7 +82,7 @@ require ( github.com/siderolabs/omni/client v0.49.0 github.com/siderolabs/proto-codec v0.1.2 github.com/siderolabs/siderolink v0.3.15 - github.com/siderolabs/talos/pkg/machinery v1.10.5 + github.com/siderolabs/talos/pkg/machinery v1.11.0-alpha.3.0.20250714094650-da5a4449f1a9 github.com/siderolabs/tcpproxy v0.1.0 // indirect github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 @@ -105,7 +105,7 @@ require ( golang.org/x/tools v0.33.0 golang.zx2c4.com/wireguard v0.0.0-20250505131008-436f7fdc1670 golang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10 - google.golang.org/grpc v1.72.0 + google.golang.org/grpc v1.73.0 google.golang.org/protobuf v1.36.6 gopkg.in/yaml.v3 v3.0.3 k8s.io/api v0.34.0-alpha.0 @@ -189,7 +189,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/josharian/native v1.1.0 // indirect - github.com/jsimonetti/rtnetlink/v2 v2.0.3 // indirect + github.com/jsimonetti/rtnetlink/v2 v2.0.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/jxskiss/base62 v1.1.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect @@ -260,8 +260,8 @@ require ( golang.org/x/term v0.32.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250512202823-5a2f75b736a9 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/go.sum b/go.sum index 1c633625..6470b9e8 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cevatbarisyilmaz/ara v0.0.4 h1:SGH10hXpBJhhTlObuZzTuFn1rrdmjQImITXnZVPSodc= github.com/cevatbarisyilmaz/ara v0.0.4/go.mod h1:BfFOxnUd6Mj6xmcvRxHN3Sr21Z1T3U2MYkYOmoQe4Ts= -github.com/cilium/ebpf v0.17.3 h1:FnP4r16PWYSE4ux6zN+//jMcW4nMVRvuTLVTvCjyyjg= -github.com/cilium/ebpf v0.17.3/go.mod h1:G5EDHij8yiLzaqn0WjyfJHvRa+3aDlReIaLVRMvOyJk= +github.com/cilium/ebpf v0.19.0 h1:Ro/rE64RmFBeA9FGjcTc+KmCeY6jXmryu6FfnzPRIao= +github.com/cilium/ebpf v0.19.0/go.mod h1:fLCgMo3l8tZmAdM3B2XqdFzXBpwkcSTroaVqN08OWVY= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= @@ -290,8 +290,8 @@ github.com/josharian/native v1.1.0 h1:uuaP0hAbW7Y4l0ZRQ6C9zfb7Mg1mbFKry/xzDAfmtL github.com/josharian/native v1.1.0/go.mod h1:7X/raswPFr05uY3HiLlYeyQntB6OO7E/d2Cu7qoaN2w= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/jsimonetti/rtnetlink/v2 v2.0.3 h1:Jcp7GTnTPepoUAJ9+LhTa7ZiebvNS56T1GtlEUaPNFE= -github.com/jsimonetti/rtnetlink/v2 v2.0.3/go.mod h1:atIkksp/9fqtf6rpAw45JnttnP2gtuH9X88WPfWfS9A= +github.com/jsimonetti/rtnetlink/v2 v2.0.5 h1:l5S9iedrSW4thUfgiU+Hzsnk1cOR0upGD5ttt6mirHw= +github.com/jsimonetti/rtnetlink/v2 v2.0.5/go.mod h1:9yTlq3Ojr1rbmh/Y5L30/KIojpFhTRph2xKeZ+y+Pic= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= @@ -405,8 +405,8 @@ github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= -github.com/siderolabs/crypto v0.6.0 h1:s33hNOneGhlxCI3fLKj2hgopeJkeRO7UYo3KL0HNVu4= -github.com/siderolabs/crypto v0.6.0/go.mod h1:7RHC7eUKBx6RLS2lDaNXrQ83zY9iPH/aQSTxk1I4/j4= +github.com/siderolabs/crypto v0.6.3 h1:9eGHzAJQg7FvPcjVANLQKnepc0nrl5IkLJ3FxhMvsQw= +github.com/siderolabs/crypto v0.6.3/go.mod h1:LEhGuXlvwElMgh+rYjCFw6JgfOgyaC+sqsl/YwWU+EM= github.com/siderolabs/discovery-api v0.1.6 h1:/LhsF1ytqFEfWwV0UKfUgn90k9fk5+rhYMJ9yeUB2yc= github.com/siderolabs/discovery-api v0.1.6/go.mod h1:s5CnTyRMGid/vJNSJs8Jw9I4tnKHu/2SGqP2ytTaePQ= github.com/siderolabs/discovery-client v0.1.11 h1:Au+7QZ+CIB6g4C7ZCC4m5Ai5Uso1g/I3/E4bSUElzF8= @@ -451,8 +451,8 @@ github.com/siderolabs/protoenc v0.2.2 h1:vVQDrTjV+QSOiroWTca6h2Sn5XWYk7VSUPav5J0 github.com/siderolabs/protoenc v0.2.2/go.mod h1:gtkHkjSCFEceXUHUzKDpnuvXu1mab9D3pVxTnQN+z+o= github.com/siderolabs/siderolink v0.3.15 h1:WSsgKQGJY/ObIKjTcYYGEaGfRMyox+r/Ft+9lIgJqOI= github.com/siderolabs/siderolink v0.3.15/go.mod h1:iWdlsHji90zotgDg4+a2zJL2ZMNJckQ8/VwqR39ThBM= -github.com/siderolabs/talos/pkg/machinery v1.10.5 h1:R0ZSf9OrHIQ70+LEpQVK/KVCq3E6sUi/OpIjLDVH3Sk= -github.com/siderolabs/talos/pkg/machinery v1.10.5/go.mod h1:GxGnHH6gtX3J9s713+UbKvE9rLnlbYLv+Yn4rqD9Jh0= +github.com/siderolabs/talos/pkg/machinery v1.11.0-alpha.3.0.20250714094650-da5a4449f1a9 h1:Eb9Jz9UPjoImr170FzeV3wR0x9GpCNpMGTdPTfXQ62M= +github.com/siderolabs/talos/pkg/machinery v1.11.0-alpha.3.0.20250714094650-da5a4449f1a9/go.mod h1:9k/rwITuBS1fZsZ4+uzA4zyKQXK9pV7bcVz+FQIUnEw= github.com/siderolabs/tcpproxy v0.1.0 h1:IbkS9vRhjMOscc1US3M5P1RnsGKFgB6U5IzUk+4WkKA= github.com/siderolabs/tcpproxy v0.1.0/go.mod h1:onn6CPPj/w1UNqQ0U97oRPF0CqbrgEApYCw4P9IiCW8= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -543,8 +543,8 @@ go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/ go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= -go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= @@ -694,18 +694,18 @@ google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250512202823-5a2f75b736a9 h1:WvBuA5rjZx9SNIzgcU53OohgZy6lKSus++uY4xLaWKc= -google.golang.org/genproto/googleapis/api v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:W3S/3np0/dPWsWLi1h/UymYctGXaGBM2StwzD0y140U= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9 h1:IkAfh6J/yllPtpYFU0zZN1hUPYdT0ogkBT/9hMxHjvg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250512202823-5a2f75b736a9/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 h1:oWVWY3NzT7KJppx2UKhKmzPq4SRe0LdCijVRwvGeikY= +google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822/go.mod h1:h3c4v36UTKzUiuaOKQ6gr3S+0hovBtUrXzTG/i3+XEc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 h1:fc6jSaCT0vBduLYZHYrBBNY4dsWuvgyff9noRNDdBeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.73.0 h1:VIWSmpI2MegBtTuFt5/JWy2oXxtjJ/e89Z70ImfD2ok= +google.golang.org/grpc v1.73.0/go.mod h1:50sbHOUqWoCQGI8V2HQLJM0B+LMlIUjNSZmow7EVBQc= google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/hack/test/integration.sh b/hack/test/integration.sh index bbe7cde7..a58abe95 100755 --- a/hack/test/integration.sh +++ b/hack/test/integration.sh @@ -207,6 +207,7 @@ features: enableTalosPreReleaseVersions: ${ENABLE_TALOS_PRERELEASE_VERSIONS} enableConfigDataCompression: true enableBreakGlassConfigs: true + enableClusterImport: true disableControllerRuntimeCache: false" > ${OMNI_CONFIG} if [[ "${RUN_TALEMU_TESTS:-false}" == "true" ]]; then @@ -398,6 +399,7 @@ if [ "${INTEGRATION_RUN_E2E_TEST:-true}" == "true" ]; then --audit-log-dir ${TEST_OUTPUTS_DIR}/audit-log \ --config-data-compression-enabled \ --enable-talos-pre-release-versions="${ENABLE_TALOS_PRERELEASE_VERSIONS}" \ + --enable-cluster-import \ "${REGISTRY_MIRROR_FLAGS[@]}"& # Run the e2e test. diff --git a/internal/backend/runtime/omni/controllers/omni/cluster.go b/internal/backend/runtime/omni/controllers/omni/cluster.go index ea48972a..7023b309 100644 --- a/internal/backend/runtime/omni/controllers/omni/cluster.go +++ b/internal/backend/runtime/omni/controllers/omni/cluster.go @@ -17,6 +17,7 @@ import ( "github.com/siderolabs/omni/client/pkg/omni/resources/omni" "github.com/siderolabs/omni/internal/backend/runtime" "github.com/siderolabs/omni/internal/backend/runtime/kubernetes" + "github.com/siderolabs/omni/internal/backend/runtime/omni/controllers/helpers" ) // ClusterController manages Cluster resource lifecycle. @@ -94,6 +95,7 @@ func NewClusterController() *ClusterController { cleanup.HasNoOutputs[*omni.ClusterMachineConfig](func(cluster *omni.Cluster) state.ListOption { return state.WithLabelQuery(resource.LabelEqual(omni.LabelCluster, cluster.Metadata().ID())) }), + &helpers.SameIDHandler[*omni.Cluster, *omni.ImportedClusterSecrets]{}, ), }, }, diff --git a/internal/backend/runtime/omni/controllers/omni/cluster_machine_config_test.go b/internal/backend/runtime/omni/controllers/omni/cluster_machine_config_test.go index 154d7fde..40f21a2b 100644 --- a/internal/backend/runtime/omni/controllers/omni/cluster_machine_config_test.go +++ b/internal/backend/runtime/omni/controllers/omni/cluster_machine_config_test.go @@ -376,6 +376,8 @@ func (suite *ClusterMachineConfigSuite) testConfigEncodingStabilityFrom(talosVer case "1.9.1": fallthrough case "1.10.1": + fallthrough + case "1.11.1": default: suite.T().Fatalf("untested initial version: %s", initialVersion) } diff --git a/internal/backend/runtime/omni/controllers/omni/cluster_status.go b/internal/backend/runtime/omni/controllers/omni/cluster_status.go index 77bda781..6f44f36c 100644 --- a/internal/backend/runtime/omni/controllers/omni/cluster_status.go +++ b/internal/backend/runtime/omni/controllers/omni/cluster_status.go @@ -73,6 +73,11 @@ func NewClusterStatusController(embeddedDiscoveryServiceEnabled bool) *ClusterSt return err } + clusterSecrets, err := safe.ReaderGetByID[*omni.ClusterSecrets](ctx, r, cluster.Metadata().ID()) + if err != nil && !state.IsNotFoundError(err) { + return err + } + cpStatusReady := false clusterIsAvailable := false @@ -167,6 +172,12 @@ func NewClusterStatusController(embeddedDiscoveryServiceEnabled bool) *ClusterSt helpers.CopyUserLabels(clusterStatus, cluster.Metadata().Labels().Raw()) + if clusterSecrets != nil && clusterSecrets.TypedSpec().Value.Imported { + clusterStatus.Metadata().Labels().Set(omni.LabelClusterTainted, "") + } else { + clusterStatus.Metadata().Labels().Delete(omni.LabelClusterTainted) + } + return nil }, }, @@ -179,6 +190,9 @@ func NewClusterStatusController(embeddedDiscoveryServiceEnabled bool) *ClusterSt qtransform.WithExtraMappedInput( mappers.MapByClusterLabel[*omni.ControlPlaneStatus, *omni.Cluster](), ), + qtransform.WithExtraMappedInput( + qtransform.MapperSameID[*omni.ClusterSecrets, *omni.Cluster](), + ), qtransform.WithIgnoreTeardownUntil(), // keep ClusterStatus alive until every other controller is done with Cluster ) } diff --git a/internal/backend/runtime/omni/controllers/omni/data/secrets-broken.yaml b/internal/backend/runtime/omni/controllers/omni/data/secrets-broken.yaml new file mode 100644 index 00000000..b8f0f67d --- /dev/null +++ b/internal/backend/runtime/omni/controllers/omni/data/secrets-broken.yaml @@ -0,0 +1,3 @@ +cluster + id: rRxLgAjUwkp17VYlg5XSbTfKMpV4nn-i5yj-ZmSsxfM= + secret: tad0uMK9YeZBiSaN8+pMRH53ftmYl3Sdjv9Yko1f8Dc= diff --git a/internal/backend/runtime/omni/controllers/omni/data/secrets-invalid.yaml b/internal/backend/runtime/omni/controllers/omni/data/secrets-invalid.yaml new file mode 100644 index 00000000..4b8ac2be --- /dev/null +++ b/internal/backend/runtime/omni/controllers/omni/data/secrets-invalid.yaml @@ -0,0 +1,15 @@ +cluster: + id: rRxLgAjUwkp17VYlg5XSbTfKMpV4nn-i5yj-ZmSsxfM= +secrets: + bootstraptoken: 78kycc.kb6cn9nk46sqv0zb +certs: + etcd: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmakNDQVNPZ0F3SUJBZ0lRRlgra1BBRGlINnZoTEJDRkdOMlMyekFLQmdncWhrak9QUVFEQWpBUE1RMHcKQ3dZRFZRUUtFd1JsZEdOa01CNFhEVEkxTURjd09UQTVNakl3TTFvWERUTTFNRGN3TnpBNU1qSXdNMW93RHpFTgpNQXNHQTFVRUNoTUVaWFJqWkRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNKVCtib2J0VUY2CmlCMmJWbm5PVnIzWkN0dkVPK1A5Q29oQ2NlU3JDc3BxV0FHRWEwTUM0dVFpWkRKbU4raGFUK3cwTXZZMXhsR1kKSzRBTmxzOVczM3VqWVRCZk1BNEdBMVVkRHdFQi93UUVBd0lDaERBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjRApBUVlJS3dZQkJRVUhBd0l3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVOVJvRGIrWVVBUEM1Cmd1MXdxNkFuQkNvcUFmUXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBS3VJQUcrY21LcFprUVQzRDFYNk4zVEMKSmk5aVdGMWJWWm1SUmJXYm9jZTVBaUVBbCtxRTdwUDlTOHVuNS9ZZmYwZktNMkpKSG53dThOQU9kQWFFdDVMcwpRbG89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + k8s: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJpVENDQVMrZ0F3SUJBZ0lRUHVUNktmTkpiUEp1Uk5rdmZiOFQ0akFLQmdncWhrak9QUVFEQWpBVk1STXcKRVFZRFZRUUtFd3ByZFdKbGNtNWxkR1Z6TUI0WERUSTFNRGN3T1RBNU1qSXdNMW9YRFRNMU1EY3dOekE1TWpJdwpNMW93RlRFVE1CRUdBMVVFQ2hNS2EzVmlaWEp1WlhSbGN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VICkEwSUFCR0YvVEFaWTlCSUtYU3J5dlZZSE9wdEpRaUFkZzI4OEtsQ1pMMUQ3T3VVQ29ZM2xrVVB4azZzZUNGaE0KZ20vMVNnWHo1Q1htTmpTRFREcEdqdXRwNWlhallUQmZNQTRHQTFVZER3RUIvd1FFQXdJQ2hEQWRCZ05WSFNVRQpGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFCkZnUVVhYWJ1cVhNcktwOGVzcUJ3V1dUWkZ5cnk5Y0F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUs2eEpOVUkKU05xaklLZjBHRHAvVTc4aTBwaDZVRURVekVPN0xCazhzNkdjQWlBS015emtVMER3aGlQMC93ajdielN3ais4bQpPNWxURlg2bFJPU3ByN01rTWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU01OGtaYURTeVl5WGtRajZJQUdPZ1ZtMFFWZFJIZ2E1QVpyVTQ0Z2VHYk5vQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWVg5TUJsajBFZ3BkS3ZLOVZnYzZtMGxDSUIyRGJ6d3FVSmt2VVBzNjVRS2hqZVdSUS9HVApxeDRJV0V5Q2IvVktCZlBrSmVZMk5JTk1Pa2FPNjJubUpnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + k8sserviceaccount: + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBNHBhTVZNVDBVU0s0T21zdDc2MTBhbTVzTXcyK1NETEFsVkpmbnZqbHg1blNaTXQ2CmNLM1RvYy9SNWQ5WEk3S1pKcWk5Z3daZlZlRk9mN0VmdklWcG8zN3R6cUEzbXBlSWcxNUx3N3owa2loQjlJejgKa21iaXpoV0duQnNOUU0xS25kS2VSN1lvcTNCUlpVTHFoVm9MMDBLSDFqaWNVdjNUMkMra2FFMVlwZ0tUSFJucAp2Nit4K2hKcGJTN3psZ2d6RUNXK2w1d1UwMHZPSHJDNXoxZnNzZGQ2QmFwNFJwUE9SVTVGdDhnYm80UlhtSHY0CnBHQWFIS2JnKy92em5tQ25HeFdTc0dWVjNyY1BvYjMyQ0NjelozakhGeVJVUERhWXVWUkxrdW9sL0JBUDZhRUQKMHFScUhzeHcwK3RqTFpMU1I4TktNNjRjSjBHVXlBRnF2eXAzNXdFYSt2bUpxdUZhZGg1MFlvSXk1RkNoQ3RDYQoxZVdTTVZlTm1TM2Mza0xsbVIyT1dZaG9OZi9oWU5sQ3hxVlZLYVJuWFR2ZlczWTdaVXRWMHkyNVFITHYwOFRDCmFyV3owU1FXdFdsZUZ6THltVHo3dWhBaDFhaGNEWDJ0UHpleDg1eXEyQk9KdU4rejVjVHZKMVlndHRjV29tUkoKMS9FUGlsaEdHMnlEVG9HQzBWM2ZKa25hTUdicVJOcnZzb0dDa0s3dkVWb2JFY2c5cU1CTFFyVkVpaFFVMHlJQgpOTmJCU05VMWFYVEppY0hRN2MybStxOWN2OUlQYWFsUktpY3VPMVVyTVptQUdxbXdvZ3U1VkkxNHFtZVFzZVlaCjJtOHZtS2M2MittT1J5bnVLWXozL0hsUE10R3ZHaXQ5aTh6eG1uNmlmdDFUQ2JFQVF5MHA5U1cvRklNQ0F3RUEKQVFLQ0FnQWFoRDdBN3RtZW94OEhLeUxSa1MxMkJSMGhibUxOeFM2M2FzL281VHpTdW9RZUtwZldGdW1VM3FLMApNWXBia1p1TnBDS2xjam4yN1dxSDAvMGdUVWFiRFJBY1piQ01KVjZpN1FhVnpnZWJFUjRDMWZyNjBSS0t4b2NkCnZxYXk1ak5zdThpdElMcXFzWGE5RUhNc2p1aWlYUDlUaVFWMlN1RWZSQmdMNHIxVWxDbU9Oc21kbHB5UDVOYTAKb2RGOHhkSGYrbUxQRUVONXBMM201b3lnSUt5QTlYUUF0TDNsbUllRG9kRFQzSldyY2FIa3BPRm9yeHh2TFBKWQpXdGhjT1BobFdZVjBvaTlGNUl0dVJMSkZxdnkvaDZsWTRuWC9JKzZFaGNKZ1c0bDljWTNETEFZc0FQU3dUUUdKCk0xdEVhcEcwTnp6NFJsQmlJYkVkSk5sT3JOUWlHcUYxUFk2cHRsazduQ1ZPbXRiaElENVFpNU4rZ1ZxVkxlak4KbW44dnBPMWRscjYwTGsyRkIrMmZQY3R5MlVoZWU3NHFHYUFaNW1ndDVzZExSeTkzQUVVVWdkVWF4Z0pwSjZLNQpYWVFPeHFIQnUyUFg1YU1UZ0twc2M4SG1pbzFVZ1BXWFF5S3ROb0tRbHpKNEtmK29UY3pJV2hWT0NJU1BrNUVpCmI3MmhsRFhKT1puWEE3cUxETEZtNWVQb0pkOWdyRXczcUhQZnltZHNmZmsyUlJRb0RqblN0S0xYOVhXZTJmRGEKaStRU0pzdlI3cEROM0lUcklQS09rZDZHZEs0aVBVdVFhaUppMU8wcUlBVTUxOGtYdnRxOGt1VTR5cW5jUlgrZgpYcEtIUWF4RmpYVThnZHdCaTMyN1BPYlFJLzU0blQzUGZzV05sWWNpK2xXR2dqcHkrUUtDQVFFQTZvbXh4L1AwCjBoNFMxeWlXdWtNSzBubCtKYU9Odis3Z1ZhUWZ3UkNxWWFUQzF4cXQyaHNacEx2aEVob1M2TXlkbTF1MDNXM0YKRFM3RThHUDR3Y211REY0bUJCQzNKaGxFbkd3SGYxdUFXUnEzVU1Qdks1NjFxL0p1YzhtakFRditjK1lYYlQ2UgpWQnVKV212aTJ1Tm9oK2dIVGhyMk5vMHJsZFZDMWh1SFNoNEVhSFRkSElvai9ZbitWd0h1Z2Y4NVByU2IvK2tDClBQcWxPTW0rNWpHdTBibUtxcHJPTTNCcENpQ2dyLzJSUE1kTFFLL2dnOW9uTEZJVHMvM2dnL1lBNkhUMGJSN2QKUkZQYWR0R2lXYk11cVhiMjhWNXJQVjNZUnJxRitOQytXb2dPQTRUcXgzYU9YbjVLTEVaNzF2T040MnpYdi9XMQoramZEVlpJRXdYS3NTUUtDQVFFQTkxS2ZCdmFOSHF6dEo0V21iTkFYTk5idC9PU3Y0Skx0SHdUZ3hlQmdJdm5qCnRPQmE0d2lGeE1DZlNsMkpSVXZqZDhJMlowaE1BaU9xRGFIczVjY1RzL1NhMENVV3hyQ0dCUDM1L2xManFwUGMKVi9Jd0ZPVmF4bVFrcGdwMEQyWWVWdGhXcmpUWWYyY09rVXdRTmdSMzFZdlVCTnF0N2lqNlpzSW9ONXRhem9uSgpaQkIxalZOTExFTEQ4Wm9WVVE2WTJ2WVZRK244eHBYeWdtenR1aktVSmpTWllONFlRUWRsanJWZTh3R0s2RmRNCjJwMFFuTjlaKzU0VFp6SE1OWkVWOFozbUVIY0psTlBTOE9jSWVFUm41b29yZEpTWGVGeFgxcmRxV0Zvak51dzcKd2JNNWd6dHArRmpLK0EyNG1RL0ZGYkk3WFZtMXorUzg0R2ZMakxTQ2F3S0NBUUVBajNXd0dBV0NEL0F6U0FaYwp4QXYwRjdBVzJFRUZtSXd1RGxSNDArZzB2OHMvSHNJRDYzQStMRVI3dEUzY21TZG5sRHJ4RTZ4c0p0Y2Z3WWIxCkJ0d3RLUVdCcldUb0VsYk1YLzI0VEUrVTMydjNDMkQ5NzZtQnFHNSszelpNRFh6ZnBOYnVKM1ZwQVpCaVlMdXoKSkg2TFZ1NDNZYkFlUUZuemVnL2JkUW1icEZ0ZUNPTEt5UVU2WklBKzRjdWRyMGlGSkhUbkl3N012cTMxMkJtWApPa2pUalJjMzJZa2RiZHRwZExkbWNwL2djZFBabFBTL21RY2NoUUNqYXFwMDVXTFpSVmNjbDQ2VWU1SHJCRmpRClBKdmNnKzN2dU00dlBIY2xyb1d6SXZIVUxaNGhMRWZtTUNHMWpka2oxNWM1Y3M3QlVJWW9KaFBPdndIUzZvbUoKZlNaK2VRS0NBUUJKSk1BdldQOUhVVEVaL1NiSkM0bXhjTmNWY2JTcUlBbk1vSzZ4RnJpWDMzdCtaTk84VFNyeQprMTBJcXowTHAzUHdXUm1wMWZIVXVDTjB3S3pGRCtrOTBWdHZyMmhhL3AzRUlEQ3RER3FVYWdKQ2FEZmNGakNRCmQ5RjI0YVNOWVZBYnN3Ti9wZFZaYUdzZ2dYUlI1V1JqWFdVb3dsdXFFYWhzZDROWlhyS3VYb1dXK0Y4cm1yU2kKdEdRcXNiMFlLYzcvQXNRclA2b29PUFJ0cWpWc1djVUN2NCtVM0ZvajhVSVJ3SVlDTERTZW5pTDJqSGo3Uy9yYQp0VmRicjVpTFJ3dE1WN3hRcGtQSkpoUStkclZFakVhR0lkclVNWlhTWE0wRmpWMEFJRGhGNS91TVA2c0VxcStlCmFQUXVCRERSNDU0UDJwUS8rV1lSdzc0d1I4SWxMTVZkQW9JQkFDc2FWRzAxb3Jzei8vTkUwWnFzL0VXNmtEUXAKb21sbW5mRXZjOUpnM3N3bitHQVhkcXVHbllkTFpGYnpJSFdTbjNMSzlRVDgzbXd2ZXJ0Y0Y2eWxidllZMktsRwo0blBpZGF2ajI4c1kvbnRVU3RFenFqc0hZbEVST1MrcUJMcnRBQURyZmtOR3BrcWQrOGx1WmM1U3RjanBLaGRECkJYcWVVQmVhZG5BTExtdkZxeFc1QVpNd3lWeGM2NlRrVUtRUzJobVRqaWhFeDg5WHZqNXIzZG9XNHMrbTYrbjMKcEhrbjJqeXZTSFppMlVpa0dJYVN5ZXh3TG9zSUd3c3NKZmZOTlBkL3A2TFh4aG1Ja3dJVW5WcDN5c3ZpUVNvRgpCTTdrVDArNWFZQXEzbS9kYUhFUmJtbzlEWk1Wa2dza1RDbUdqa1hXeXB2WENaajkxcTgxc2dBVGlQYz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K + os: + crt: LS0tLS1CRUdJTiBFRDI1NTE5IFBSSVZBVEUgS0VZLS0tLS0KTUM0Q0FRQXdCUVlESzJWd0JDSUVJRDJhaEtPVkxmUEZlRWo2Y2RnS20vcXpVQmY5bjZUbUpmSFJmYUhiZ0JvcAotLS0tLUVORCBFRDI1NTE5IFBSSVZBVEUgS0VZLS0tLS0K + key: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJQekNCOHFBREFnRUNBaEVBeEErVWl1OWtmbjV2RVZReC96ekp2REFGQmdNclpYQXdFREVPTUF3R0ExVUUKQ2hNRmRHRnNiM013SGhjTk1qVXdOekE1TURreU1qQXpXaGNOTXpVd056QTNNRGt5TWpBeldqQVFNUTR3REFZRApWUVFLRXdWMFlXeHZjekFxTUFVR0F5dGxjQU1oQUptNzhzalJla2ZKYklhNGJzNDl4QkV1WC9qbW4rajNsdDJNCmZuMkxKa2JjbzJFd1h6QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUcKQ0NzR0FRVUZCd01DTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRlBVR1ZPS1Y3UHVMbSs2agppZ2tOdnVDYUZnbUZNQVVHQXl0bGNBTkJBQm5RV2xpNzEwdi9raFlCUStGeGZ2NEJ2dmladVNDYy94c3dXQTgwCjRsdU1GeVRwUzcvdHdnMUdLb1hoR0dqeEY2dy9CMTE2SS9YL0R2d3FYRDJTMWd3PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== diff --git a/internal/backend/runtime/omni/controllers/omni/data/secrets-valid.yaml b/internal/backend/runtime/omni/controllers/omni/data/secrets-valid.yaml new file mode 100644 index 00000000..8a266d21 --- /dev/null +++ b/internal/backend/runtime/omni/controllers/omni/data/secrets-valid.yaml @@ -0,0 +1,23 @@ +cluster: + id: rRxLgAjUwkp17VYlg5XSbTfKMpV4nn-i5yj-ZmSsxfM= + secret: tad0uMK9YeZBiSaN8+pMRH53ftmYl3Sdjv9Yko1f8Dc= +secrets: + bootstraptoken: 78kycc.kb6cn9nk46sqv0zb + secretboxencryptionsecret: QNMWU1T61NEW+AOErxYQrzdhMHWeuBQvgncYdocMnh8= +trustdinfo: + token: gxcmg1.9wa1x9n1vb27x4an +certs: + etcd: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJmakNDQVNPZ0F3SUJBZ0lRRlgra1BBRGlINnZoTEJDRkdOMlMyekFLQmdncWhrak9QUVFEQWpBUE1RMHcKQ3dZRFZRUUtFd1JsZEdOa01CNFhEVEkxTURjd09UQTVNakl3TTFvWERUTTFNRGN3TnpBNU1qSXdNMW93RHpFTgpNQXNHQTFVRUNoTUVaWFJqWkRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQkNKVCtib2J0VUY2CmlCMmJWbm5PVnIzWkN0dkVPK1A5Q29oQ2NlU3JDc3BxV0FHRWEwTUM0dVFpWkRKbU4raGFUK3cwTXZZMXhsR1kKSzRBTmxzOVczM3VqWVRCZk1BNEdBMVVkRHdFQi93UUVBd0lDaERBZEJnTlZIU1VFRmpBVUJnZ3JCZ0VGQlFjRApBUVlJS3dZQkJRVUhBd0l3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVOVJvRGIrWVVBUEM1Cmd1MXdxNkFuQkNvcUFmUXdDZ1lJS29aSXpqMEVBd0lEU1FBd1JnSWhBS3VJQUcrY21LcFprUVQzRDFYNk4zVEMKSmk5aVdGMWJWWm1SUmJXYm9jZTVBaUVBbCtxRTdwUDlTOHVuNS9ZZmYwZktNMkpKSG53dThOQU9kQWFFdDVMcwpRbG89Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSVBiaEp6cG5UTzRmK0xyZmFhZlJmU1ZaY28xN3FXVFlYUmhSYzR6R2NwcVJvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFSWxQNXVodTFRWHFJSFp0V2VjNVd2ZGtLMjhRNzQvMEtpRUp4NUtzS3ltcFlBWVJyUXdMaQo1Q0prTW1ZMzZGcFA3RFF5OWpYR1VaZ3JnQTJXejFiZmV3PT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + k8s: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJpVENDQVMrZ0F3SUJBZ0lRUHVUNktmTkpiUEp1Uk5rdmZiOFQ0akFLQmdncWhrak9QUVFEQWpBVk1STXcKRVFZRFZRUUtFd3ByZFdKbGNtNWxkR1Z6TUI0WERUSTFNRGN3T1RBNU1qSXdNMW9YRFRNMU1EY3dOekE1TWpJdwpNMW93RlRFVE1CRUdBMVVFQ2hNS2EzVmlaWEp1WlhSbGN6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VICkEwSUFCR0YvVEFaWTlCSUtYU3J5dlZZSE9wdEpRaUFkZzI4OEtsQ1pMMUQ3T3VVQ29ZM2xrVVB4azZzZUNGaE0KZ20vMVNnWHo1Q1htTmpTRFREcEdqdXRwNWlhallUQmZNQTRHQTFVZER3RUIvd1FFQXdJQ2hEQWRCZ05WSFNVRQpGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFCkZnUVVhYWJ1cVhNcktwOGVzcUJ3V1dUWkZ5cnk5Y0F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQUs2eEpOVUkKU05xaklLZjBHRHAvVTc4aTBwaDZVRURVekVPN0xCazhzNkdjQWlBS015emtVMER3aGlQMC93ajdielN3ais4bQpPNWxURlg2bFJPU3ByN01rTWc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU01OGtaYURTeVl5WGtRajZJQUdPZ1ZtMFFWZFJIZ2E1QVpyVTQ0Z2VHYk5vQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWVg5TUJsajBFZ3BkS3ZLOVZnYzZtMGxDSUIyRGJ6d3FVSmt2VVBzNjVRS2hqZVdSUS9HVApxeDRJV0V5Q2IvVktCZlBrSmVZMk5JTk1Pa2FPNjJubUpnPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + k8saggregator: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJYekNDQVFXZ0F3SUJBZ0lRWFVFaStrTG16ckcvazZRNUdyMzNyREFLQmdncWhrak9QUVFEQWpBQU1CNFgKRFRJMU1EY3dPVEE1TWpJd00xb1hEVE0xTURjd056QTVNakl3TTFvd0FEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxRwpTTTQ5QXdFSEEwSUFCRm9ZSm5kOTExbzgxQnRINWRRREllQm5DSFN5cFdCVHdXZlg2RXNHZ05oUDcyb1NBMWlQCnRYNHAwVG16bFNvWmFuV0ZHVkNMTHgxNFNWUHNhUk1nQ2ttallUQmZNQTRHQTFVZER3RUIvd1FFQXdJQ2hEQWQKQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZApCZ05WSFE0RUZnUVViT2lQN3RwbW1YcnplM2xLRkVTdGNFTjZZRnd3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnClJ1UjRVL3JXZjk5YVVENnYzblhQZjVVYlBBZjhSS3VHQzZkeWxtdFJDRFlDSVFEYmtLdCt0TTJYSVhyTmIrVWoKL1BUR0RvYzJWZ1I2QUtZSTY2ZTJxQ0FxUFE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUtlSmdYaDN6S3NSMUxMZTJHQzJ2SVBTN2YrVkk4dkJwTlVVU3R3eHBxQ2RvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFV2hnbWQzM1hXanpVRzBmbDFBTWg0R2NJZExLbFlGUEJaOWZvU3dhQTJFL3ZhaElEV0krMQpmaW5ST2JPVktobHFkWVVaVUlzdkhYaEpVK3hwRXlBS1NRPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo= + k8sserviceaccount: + key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKS0FJQkFBS0NBZ0VBNHBhTVZNVDBVU0s0T21zdDc2MTBhbTVzTXcyK1NETEFsVkpmbnZqbHg1blNaTXQ2CmNLM1RvYy9SNWQ5WEk3S1pKcWk5Z3daZlZlRk9mN0VmdklWcG8zN3R6cUEzbXBlSWcxNUx3N3owa2loQjlJejgKa21iaXpoV0duQnNOUU0xS25kS2VSN1lvcTNCUlpVTHFoVm9MMDBLSDFqaWNVdjNUMkMra2FFMVlwZ0tUSFJucAp2Nit4K2hKcGJTN3psZ2d6RUNXK2w1d1UwMHZPSHJDNXoxZnNzZGQ2QmFwNFJwUE9SVTVGdDhnYm80UlhtSHY0CnBHQWFIS2JnKy92em5tQ25HeFdTc0dWVjNyY1BvYjMyQ0NjelozakhGeVJVUERhWXVWUkxrdW9sL0JBUDZhRUQKMHFScUhzeHcwK3RqTFpMU1I4TktNNjRjSjBHVXlBRnF2eXAzNXdFYSt2bUpxdUZhZGg1MFlvSXk1RkNoQ3RDYQoxZVdTTVZlTm1TM2Mza0xsbVIyT1dZaG9OZi9oWU5sQ3hxVlZLYVJuWFR2ZlczWTdaVXRWMHkyNVFITHYwOFRDCmFyV3owU1FXdFdsZUZ6THltVHo3dWhBaDFhaGNEWDJ0UHpleDg1eXEyQk9KdU4rejVjVHZKMVlndHRjV29tUkoKMS9FUGlsaEdHMnlEVG9HQzBWM2ZKa25hTUdicVJOcnZzb0dDa0s3dkVWb2JFY2c5cU1CTFFyVkVpaFFVMHlJQgpOTmJCU05VMWFYVEppY0hRN2MybStxOWN2OUlQYWFsUktpY3VPMVVyTVptQUdxbXdvZ3U1VkkxNHFtZVFzZVlaCjJtOHZtS2M2MittT1J5bnVLWXozL0hsUE10R3ZHaXQ5aTh6eG1uNmlmdDFUQ2JFQVF5MHA5U1cvRklNQ0F3RUEKQVFLQ0FnQWFoRDdBN3RtZW94OEhLeUxSa1MxMkJSMGhibUxOeFM2M2FzL281VHpTdW9RZUtwZldGdW1VM3FLMApNWXBia1p1TnBDS2xjam4yN1dxSDAvMGdUVWFiRFJBY1piQ01KVjZpN1FhVnpnZWJFUjRDMWZyNjBSS0t4b2NkCnZxYXk1ak5zdThpdElMcXFzWGE5RUhNc2p1aWlYUDlUaVFWMlN1RWZSQmdMNHIxVWxDbU9Oc21kbHB5UDVOYTAKb2RGOHhkSGYrbUxQRUVONXBMM201b3lnSUt5QTlYUUF0TDNsbUllRG9kRFQzSldyY2FIa3BPRm9yeHh2TFBKWQpXdGhjT1BobFdZVjBvaTlGNUl0dVJMSkZxdnkvaDZsWTRuWC9JKzZFaGNKZ1c0bDljWTNETEFZc0FQU3dUUUdKCk0xdEVhcEcwTnp6NFJsQmlJYkVkSk5sT3JOUWlHcUYxUFk2cHRsazduQ1ZPbXRiaElENVFpNU4rZ1ZxVkxlak4KbW44dnBPMWRscjYwTGsyRkIrMmZQY3R5MlVoZWU3NHFHYUFaNW1ndDVzZExSeTkzQUVVVWdkVWF4Z0pwSjZLNQpYWVFPeHFIQnUyUFg1YU1UZ0twc2M4SG1pbzFVZ1BXWFF5S3ROb0tRbHpKNEtmK29UY3pJV2hWT0NJU1BrNUVpCmI3MmhsRFhKT1puWEE3cUxETEZtNWVQb0pkOWdyRXczcUhQZnltZHNmZmsyUlJRb0RqblN0S0xYOVhXZTJmRGEKaStRU0pzdlI3cEROM0lUcklQS09rZDZHZEs0aVBVdVFhaUppMU8wcUlBVTUxOGtYdnRxOGt1VTR5cW5jUlgrZgpYcEtIUWF4RmpYVThnZHdCaTMyN1BPYlFJLzU0blQzUGZzV05sWWNpK2xXR2dqcHkrUUtDQVFFQTZvbXh4L1AwCjBoNFMxeWlXdWtNSzBubCtKYU9Odis3Z1ZhUWZ3UkNxWWFUQzF4cXQyaHNacEx2aEVob1M2TXlkbTF1MDNXM0YKRFM3RThHUDR3Y211REY0bUJCQzNKaGxFbkd3SGYxdUFXUnEzVU1Qdks1NjFxL0p1YzhtakFRditjK1lYYlQ2UgpWQnVKV212aTJ1Tm9oK2dIVGhyMk5vMHJsZFZDMWh1SFNoNEVhSFRkSElvai9ZbitWd0h1Z2Y4NVByU2IvK2tDClBQcWxPTW0rNWpHdTBibUtxcHJPTTNCcENpQ2dyLzJSUE1kTFFLL2dnOW9uTEZJVHMvM2dnL1lBNkhUMGJSN2QKUkZQYWR0R2lXYk11cVhiMjhWNXJQVjNZUnJxRitOQytXb2dPQTRUcXgzYU9YbjVLTEVaNzF2T040MnpYdi9XMQoramZEVlpJRXdYS3NTUUtDQVFFQTkxS2ZCdmFOSHF6dEo0V21iTkFYTk5idC9PU3Y0Skx0SHdUZ3hlQmdJdm5qCnRPQmE0d2lGeE1DZlNsMkpSVXZqZDhJMlowaE1BaU9xRGFIczVjY1RzL1NhMENVV3hyQ0dCUDM1L2xManFwUGMKVi9Jd0ZPVmF4bVFrcGdwMEQyWWVWdGhXcmpUWWYyY09rVXdRTmdSMzFZdlVCTnF0N2lqNlpzSW9ONXRhem9uSgpaQkIxalZOTExFTEQ4Wm9WVVE2WTJ2WVZRK244eHBYeWdtenR1aktVSmpTWllONFlRUWRsanJWZTh3R0s2RmRNCjJwMFFuTjlaKzU0VFp6SE1OWkVWOFozbUVIY0psTlBTOE9jSWVFUm41b29yZEpTWGVGeFgxcmRxV0Zvak51dzcKd2JNNWd6dHArRmpLK0EyNG1RL0ZGYkk3WFZtMXorUzg0R2ZMakxTQ2F3S0NBUUVBajNXd0dBV0NEL0F6U0FaYwp4QXYwRjdBVzJFRUZtSXd1RGxSNDArZzB2OHMvSHNJRDYzQStMRVI3dEUzY21TZG5sRHJ4RTZ4c0p0Y2Z3WWIxCkJ0d3RLUVdCcldUb0VsYk1YLzI0VEUrVTMydjNDMkQ5NzZtQnFHNSszelpNRFh6ZnBOYnVKM1ZwQVpCaVlMdXoKSkg2TFZ1NDNZYkFlUUZuemVnL2JkUW1icEZ0ZUNPTEt5UVU2WklBKzRjdWRyMGlGSkhUbkl3N012cTMxMkJtWApPa2pUalJjMzJZa2RiZHRwZExkbWNwL2djZFBabFBTL21RY2NoUUNqYXFwMDVXTFpSVmNjbDQ2VWU1SHJCRmpRClBKdmNnKzN2dU00dlBIY2xyb1d6SXZIVUxaNGhMRWZtTUNHMWpka2oxNWM1Y3M3QlVJWW9KaFBPdndIUzZvbUoKZlNaK2VRS0NBUUJKSk1BdldQOUhVVEVaL1NiSkM0bXhjTmNWY2JTcUlBbk1vSzZ4RnJpWDMzdCtaTk84VFNyeQprMTBJcXowTHAzUHdXUm1wMWZIVXVDTjB3S3pGRCtrOTBWdHZyMmhhL3AzRUlEQ3RER3FVYWdKQ2FEZmNGakNRCmQ5RjI0YVNOWVZBYnN3Ti9wZFZaYUdzZ2dYUlI1V1JqWFdVb3dsdXFFYWhzZDROWlhyS3VYb1dXK0Y4cm1yU2kKdEdRcXNiMFlLYzcvQXNRclA2b29PUFJ0cWpWc1djVUN2NCtVM0ZvajhVSVJ3SVlDTERTZW5pTDJqSGo3Uy9yYQp0VmRicjVpTFJ3dE1WN3hRcGtQSkpoUStkclZFakVhR0lkclVNWlhTWE0wRmpWMEFJRGhGNS91TVA2c0VxcStlCmFQUXVCRERSNDU0UDJwUS8rV1lSdzc0d1I4SWxMTVZkQW9JQkFDc2FWRzAxb3Jzei8vTkUwWnFzL0VXNmtEUXAKb21sbW5mRXZjOUpnM3N3bitHQVhkcXVHbllkTFpGYnpJSFdTbjNMSzlRVDgzbXd2ZXJ0Y0Y2eWxidllZMktsRwo0blBpZGF2ajI4c1kvbnRVU3RFenFqc0hZbEVST1MrcUJMcnRBQURyZmtOR3BrcWQrOGx1WmM1U3RjanBLaGRECkJYcWVVQmVhZG5BTExtdkZxeFc1QVpNd3lWeGM2NlRrVUtRUzJobVRqaWhFeDg5WHZqNXIzZG9XNHMrbTYrbjMKcEhrbjJqeXZTSFppMlVpa0dJYVN5ZXh3TG9zSUd3c3NKZmZOTlBkL3A2TFh4aG1Ja3dJVW5WcDN5c3ZpUVNvRgpCTTdrVDArNWFZQXEzbS9kYUhFUmJtbzlEWk1Wa2dza1RDbUdqa1hXeXB2WENaajkxcTgxc2dBVGlQYz0KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0K + os: + crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJQekNCOHFBREFnRUNBaEVBeEErVWl1OWtmbjV2RVZReC96ekp2REFGQmdNclpYQXdFREVPTUF3R0ExVUUKQ2hNRmRHRnNiM013SGhjTk1qVXdOekE1TURreU1qQXpXaGNOTXpVd056QTNNRGt5TWpBeldqQVFNUTR3REFZRApWUVFLRXdWMFlXeHZjekFxTUFVR0F5dGxjQU1oQUptNzhzalJla2ZKYklhNGJzNDl4QkV1WC9qbW4rajNsdDJNCmZuMkxKa2JjbzJFd1h6QU9CZ05WSFE4QkFmOEVCQU1DQW9Rd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUcKQ0NzR0FRVUZCd01DTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRlBVR1ZPS1Y3UHVMbSs2agppZ2tOdnVDYUZnbUZNQVVHQXl0bGNBTkJBQm5RV2xpNzEwdi9raFlCUStGeGZ2NEJ2dmladVNDYy94c3dXQTgwCjRsdU1GeVRwUzcvdHdnMUdLb1hoR0dqeEY2dy9CMTE2SS9YL0R2d3FYRDJTMWd3PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + key: LS0tLS1CRUdJTiBFRDI1NTE5IFBSSVZBVEUgS0VZLS0tLS0KTUM0Q0FRQXdCUVlESzJWd0JDSUVJRDJhaEtPVkxmUEZlRWo2Y2RnS20vcXpVQmY5bjZUbUpmSFJmYUhiZ0JvcAotLS0tLUVORCBFRDI1NTE5IFBSSVZBVEUgS0VZLS0tLS0K diff --git a/internal/backend/runtime/omni/controllers/omni/secrets.go b/internal/backend/runtime/omni/controllers/omni/secrets.go index 8d763695..543a0d82 100644 --- a/internal/backend/runtime/omni/controllers/omni/secrets.go +++ b/internal/backend/runtime/omni/controllers/omni/secrets.go @@ -35,6 +35,8 @@ import ( type SecretsController = qtransform.QController[*omni.Cluster, *omni.ClusterSecrets] // NewSecretsController instantiates the secrets controller. +// +//nolint:gocognit func NewSecretsController(etcdBackupStoreFactory store.Factory) *SecretsController { return qtransform.NewQController( qtransform.Settings[*omni.Cluster, *omni.ClusterSecrets]{ @@ -65,6 +67,30 @@ func NewSecretsController(etcdBackupStoreFactory store.Factory) *SecretsControll return err } + ics, err := safe.ReaderGetByID[*omni.ImportedClusterSecrets](ctx, r, cluster.Metadata().ID()) + if err != nil { + if !state.IsNotFoundError(err) { + return err + } + } else { + var bundle *talossecrets.Bundle + bundle, err = omni.FromImportedSecretsToSecretsBundle(ics) + if err != nil { + return fmt.Errorf("failed to decode imported cluster secrets: %w", err) + } + + var data []byte + data, err = json.Marshal(bundle) + if err != nil { + return fmt.Errorf("error marshaling secrets: %w", err) + } + + secrets.TypedSpec().Value.Imported = true + secrets.TypedSpec().Value.Data = data + + return nil + } + bundle, err := talossecrets.NewBundle(talossecrets.NewFixedClock(time.Now()), versionContract) if err != nil { return fmt.Errorf("error generating secrets: %w", err) @@ -88,6 +114,7 @@ func NewSecretsController(etcdBackupStoreFactory store.Factory) *SecretsControll return fmt.Errorf("error marshaling secrets: %w", err) } + secrets.TypedSpec().Value.Imported = false secrets.TypedSpec().Value.Data = data return nil @@ -126,6 +153,9 @@ func NewSecretsController(etcdBackupStoreFactory store.Factory) *SecretsControll // no need to requeue anything, just allow the controller to read data (when restoring from another cluster backup) qtransform.MapperNone[*omni.BackupData](), ), + qtransform.WithExtraMappedInput( + qtransform.MapperSameID[*omni.ImportedClusterSecrets, *omni.Cluster](), + ), ) } diff --git a/internal/backend/runtime/omni/controllers/omni/secrets_test.go b/internal/backend/runtime/omni/controllers/omni/secrets_test.go index 49a5e32f..dc972aca 100644 --- a/internal/backend/runtime/omni/controllers/omni/secrets_test.go +++ b/internal/backend/runtime/omni/controllers/omni/secrets_test.go @@ -8,6 +8,7 @@ package omni_test import ( "bytes" "context" + _ "embed" "encoding/json" "io" "iter" @@ -63,6 +64,7 @@ func (suite *ClusterSecretsSuite) TestNewSecrets() { err := json.Unmarshal(clusterSecretsSpec.Data, &bundle) suite.Require().NoError(err) suite.Require().NotEmpty(bundle) + suite.Require().Equal(clusterSecretsSpec.Imported, false) }) // Check that we can get cluster secrets by metadata. @@ -162,6 +164,56 @@ func (suite *ClusterSecretsSuite) TestSecretsFromBackup() { }) } +//go:embed data/secrets-valid.yaml +var validSecretsBundle string + +func (suite *ClusterSecretsSuite) TestImportedSecrets() { + require := suite.Require() + + suite.startRuntime() + suite.Require().NoError(suite.runtime.RegisterQController(omnictrl.NewSecretsController(&mockBackupStoreFactory{}))) + + cluster := omni.NewCluster(resources.DefaultNamespace, "clusterID") + cluster.TypedSpec().Value.TalosVersion = "1.10.5" + + require.NoError(suite.state.Create(suite.ctx, cluster)) + + // create ClusterUUID, as it will be looked up by SecretsController to find the source cluster ID + clusterUUID := omni.NewClusterUUID(cluster.Metadata().ID()) + clusterUUID.TypedSpec().Value.Uuid = "test-uuid" + + clusterUUID.Metadata().Labels().Set(omni.LabelClusterUUID, "test-uuid") + + require.NoError(suite.state.Create(suite.ctx, clusterUUID)) + + // create ImportedClusterSecret, as it will be looked up by SecretsController to attempt importing secrets bundle + importedClusterSecrets := omni.NewImportedClusterSecrets(resources.DefaultNamespace, cluster.Metadata().ID()) + importedClusterSecrets.TypedSpec().Value.Data = validSecretsBundle + + require.NoError(suite.state.Create(suite.ctx, importedClusterSecrets)) + + machineSet := omni.NewMachineSet(resources.DefaultNamespace, omni.ControlPlanesResourceID(cluster.Metadata().ID())) + require.NoError(suite.state.Create(suite.ctx, machineSet)) + + var foundClusterSecrets *omni.ClusterSecrets + + assertResource( + &suite.OmniSuite, + *omni.NewClusterSecrets(resources.DefaultNamespace, cluster.Metadata().ID()).Metadata(), + func(res *omni.ClusterSecrets, _ *assert.Assertions) { + foundClusterSecrets = res + clusterSecretsSpec := foundClusterSecrets.TypedSpec().Value + suite.Require().NotEmpty(clusterSecretsSpec.GetData()) + + var bundle secrets.Bundle + + err := json.Unmarshal(clusterSecretsSpec.Data, &bundle) + suite.Require().NoError(err) + suite.Require().NotEmpty(bundle) + suite.Require().Equal(clusterSecretsSpec.Imported, true) + }) +} + func TestClusterSecretsSuite(t *testing.T) { t.Parallel() diff --git a/internal/backend/runtime/omni/export_test.go b/internal/backend/runtime/omni/export_test.go index 191ef729..9fb402b5 100644 --- a/internal/backend/runtime/omni/export_test.go +++ b/internal/backend/runtime/omni/export_test.go @@ -97,3 +97,7 @@ func JoinTokenValidationOptions(st state.State) []validated.StateOption { func DefaultJoinTokenValidationOptions() []validated.StateOption { return defaultJoinTokenValidationOptions() } + +func ImportedClusterSecretValidationOptions(st state.State, clusterImportEnabled bool) []validated.StateOption { + return importedClusterSecretValidationOptions(st, clusterImportEnabled) +} diff --git a/internal/backend/runtime/omni/omni.go b/internal/backend/runtime/omni/omni.go index 0a6fc1d6..bfe24a43 100644 --- a/internal/backend/runtime/omni/omni.go +++ b/internal/backend/runtime/omni/omni.go @@ -125,6 +125,7 @@ func NewRuntime(talosClientFactory *talos.ClientFactory, dnsService *dns.Service safe.WithResourceCache[*omni.ExtensionsConfiguration](), safe.WithResourceCache[*omni.ImagePullRequest](), safe.WithResourceCache[*omni.ImagePullStatus](), + safe.WithResourceCache[*omni.ImportedClusterSecrets](), safe.WithResourceCache[*omni.InfraProviderCombinedStatus](), safe.WithResourceCache[*omni.Kubeconfig](), safe.WithResourceCache[*omni.KubernetesNodeAuditResult](), @@ -399,6 +400,7 @@ func NewRuntime(talosClientFactory *talos.ClientFactory, dnsService *dns.Service nodeForceDestroyRequestValidationOptions(cachedState), joinTokenValidationOptions(cachedState), defaultJoinTokenValidationOptions(), + importedClusterSecretValidationOptions(cachedState, config.Config.Features.EnableClusterImport), ) return &Runtime{ diff --git a/internal/backend/runtime/omni/state_access.go b/internal/backend/runtime/omni/state_access.go index 227176cf..24470206 100644 --- a/internal/backend/runtime/omni/state_access.go +++ b/internal/backend/runtime/omni/state_access.go @@ -51,6 +51,7 @@ var ( omni.EtcdAuditResultType, omni.EtcdBackupStatusType, omni.EtcdManualBackupType, + omni.ImportedClusterSecretsType, }) // clusterLabelTypeSet is the set of resource types which have the related cluster's ID as a label. @@ -399,6 +400,7 @@ func filterAccess(ctx context.Context, access state.Access) error { omni.EtcdManualBackupType, omni.ImagePullRequestType, omni.ImagePullStatusType, + omni.ImportedClusterSecretsType, omni.InfraMachineConfigType, omni.KubernetesStatusType, omni.KubernetesUpgradeManifestStatusType, diff --git a/internal/backend/runtime/omni/state_validation.go b/internal/backend/runtime/omni/state_validation.go index 00385829..263e2e0f 100644 --- a/internal/backend/runtime/omni/state_validation.go +++ b/internal/backend/runtime/omni/state_validation.go @@ -1200,3 +1200,42 @@ func defaultJoinTokenValidationOptions() []validated.StateOption { )), } } + +func importedClusterSecretValidationOptions(st state.State, clusterImportEnabled bool) []validated.StateOption { + return []validated.StateOption{ + validated.WithCreateValidations(validated.NewCreateValidationForType(func(ctx context.Context, res *omni.ImportedClusterSecrets, _ ...state.CreateOption) error { + if !clusterImportEnabled { + return errors.New("cluster import feature is not enabled") + } + + return validateImportedClusterSecrets(ctx, st, res) + })), + validated.WithUpdateValidations(validated.NewUpdateValidationForType( + func(ctx context.Context, oldRes *omni.ImportedClusterSecrets, newRes *omni.ImportedClusterSecrets, _ ...state.UpdateOption) error { + return validateImportedClusterSecrets(ctx, st, newRes) + })), + } +} + +func validateImportedClusterSecrets(ctx context.Context, st state.State, res *omni.ImportedClusterSecrets) error { + _, err := safe.StateGetByID[*omni.Cluster](ctx, st, res.Metadata().ID()) + if err != nil { + if !state.IsNotFoundError(err) { + return err + } + } else { + return fmt.Errorf("cannot create/update an ImportedClusterSecrets, as there is already an existing cluster with name: %q", res.Metadata().ID()) + } + + bundle, err := omni.FromImportedSecretsToSecretsBundle(res) + if err != nil { + return fmt.Errorf("failed to unmarshal imported cluster secret: %w", err) + } + + err = bundle.Validate() + if err != nil { + return fmt.Errorf("failed to validate imported cluster secret: %w", err) + } + + return nil +} diff --git a/internal/backend/runtime/omni/state_validation_test.go b/internal/backend/runtime/omni/state_validation_test.go index 9b71f1c2..c076e05a 100644 --- a/internal/backend/runtime/omni/state_validation_test.go +++ b/internal/backend/runtime/omni/state_validation_test.go @@ -1500,6 +1500,57 @@ func TestDefaultJoinTokenValidation(t *testing.T) { assert.ErrorContains(t, err, "destroying") } +var ( + //go:embed controllers/omni/data/secrets-valid.yaml + validSecrets string + + //go:embed controllers/omni/data/secrets-broken.yaml + brokenSecrets string + + //go:embed controllers/omni/data/secrets-invalid.yaml + invalidSecrets string +) + +func TestImportedClusterSecretValidation(t *testing.T) { + t.Parallel() + + ctx, cancel := context.WithTimeout(t.Context(), time.Second) + t.Cleanup(cancel) + + innerSt := state.WrapCore(namespaced.NewState(inmem.Build)) + st := validated.NewState(innerSt, omni.ImportedClusterSecretValidationOptions(innerSt, true)...) + res := omnires.NewImportedClusterSecrets(resources.DefaultNamespace, "test") + + res.TypedSpec().Value.Data = brokenSecrets + require.True(t, validated.IsValidationError(st.Create(ctx, res)), "expected validation error") + + res.TypedSpec().Value.Data = validSecrets + require.NoError(t, st.Create(ctx, res)) + require.NoError(t, st.Update(ctx, res)) + + res.TypedSpec().Value.Data = brokenSecrets + require.True(t, validated.IsValidationError(st.Update(ctx, res)), "expected validation error") + require.NoError(t, st.Destroy(ctx, res.Metadata())) + + res.TypedSpec().Value.Data = invalidSecrets + err := st.Create(ctx, res) + require.True(t, validated.IsValidationError(err), "expected validation error") + assert.ErrorContains(t, err, "cluster.secret is required") + assert.ErrorContains(t, err, "one of [secrets.secretboxencryptionsecret, secrets.aescbcencryptionsecret] is required") + assert.ErrorContains(t, err, "trustdinfo is required") + assert.ErrorContains(t, err, "certs.etcd is invalid") + assert.ErrorContains(t, err, "certs.k8saggregator is required") + assert.ErrorContains(t, err, "certs.os is invalid") + + cluster := omnires.NewCluster(resources.DefaultNamespace, "test") + require.NoError(t, st.Create(ctx, cluster)) + + res.TypedSpec().Value.Data = validSecrets + err = st.Create(ctx, res) + require.True(t, validated.IsValidationError(err), "expected validation error") + assert.ErrorContains(t, err, "cannot create/update an ImportedClusterSecrets, as there is already an existing cluster with name") +} + type mockEtcdBackupStoreFactory struct { store etcdbackup.Store } diff --git a/internal/integration/auth_test.go b/internal/integration/auth_test.go index bbd8412f..a6a3ce5d 100644 --- a/internal/integration/auth_test.go +++ b/internal/integration/auth_test.go @@ -641,6 +641,8 @@ func AssertResourceAuthz(rootCtx context.Context, rootCli *client.Client, client defaultJoinToken := siderolink.NewDefaultJoinToken() *defaultJoinToken.Metadata() = resource.NewMetadata(resources.DefaultNamespace, siderolink.DefaultJoinTokenType, uuid.New().String(), resource.VersionUndefined) + importedClusterSecret := omni.NewImportedClusterSecrets(resources.DefaultNamespace, cluster.Metadata().ID()) + testCases := []resourceAuthzTestCase{ { resource: identity, @@ -735,6 +737,10 @@ func AssertResourceAuthz(rootCtx context.Context, rootCli *client.Client, client resource: machineExtensionsStatus, allowedVerbSet: readOnlyVerbSet, }, + { + resource: importedClusterSecret, + allowedVerbSet: allVerbsSet, + }, } // read-only resources diff --git a/internal/integration/blocks_test.go b/internal/integration/blocks_test.go index 470cacf7..902fb183 100644 --- a/internal/integration/blocks_test.go +++ b/internal/integration/blocks_test.go @@ -231,26 +231,23 @@ func AssertBlockKubernetesDeploymentCreateAndRunning(ctx context.Context, manage } // AssertClusterCreateAndReady is a reusable group of tests that can be used to verify that a cluster is created and ready. -func AssertClusterCreateAndReady(ctx context.Context, rootClient *client.Client, name string, options ClusterOptions) []subTest { //nolint:nolintlint,revive - clusterName := "integration-" + name - options.Name = clusterName - +func AssertClusterCreateAndReady(ctx context.Context, rootClient *client.Client, options ClusterOptions) []subTest { //nolint:nolintlint,revive return subTests( subTest{ "ClusterShouldBeCreated", CreateCluster(ctx, rootClient, options), }, ).Append( - AssertBlockClusterAndTalosAPIAndKubernetesShouldBeReady(ctx, rootClient, clusterName, options.MachineOptions.TalosVersion, options.MachineOptions.KubernetesVersion)..., + AssertBlockClusterAndTalosAPIAndKubernetesShouldBeReady(ctx, rootClient, options.Name, options.MachineOptions.TalosVersion, options.MachineOptions.KubernetesVersion)..., ).Append( subTest{ "AssertSupportBundleContents", - AssertSupportBundleContents(ctx, rootClient, clusterName), + AssertSupportBundleContents(ctx, rootClient, options.Name), }, ).Append( subTest{ "ClusterShouldBeDestroyed", - AssertDestroyCluster(ctx, rootClient.Omni().State(), clusterName, options.InfraProvider != "", false), + AssertDestroyCluster(ctx, rootClient.Omni().State(), options.Name, options.InfraProvider != "", false), }, ) } diff --git a/internal/integration/cluster_test.go b/internal/integration/cluster_test.go index 370f4141..167ea7c8 100644 --- a/internal/integration/cluster_test.go +++ b/internal/integration/cluster_test.go @@ -9,6 +9,8 @@ package integration_test import ( "context" + _ "embed" + "encoding/base64" "fmt" "math/rand/v2" "os" @@ -24,6 +26,9 @@ import ( "github.com/siderolabs/gen/pair" "github.com/siderolabs/gen/xslices" "github.com/siderolabs/go-retry/retry" + talosclient "github.com/siderolabs/talos/pkg/machinery/client" + talossecrets "github.com/siderolabs/talos/pkg/machinery/config/generate/secrets" + "github.com/siderolabs/talos/pkg/machinery/role" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" @@ -600,6 +605,7 @@ func AssertDestroyCluster(testCtx context.Context, omniState state.State, cluste require.NoError(t, err) rtestutils.AssertNoResource[*omni.Cluster](ctx, t, omniState, clusterName) + rtestutils.AssertNoResource[*omni.ImportedClusterSecrets](ctx, t, omniState, clusterName) for _, id := range patches { rtestutils.AssertNoResource[*omni.ConfigPatch](ctx, t, omniState, id) @@ -943,3 +949,34 @@ func updateMachineClassMachineSets(ctx context.Context, t *testing.T, st state.S }) } } + +func assertClusterIsImported(ctx context.Context, t *testing.T, st state.State, clusterID string, secretsBundle []byte) { + clusterStatus, err := safe.StateGetByID[*omni.ClusterStatus](ctx, st, clusterID) + require.NoError(t, err) + + _, ok := clusterStatus.Metadata().Labels().Get(omni.LabelClusterTainted) + require.True(t, ok, "cluster status doesn't have cluster tainted label") + + var bundle *talossecrets.Bundle + require.NoError(t, yaml.Unmarshal(secretsBundle, &bundle)) + + talosConfig := omni.NewTalosConfig(resources.DefaultNamespace, clusterID) + clientCert, err := talossecrets.NewAdminCertificateAndKey(time.Now(), bundle.Certs.OS, role.MakeSet(role.Admin), time.Hour) + require.NoError(t, err) + + talosConfig.TypedSpec().Value.Key = base64.StdEncoding.EncodeToString(clientCert.Key) + talosConfig.TypedSpec().Value.Crt = base64.StdEncoding.EncodeToString(clientCert.Crt) + talosConfig.TypedSpec().Value.Ca = base64.StdEncoding.EncodeToString(bundle.Certs.OS.Crt) + + endpoints, err := safe.ReaderGetByID[*omni.ClusterEndpoint](ctx, st, clusterID) + require.NoError(t, err) + + talosCli, err := talosclient.New(ctx, + talosclient.WithCluster(clusterID), + talosclient.WithConfig(omni.NewTalosClientConfig(talosConfig, endpoints.TypedSpec().Value.ManagementAddresses...)), + ) + require.NoError(t, err) + + _, err = talosCli.Version(ctx) + require.NoError(t, err) +} diff --git a/internal/integration/integration_test.go b/internal/integration/integration_test.go index 90881d2a..de8298c3 100644 --- a/internal/integration/integration_test.go +++ b/internal/integration/integration_test.go @@ -235,6 +235,7 @@ func TestIntegration(t *testing.T) { t.Run("StaticInfraProvider", testStaticInfraProvider(testOptions)) t.Run("OmniUpgradePrepare", testOmniUpgradePrepare(testOptions)) t.Run("OmniUpgradeVerify", testOmniUpgradeVerify(testOptions)) + t.Run("ClusterImport", testClusterImport(testOptions)) }) postRunHooks(t, testOptions) diff --git a/internal/integration/suites_test.go b/internal/integration/suites_test.go index 4465d548..24c7b72d 100644 --- a/internal/integration/suites_test.go +++ b/internal/integration/suites_test.go @@ -13,9 +13,14 @@ import ( "testing" "time" + "github.com/siderolabs/talos/pkg/machinery/config" + talossecrets "github.com/siderolabs/talos/pkg/machinery/config/generate/secrets" + "github.com/stretchr/testify/require" "google.golang.org/protobuf/types/known/durationpb" + "gopkg.in/yaml.v3" "github.com/siderolabs/omni/client/api/omni/specs" + "github.com/siderolabs/omni/client/pkg/omni/resources" "github.com/siderolabs/omni/client/pkg/omni/resources/omni" "github.com/siderolabs/omni/internal/integration/workloadproxy" "github.com/siderolabs/omni/internal/pkg/clientconfig" @@ -316,6 +321,7 @@ Don't do any changes to the cluster.`) t.Parallel() clusterOptions := ClusterOptions{ + Name: "integration-default", ControlPlanes: 3, Workers: 2, @@ -324,7 +330,7 @@ Don't do any changes to the cluster.`) options.claimMachines(t, clusterOptions.ControlPlanes+clusterOptions.Workers) - runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, "default", clusterOptions)) + runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, clusterOptions)) } } @@ -337,6 +343,7 @@ Don't do any changes to the cluster.`) t.Parallel() clusterOptions := ClusterOptions{ + Name: "integration-encrypted", ControlPlanes: 1, Workers: 1, @@ -348,7 +355,7 @@ Don't do any changes to the cluster.`) options.claimMachines(t, clusterOptions.ControlPlanes+clusterOptions.Workers) - runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, "encrypted", clusterOptions)) + runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, clusterOptions)) } } @@ -361,6 +368,7 @@ Don't do any changes to the cluster.`) t.Parallel() clusterOptions := ClusterOptions{ + Name: "integration-singlenode", ControlPlanes: 1, Workers: 0, @@ -369,7 +377,7 @@ Don't do any changes to the cluster.`) options.claimMachines(t, clusterOptions.ControlPlanes+clusterOptions.Workers) - runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, "singlenode", clusterOptions)) + runTests(t, AssertClusterCreateAndReady(t.Context(), options.omniClient, clusterOptions)) } } @@ -1463,3 +1471,47 @@ Test Omni upgrades, the second half that runs on the current Omni version ) } } + +func testClusterImport(options *TestOptions) TestFunc { + return func(t *testing.T) { + t.Log(` +Create a single node imported cluster, assert that the cluster is ready and accessible and using the imported secrets bundle.`) + + t.Parallel() + + clusterOptions := ClusterOptions{ + Name: "integration-imported-cluster", + ControlPlanes: 1, + Workers: 0, + + MachineOptions: options.MachineOptions, + SkipExtensionCheckOnCreate: true, + } + + bundle, err := talossecrets.NewBundle(talossecrets.NewFixedClock(time.Now()), config.TalosVersion1_10) + require.NoError(t, err) + + bundleYaml, err := yaml.Marshal(bundle) + require.NoError(t, err) + + ics := omni.NewImportedClusterSecrets(resources.DefaultNamespace, clusterOptions.Name) + ics.TypedSpec().Value.Data = string(bundleYaml) + + require.NoError(t, options.omniClient.Omni().State().Create(t.Context(), ics)) + + options.claimMachines(t, clusterOptions.ControlPlanes+clusterOptions.Workers) + + t.Run( + "ClusterShouldBeCreated", + CreateCluster(t.Context(), options.omniClient, clusterOptions), + ) + + assertClusterAndAPIReady(t, clusterOptions.Name, options) + assertClusterIsImported(t.Context(), t, options.omniClient.Omni().State(), clusterOptions.Name, bundleYaml) + + t.Run( + "ClusterShouldBeDestroyed", + AssertDestroyCluster(t.Context(), options.omniClient.Omni().State(), clusterOptions.Name, false, false), + ) + } +} diff --git a/internal/pkg/config/features.go b/internal/pkg/config/features.go index 37031ea0..8890e363 100644 --- a/internal/pkg/config/features.go +++ b/internal/pkg/config/features.go @@ -10,6 +10,7 @@ type Features struct { EnableTalosPreReleaseVersions bool `yaml:"enableTalosPreReleaseVersions"` EnableBreakGlassConfigs bool `yaml:"enableBreakGlassConfigs"` EnableConfigDataCompression bool `yaml:"enableConfigDataCompression"` + EnableClusterImport bool `yaml:"enableClusterImport"` DisableControllerRuntimeCache bool `yaml:"disableControllerRuntimeCache"` }