diff --git a/.quali/common.py b/.quali/common.py new file mode 100644 index 000000000..b1de5f462 --- /dev/null +++ b/.quali/common.py @@ -0,0 +1,29 @@ +import os +import time + +from cloudshell.api.cloudshell_api import CloudShellAPISession + +TIMEOUT=600 + +def get_session(): + url = os.environ['CLOUDSHELL_URL'] + user = os.environ['CLOUDSHELL_USER'] + password = os.environ['CLOUDSHELL_PASSWORD'] + + return CloudShellAPISession(url, user, password, "Global") + + +def wait_for_reservation_status(session, res_id, target_status): + timer = 0 + sleep_time = 5 + while True: + status = session.GetReservationStatus(res_id).ReservationSlimStatus.ProvisioningStatus + + if status == target_status: + break + + if timer >= TIMEOUT: + raise RuntimeError(f'waiting for reservation to reach status {target_status} timed out') + + time.sleep(sleep_time) + timer += sleep_time diff --git a/.quali/requirements.txt b/.quali/requirements.txt new file mode 100644 index 000000000..02044f576 --- /dev/null +++ b/.quali/requirements.txt @@ -0,0 +1 @@ +cloudshell-automation-api==2021.1.0.181140 \ No newline at end of file diff --git a/.quali/start_reservation.py b/.quali/start_reservation.py new file mode 100644 index 000000000..d4a000a38 --- /dev/null +++ b/.quali/start_reservation.py @@ -0,0 +1,22 @@ +import os + +from common import wait_for_reservation_status, get_session + +run_id = os.environ.get('GITHUB_RUN_NUMBER', 1) + +def main(): + session = get_session() + + reservation = session.CreateImmediateTopologyReservation( + reservationName=f'sanity-{run_id}', + owner=session.username, + durationInMinutes=60, + topologyFullPath='API TESTING' + ).Reservation + + print(reservation.Id) + + wait_for_reservation_status(session, reservation.Id, 'Ready') + +if __name__ == '__main__': + main() diff --git a/.quali/stop_reservation.py b/.quali/stop_reservation.py new file mode 100644 index 000000000..589744a46 --- /dev/null +++ b/.quali/stop_reservation.py @@ -0,0 +1,12 @@ +import sys + +from common import wait_for_reservation_status, get_session + +def main(): + session = get_session() + res_id = sys.argv[1] + session.EndReservation(res_id) + wait_for_reservation_status(session, res_id, 'Teardown') + +if __name__ == '__main__': + main()