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
else: 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:
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)
platform_filter = "device_platform_name CONTAINS Win" else: 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
print "Authentication failed." sys.exit(2) # Construct a search filter. filter = Filter() filter.expression = 'ServerVO.name *=* "%s"' % 'rhel55' filter.objectType = 'device' # Get a reference to ServerService. serverservice = ts.server.ServerService # Perform the search, returning server references. serverRef = serverservice.findServerRefs(filter) print "-------server %s" % serverRef # Contruct a search filter. filter.expression = 'ServerScriptVO.name *=* "%s"' % 'hello world' filter.objectType = 'server_script' # Get a reference to ScriptService. scriptservice = ts.script.ServerScriptService # Perform the search, returning server references. scriptRef = scriptservice.findServerScriptRefs(filter)[0] print "----------script %s" % scriptRef #constuct the args args = ServerScriptJobArgs() args.setTargets(serverRef) # Run script job jobRef = scriptservice.startServerScript(scriptRef,args, None, None, None) print "---------jobRef %s" % jobRef
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