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
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
platform_filter="device_platform_name NOT_CONTAINS Win" server_filter = Filter() print opts.filter server_filter.expression="(%s)&(%s)" % (opts.filter,platform_filter) print server_filter.expression server_refs=server_service.findServerRefs(server_filter) server_array=[] for srv in server_refs: server_array.append(srv) filtered_refs=auth_service.filterSingleTypeResourceList(OperationConstants.EXECUTE_SERVER_SCRIPT, server_array) ssja=ServerScriptJobArgs() ssja.targets=filtered_refs ssja.timeOut=3600 if opts.args: ssja.parameters=opts.args if opts.runas_user and opts.runas_pwd and opts.runas_domain: ssja.username=opts.runas_user ssja.password=opts.runas_pwd ssja.loginDomain=opts.runas_domain if int(opts.debug)!=1: job_ref=server_script_service.startServerScript(script_ref,ssja,'Script from pytwist',default_notify(opts.email),None) print job_ref else: print filtered_refs if int(opts.debug)!=1: wait_count=0
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