Esempio n. 1
0
def runServerScript(script_id,
                    username,
                    jobNotify,
                    devices,
                    scriptArgs,
                    twist,
                    timeout=10):
    jobStarted = False
    time_offset = 5
    while not jobStarted:
        ssref = ServerScriptRef(script_id)
        ssService = twist.script.ServerScriptService
        ssJobArgs = ServerScriptJobArgs()
        ssJobArgs.targets = map(lambda x: ServerRef(x), devices)
        ssJobArgs.timeOut = timeout
        ssJobArgs.parameters = scriptArgs
        jobSchedule = JobSchedule()
        jobSchedule.startDate = int(time.time() + time_offset)
        try:
            jobId = ssService.startServerScript(ssref, ssJobArgs, username,
                                                jobNotify, jobSchedule).id
            jobStarted = True
        except PastScheduledDateException:
            print "Server Script (%s) is being rescheduled" % \
             ssService.getServerScriptVO(ssref).name
            jobStarted = False
            time_offset = time_offset + 5
    return jobId
    server_tuple = []
    for row in input_file:
        server_filter = Filter()
        server_filter.expression = "ServerVO.hostName BEGINS_WITH %s" % row[
            "hostname"].split(".")[0]
        server_refs = server_service.findServerRefs(server_filter)

        if (len(server_refs) == 1):
            print "Success: %s" % server_refs[0].name
            one_ref = [server_refs[0]]
            server_tuple.append(server_refs[0])
        else:
            print "Could not find 1 entries for: %s" % row["hostname"]

    filtered_refs = auth_service.filterSingleTypeResourceList(
        OperationConstants.EXECUTE_SERVER_SCRIPT, server_tuple)
    script_ref = ServerScriptRef(long(opts.script))
    current_time = long(time.time())
    five_minutes_from_now = current_time + 300
    print five_minutes_from_now
    js = JobSchedule()
    js.setStartDate(five_minutes_from_now)
    ssja = ServerScriptJobArgs()
    print server_tuple
    ssja.targets = filtered_refs
    ssja.timeout = 360
    job_ref = server_script_service.startServerScript(
        script_ref, ssja, 'Script from pytwist', default_notify(opts.email),
        js)
    print job_ref
    elif MODE_DUMP:
        vo = serverservice.getServerVO(server)
        pprint.pprint(inspect.getmembers(vo))
    else:
        print "server %d = %s" % (server.id, server.name)

if len(servers) > 1:
    sys.stderr.write("#- More than one Server found !\n")
    sys.exit(1)

####################################################################### }}} 1
## Executing a Script on a Server ##################################### {{{ 1

# preparing job details
jobservice = ts.job.JobService
JobArg = ServerScriptJobArgs()
JobArg.setTargets(servers)

# the job query
try:
    job = scriptservice.startServerScript(scripts[0], JobArg, "", None, None)
except:
    sys.stderr.write("#- Job has not been created !\n")
    sys.exit(1)

# displaying job details
if MODE_LIST:
    print "job    %d = %s" % (job.id, job.name)
elif MODE_DETAIL:
    print "Job OID ............... " + str(job.id)
    print "Job Long ID ........... " + str(job.idAsLong)