def client(self,server,port=5001): cwd = os.getcwd() self.setExe(self.GITexe) if self.user is None: self.user = pwd.getpwuid(os.geteuid()).pw_name ## Create a script so that we can pass parameters to ssh for clone self.gitssh = tempfile.mkstemp(dir=cwd) f = os.fdopen(self.gitssh[0],'w') os.fchmod(self.gitssh[0],stat.S_IRWXU) f.write(GitSSH % (self.userkey, int(port))) f.close() # Tell git to use our wrapper script os.environ['GIT_SSH'] = self.gitssh[1] # if self.isV6Test(): # server = self.v6Names[server] # if server.find(":") >= 0: # server = "[%s]" % server # now create the arguments for git clone itself args = [self.gitAction,] ofile = self.outputFile.replace("'","") remote="%s@%s:%s" % (self.user, server,self.inputFile) if self.gitAction == 'clone': args.extend([remote]) args.extend(["%s" % ofile]) else: # This is a pull. chdir to the local repo, update the # remote origin url and then pull os.chdir(ofile) cmd = [self.GITexe,"config","remote.origin.url",remote] TimedExec.runTimedCmd(2,cmd) self.setArgs(args) print "client: " , args self.run()
def run(self): if self.hasRequirement("FileTransfer") and self.inputFile is not None: iFile = file(self.inputFile,'r') else: iFile = None if self.lowPort is None or self.highPort is None: targs=[self.exe] targs.extend(self.args) self.tstart=time.time() resultcode,output,err=TimedExec.runTimedCmd(self.timeout, targs, indata=iFile, outhandler=self.stdoutHandler, errhandler=self.stderrHandler) self.tend=time.time() if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) if iFile is not None: iFile.close() raise TimeOutException(self.exe) else: for self.port in range(self.lowPort,self.highPort): try: targs=[self.exe] targs.extend(self.args) targs.extend([self.portArg, "%d" % int(self.port)]), ## in 2 seconds call the portReporter to indicate ## which port is being used. If specific mover has ## an error within 2 seconds, assumed that port is in use. ## Then next port is tried. rd = TimedExec.RunDelayed(2,self.portReporter,self.port) rd.run() self.tstart=time.time() resultcode,output,err=TimedExec.runTimedCmd(self.timeout, targs, indata=iFile, outhandler=self.stdoutHandler, errhandler=self.stderrHandler) self.tend=time.time() rd.join() if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) raise TimeOutException(self.exe) break except PortInUseException,e: ## Cancel the portReporter rd.cancel() sys.stderr.write(e.message + "\n") rd.join() if iFile is not None: iFile.close()
def run(self): if self.inputFile is not None: iFile = file(self.inputFile,'r') else: iFile = None if self.lowPort is None or self.highPort is None: targs=[self.exe] targs.extend(self.args) self.tstart=time.time() resultcode,output,err=TimedExec.runTimedCmd(self.timeout, targs, indata=iFile, outhandler=self.stdoutHandler, errhandler=self.stderrHandler) self.tend=time.time() if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) if iFile is not None: iFile.close() raise TimeOutException(self.exe) else: for self.port in range(self.lowPort,self.highPort): try: targs=[self.exe] targs.extend(self.args) targs.extend([self.portArg, "%d" % int(self.port)]), ## in 2 seconds call the portReporter to indicate ## which port is being used. If specific mover has ## an error within 2 seconds, assumed that port is in use. ## Then next port is tried. rd = TimedExec.RunDelayed(2,self.portReporter,self.port) rd.run() self.tstart=time.time() resultcode,output,err=TimedExec.runTimedCmd(self.timeout, targs, indata=iFile, outhandler=self.stdoutHandler, errhandler=self.stderrHandler) self.tend=time.time() rd.join() if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) raise TimeOutException(self.exe) break except PortInUseException,e: ## Cancel the portReporter rd.cancel() sys.stderr.write(e.message + "\n") rd.join() if iFile is not None: iFile.close()
def __init__(self): resultcode,out,err=TimedExec.runTimedCmd(defaultTimeout, ["condor_config_val","LIBEXEC"]) if (resultcode < 0): raise IDPLExecption.CondorConfigValException("Chirp Init") else: self.executable=os.path.join(out[0].strip(),"condor_chirp")
def ulog(self,message): """ condor chirp to log a message """ resultcode,out,err=TimedExec.runTimedCmd(defaultTimeout, [self.executable,"ulog", "'%s'" % message]) if resultcode != 0: raise IDPLException.CondorChirpUlogException(message) else: return out
def getJobAttr(self,attr): """ condor chirp to get a job attribute """ resultcode,out,err=TimedExec.runTimedCmd(defaultTimeout, [self.executable,"get_job_attr", attr]) if resultcode != 0: raise IDPLException.CondorChirpGetException(attr) else: if out[0].strip().lower() == "undefined": return None else: return out[0].strip()
def iperfClient(): interval = 5 maxtries = 12*3 serverInfo = chirp.getJobAttrWait("IperfServer",None,interval, maxtries) host,port = serverInfo.strip("'").split() tstart = time.time() resultcode,output,err=TimedExec.runTimedCmd(clientTimeout,[iperfExe, "-c", host,"-f","k","-p","%d" % int(port) ],iperfout, iperferr) tend = time.time() writeRecord("iperf",socket.getfqdn(),host,tstart,tend,1,tend-tstart, int(transferredKB))
def getJobAttr(self, attr): """ condor chirp to get a job attribute """ resultcode, out, err = TimedExec.runTimedCmd( defaultTimeout, [self.executable, "get_job_attr", attr]) if resultcode != 0: raise IDPLException.CondorChirpGetException(attr) else: if out[0].strip().lower() == "undefined": return None else: return out[0].strip()
def iperfServer(): for iperfPort in range(iperfPortLow,iperfPortHigh): try: resultcode,output,err=TimedExec.runTimedCmd(serverTimeout,[iperfExe, "-s", "-p", "%d" % iperfPort ],iperfout, iperferr) if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) raise TimeOutException("iperf") break except PortInUseException,e: sys.stderr.write(e.message)
def setJobAttr(self, attr, val): """ condor chirp to set a job attribute if val == None, set it to 'UNDEFINED' """ if val is None: val = "UNDEFINED" resultcode, out, err = TimedExec.runTimedCmd( defaultTimeout, [self.executable, "set_job_attr", attr, val]) if resultcode != 0: raise IDPLException.CondorChirpSetException(attr + ":" + val) else: return out
def iperfClient(): interval = 5 maxtries = 12 * 3 serverInfo = chirp.getJobAttrWait("IperfServer", None, interval, maxtries) host, port = serverInfo.strip("'").split() tstart = time.time() resultcode, output, err = TimedExec.runTimedCmd( clientTimeout, [iperfExe, "-c", host, "-f", "k", "-p", "%d" % int(port)], iperfout, iperferr) tend = time.time() writeRecord("iperf", socket.getfqdn(), host, tstart, tend, 1, tend - tstart, int(transferredKB))
def iperfServer(): for iperfPort in range(iperfPortLow, iperfPortHigh): try: resultcode, output, err = TimedExec.runTimedCmd( serverTimeout, [iperfExe, "-s", "-p", "%d" % iperfPort], iperfout, iperferr) if resultcode < 0: sys.stdout.write("Result code: %d\n" % resultcode) raise TimeOutException("iperf") break except PortInUseException, e: sys.stderr.write(e.message)
def setJobAttr(self,attr,val): """ condor chirp to set a job attribute if val == None, set it to 'UNDEFINED' """ if val is None: val = "UNDEFINED" resultcode,out,err=TimedExec.runTimedCmd(defaultTimeout, [self.executable,"set_job_attr", attr, val]) if resultcode != 0: raise IDPLException.CondorChirpSetException(attr + ":" + val) else: return out
def genkey(self,bname,type="rsa"): """generates host/user key in a temporary file""" cwd = os.getcwd() fh,key= tempfile.mkstemp(dir=cwd,text=True) os.close(fh) keypub = "%s.pub" % key if os.path.isfile(key): os.unlink(key) if os.path.isfile(keypub): os.unlink(keypub) keygencmd = [self.KEYGENexe,"-q","-f",key,"-t", type, "-N", ""] opcode,out,err = TimedExec.runTimedCmd(5,keygencmd) if opcode != 0: print out print err raise SSHServerException("ssh-keygen",err) return (key,keypub)
try: opts, args = getopt.getopt(sys.argv[1:], "hl:p:c:", ["help", "log_path=", "port=", "config="]) except getopt.GetoptError: usage() sys.exit() for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ("-l", "--log_path"): log_path = arg elif opt in ("-p", "--port"): port = arg elif opt in ("-c", "--config"): config = arg resultcode, output, err = TimedExec.runTimedCmd( timeout, [sslexe, "-l", log_path, "-p", port, "-c", config]) print("".join(output)) if resultcode < 0: side = int(os.environ['_CONDOR_PROCNO']) print("Timeout! Result code %d" % resultcode) if side == 0: raise TimeOutException("client") else: raise TimeOutException("server") # vim: ts=4:sw=4
#!/usr/bin/env python import TimedExec import sys #This is used to create new subprocess and it will return output as well as error resultcode, output, err = TimedExec.runTimedCmd(30, ["/usr/bin/iperf", "-s"]) sys.stdout.write("Result code: %d\n" % resultcode) print "==== Command stdout ===" for line in output: sys.stdout.write(line) print "=======Command Stderr====" for line in err: sys.stdout.write(line) # vim: ts=4:sw=4:tw=78
#!/usr/bin/env python import TimedExec import sys #This is used to create new subprocess and it will return output as well as error resultcode,output,err=TimedExec.runTimedCmd(30,["/usr/bin/iperf","-s"]) sys.stdout.write("Result code: %d\n" % resultcode) print "==== Command stdout ===" for line in output: sys.stdout.write(line) print "=======Command Stderr====" for line in err: sys.stdout.write(line) # vim: ts=4:sw=4:tw=78
sys.exit() try: opts, args = getopt.getopt(sys.argv[1:], "hl:p:c:", ["help", "log_path=", "port=", "config="]) except getopt.GetoptError: usage() sys.exit() for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt in ("-l", "--log_path"): log_path = arg elif opt in ("-p", "--port"): port = arg elif opt in ("-c", "--config"): config = arg resultcode, output, err = TimedExec.runTimedCmd(timeout, [sslexe, "-l", log_path, "-p", port, "-c", config]) print("".join(output)) if resultcode < 0: side = int(os.environ["_CONDOR_PROCNO"]) print("Timeout! Result code %d" % resultcode) if side == 0: raise TimeOutException("client") else: raise TimeOutException("server") # vim: ts=4:sw=4
if len(sys.argv) < 3: print("val number error") for string in sys.argv: print string path = sys.argv[1] host = "" port = sys.argv[2] config = sys.argv[3] print path, host, port, config if int(os.environ['_CONDOR_PROCNO']) == 0: #client = socketClient.Client(config) print("client start") print socket.gethostname(), socket.gethostbyname(socket.gethostname()) resultcode, output, err = TimedExec.runTimedCmd(clientTimeout, [client, config]) if resultcode < 0: print("Timeout! Result code: %d" % resultcode) raise TimeOutException("client") #client.demand() else: print("server start") #server = socketServer.Server(path, host, port) resultcode, output, err = TimedExec.runTimedCmd(serverTimeout, [server, path, host, port]) if resultcode < 0: print("Result code: %d" % resultcode) raise TimeOutException("server") #server.serve()
if len(sys.argv) < 3: print ("val number error") for string in sys.argv: print string path = sys.argv[1] host = "" port = sys.argv[2] config = sys.argv[3] print path, host, port, config if int(os.environ['_CONDOR_PROCNO']) == 0: #client = socketClient.Client(config) print ("client start") print socket.gethostname(), socket.gethostbyname(socket.gethostname()) resultcode,output,err=TimedExec.runTimedCmd(clientTimeout,[client, config]) if resultcode < 0: print("Timeout! Result code: %d" % resultcode) raise TimeOutException("client") #client.demand() else: print("server start") #server = socketServer.Server(path, host, port) resultcode,output,err=TimedExec.runTimedCmd(serverTimeout, [server, path, host, port]) if resultcode < 0: print("Result code: %d" % resultcode) raise TimeOutException("server") #server.serve()