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
Exemple #2
0
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))
Exemple #3
0
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))