From 81a238b49955e21c0f0954f5186797cf4b5c4c4b Mon Sep 17 00:00:00 2001
From: Dimitri Koshkin <dimitri.koshkin@nutanix.com>
Date: Thu, 19 Sep 2024 10:13:21 -0700
Subject: [PATCH] build: add workflow_dispatch to test new OSs

---
 .github/workflows/test.yaml | 49 ++++++++++++++++++++++++++++++++++---
 1 file changed, 46 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 20e71bf..590bda9 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -1,14 +1,28 @@
 name: test base images
 on:
   pull_request_target:
-    types: 
+    types:
       - labeled
       - opened
       - synchronize
+  # Enable manual invocation of this workflow GitHub Actions GUI
+  workflow_dispatch:
+    inputs:
+      os:
+        description: "The OS to run the integration test with"
+        type: choice
+        required: true
+        options:
+          - ubuntu
+          - rocky
+          - centos
+          - rhel
+          - flatcar
+
 jobs:
   base_image_tests:
-    runs-on: 
-    - self-hosted-nutanix-medium
+    runs-on:
+      - self-hosted-nutanix-medium
     strategy:
       fail-fast: false
       matrix:
@@ -38,3 +52,32 @@ jobs:
           PKR_VAR_vsphere_resource_pool: ${{ secrets.VSPHERE_RESOURCE_POOL }}
           RHN_SUBSCRIPTION_ORG: ${{ secrets.RHN_SUBSCRIPTION_ORG }}
           RHN_SUBSCRIPTION_KEY: ${{ secrets.RHN_SUBSCRIPTION_KEY }}
+
+  # Invoke the test manually.
+  base_image_test:
+    if: contains(fromJson('["workflow_dispatch"]'), github.event_name)
+    runs-on:
+      - self-hosted-nutanix-medium
+    steps:
+      - name: Checkout code
+        uses: actions/checkout@v3
+        with:
+          ref: "${{ github.event.pull_request.head.sha }}"
+      - name: Setup requirements
+        run: |
+          sudo apt-get update && sudo apt-get -y install xorriso
+          curl -L -o - "https://github.com/vmware/govmomi/releases/latest/download/govc_$(uname -s)_$(uname -m).tar.gz" | sudo tar -C /usr/local/bin -xvzf - govc
+      - name: Run integration tests for ${{ matrix.os }}
+        run: make ${{ matrix.os }}-test
+        env:
+          VSPHERE_USERNAME: ${{ secrets.VSPHERE_SRE_USERNAME }}
+          VSPHERE_PASSWORD: ${{ secrets.VSPHERE_SRE_PASSWORD }}
+          VSPHERE_SERVER: ${{ secrets.VSPHERE_SERVER }}
+          GOVC_URL: ${{ secrets.VSPHERE_SRE_USERNAME }}:${{ secrets.VSPHERE_SRE_PASSWORD }}@${{ secrets.VSPHERE_SERVER }}
+          PKR_VAR_vsphere_cluster: ${{ secrets.VSPHERE_CLUSTER }}
+          PKR_VAR_vsphere_datacenter: ${{ secrets.VSPHERE_DATACENTER }}
+          PKR_VAR_vsphere_datastore: ${{ secrets.VSPHERE_TEST_DATASTORE }}
+          PKR_VAR_vsphere_network: ${{ secrets.VSPHERE_NETWORK }}
+          PKR_VAR_vsphere_resource_pool: ${{ secrets.VSPHERE_RESOURCE_POOL }}
+          RHN_SUBSCRIPTION_ORG: ${{ secrets.RHN_SUBSCRIPTION_ORG }}
+          RHN_SUBSCRIPTION_KEY: ${{ secrets.RHN_SUBSCRIPTION_KEY }}