From c1bb42a5a4566e363828b45bd0ecaaa73afd22cb Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 4 May 2021 16:52:14 +0200 Subject: [PATCH] WIFI-1967 add quali workflow (#42) * add example Quali workflow --- .github/workflows/quali.yml | 33 +++++++++++++++++++++++++++++++++ .quali/common.py | 13 +++++++++---- .quali/start_reservation.py | 6 +++--- .quali/stop_reservation.py | 2 +- 4 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/quali.yml diff --git a/.github/workflows/quali.yml b/.github/workflows/quali.yml new file mode 100644 index 000000000..c958f1c98 --- /dev/null +++ b/.github/workflows/quali.yml @@ -0,0 +1,33 @@ +name: Quali example pipeline + +on: + workflow_dispatch: + +jobs: + quali: + runs-on: ubuntu-latest + env: + CLOUDSHELL_URL: quali-cloudshell.lab.wlan.tip.build + CLOUDSHELL_USER: admin + CLOUDSHELL_PASSWORD: ${{ secrets.CLOUDSHELL_PASSWORD }} + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.8' + + - name: Install dependencies + run: pip install -r .quali/requirements.txt + + - name: Start reservation + id: start + run: echo ::set-output name=res_id::$(python .quali/start_reservation.py) + + - name: Run tests + run: | + echo "simulating test execution" + sleep 30 + + - name: Stop reservation + run: python .quali/stop_reservation.py ${{ steps.start.outputs.res_id }} \ No newline at end of file diff --git a/.quali/common.py b/.quali/common.py index b1de5f462..b9e98d4ce 100644 --- a/.quali/common.py +++ b/.quali/common.py @@ -3,7 +3,7 @@ import time from cloudshell.api.cloudshell_api import CloudShellAPISession -TIMEOUT=600 +TIMEOUT=1200 def get_session(): url = os.environ['CLOUDSHELL_URL'] @@ -12,12 +12,11 @@ def get_session(): return CloudShellAPISession(url, user, password, "Global") - -def wait_for_reservation_status(session, res_id, target_status): +def __wait_for_status(session, res_id, field, target_status): timer = 0 sleep_time = 5 while True: - status = session.GetReservationStatus(res_id).ReservationSlimStatus.ProvisioningStatus + status = session.GetReservationStatus(res_id).ReservationSlimStatus.__dict__[field] if status == target_status: break @@ -27,3 +26,9 @@ def wait_for_reservation_status(session, res_id, target_status): time.sleep(sleep_time) timer += sleep_time + +def wait_for_provisioning_status(session, res_id, target_status): + __wait_for_status(session, res_id, 'ProvisioningStatus', target_status) + +def wait_for_reservation_status(session, res_id, target_status): + __wait_for_status(session, res_id, 'Status', target_status) diff --git a/.quali/start_reservation.py b/.quali/start_reservation.py index d4a000a38..99de82976 100644 --- a/.quali/start_reservation.py +++ b/.quali/start_reservation.py @@ -1,6 +1,6 @@ import os -from common import wait_for_reservation_status, get_session +from common import wait_for_provisioning_status, get_session run_id = os.environ.get('GITHUB_RUN_NUMBER', 1) @@ -11,12 +11,12 @@ def main(): reservationName=f'sanity-{run_id}', owner=session.username, durationInMinutes=60, - topologyFullPath='API TESTING' + topologyFullPath='Testing - Basic Lab01' ).Reservation print(reservation.Id) - wait_for_reservation_status(session, reservation.Id, 'Ready') + wait_for_provisioning_status(session, reservation.Id, 'Ready') if __name__ == '__main__': main() diff --git a/.quali/stop_reservation.py b/.quali/stop_reservation.py index 589744a46..c9733d788 100644 --- a/.quali/stop_reservation.py +++ b/.quali/stop_reservation.py @@ -6,7 +6,7 @@ def main(): session = get_session() res_id = sys.argv[1] session.EndReservation(res_id) - wait_for_reservation_status(session, res_id, 'Teardown') + wait_for_reservation_status(session, res_id, 'Completed') if __name__ == '__main__': main()