def create_reservation(session: CloudShellAPISession, reservation_name: str, topology_name: Optional[str] = None, global_inputs: Optional[List[UpdateTopologyGlobalInputsRequest]] = None): """ Create empty or topology from reservation based on input. """ if not global_inputs: global_inputs = [] end_named_reservations(session, reservation_name) if topology_name: reservation = session.CreateImmediateTopologyReservation(reservation_name, session.username, topologyFullPath=topology_name, globalInputs=global_inputs, durationInMinutes=60) else: reservation = session.CreateImmediateReservation(reservation_name, session.username, durationInMinutes=60) return reservation
def f(jj): k = randint(0, 300) log('%d: Sleeping %d seconds' % (jj, k)) sleep(k) while True: t0 = time() fail = 'ok' api = CloudShellAPISession('localhost', 'admin', 'admin', 'Global') try: id = api.CreateImmediateTopologyReservation( reservationName='vmx%d' % jj, topologyFullPath=toponame, durationInMinutes=120, owner='admin').Reservation.Id for _ in range(100): rd = api.GetReservationDetails(id).ReservationDescription log('%d: %s Status=%s SetupStage=%s ProvisioningStatus=%s' % (jj, id, rd.Status, rd.SetupStage, rd.ProvisioningStatus)) if rd.ProvisioningStatus == 'Error': fail = 'setup error' break if rd.SetupStage == 'Ended': break sleep(10) else: log('%d: Setup never finished, ending reservation %s' % (jj, id)) fail = 'setup timeout' api.EndReservation(id) for _ in range(100): rd = api.GetReservationDetails(id).ReservationDescription if rd.Status == 'Completed': log('%d: %s Status=%s' % (jj, id, rd.Status)) break sleep(10) else: log('%d: Teardown never finished %s' % (jj, id)) fail = 'teardown fail' log('%d: Cycle (%s) finished in %d seconds' % (jj, str(fail), time() - t0)) except Exception as e: log('Exception: %s' % str(e)) sleep(randint(1, 30))
def main(): """ Example workflow of starting a sandbox, waiting for it to setup, then stopping it :return: """ session = CloudShellAPISession('localhost', "admin", "admin", "Global") # Create the sandbox sandbox = session.CreateImmediateTopologyReservation( 'test sandbox', owner='admin', durationInMinutes=120, topologyFullPath='Simple Blueprint1', globalInputs=[ UpdateTopologyGlobalInputsRequest('Target Cloud', 'AWS') ]).Reservation sandbox_details = SandboxHelpers().wait_for_sandbox_setup( sandbox.Id, session, 10) run_some_tests_or_other_code(session, sandbox_details) session.EndReservation(sandbox.Id)
TARGET_BLUEPRINT = "qualix tag dev" api = CloudShellAPISession(host=server, username=user, password=password, domain=domain) global_inputs = [ UpdateTopologyGlobalInputsRequest(ParamName="My Input", Value="whatever") ] try: response = api.CreateImmediateTopologyReservation( reservationName="test sandbox", owner="admin", durationInMinutes=60, notifyOnStart=True, notifyOnEnd=True, notificationMinutesBeforeEnd=10, topologyFullPath=TARGET_BLUEPRINT, globalInputs=global_inputs, notifyOnSetupComplete=True).Reservation except Exception as e: exc_msg = "'{}' blueprint start failed.\n{}: {}".format( TARGET_BLUEPRINT, type(e).__name__, str(e)) raise Exception(exc_msg) print("Sandbox {} started".format(response.Id))