def createcfgs(self, lock, postprocess): # Get the subscription list subscriptions = Subscriber() subscriptions.read(Configuration.variables['VTRoot']+'/data/subscriptions.xml') # Message list messages = [] # For a given dataset get all the subscripted templates if subscriptions.map.has_key(self.__dataset): for template, interface in subscriptions.map[self.__dataset].iteritems(): # open the associated template file tfile = open(template, 'r') tobject = Template(tfile.read()) tfile.close() # create the proper source string string = 'source = PoolSource{\n\nuntracked vstring fileNames = {\n' for i in range(len(self.__lfns)): if i == len(self.__lfns) - 1: string = string + '\'' + self.__lfns[i] + '\'\n' else: string = string + '\'' + self.__lfns[i] + '\',\n' string = string + '}\n}\n' # creates a config file lock.acquire() if os.path.isdir(Configuration.variables['DropBox'] + '/CfgFiles/' + self.__release + '/') == False: os.mkdir(Configuration.variables['DropBox'] + '/CfgFiles/' + self.__release + '/') lock.release() cfgfile = Configuration.variables['DropBox'] + '/CfgFiles/' + self.__release + '/' + self.__dataset + '__' + template.split('/')[-1].split('.')[0] + '.cfg' cfile = open(cfgfile, 'w') cfile.write( tobject.safe_substitute(lfns=string, dataset=self.__dataset) ) cfile.close() # Add a message for submitting the job message = {} message['startjob'] = { 'groupid' : 'None', 'interface' : str(interface), 'release' : self.__release, 'cfgfile' : str(cfgfile), 'postprocess' : postprocess } messages.append(message) return messages
server.listen(Configuration.variables["PortPollTime"]) # Have the server serve "forever": while True: channel, details = server.accept() message = pickle.loads(channel.recv(2048)) # Message decoding if message.has_key("startlisten"): release = message["startlisten"]["release"] site = message["startlisten"]["site"] trigger = message["startlisten"]["trigger"] subscriptions = Subscriber() subscriptions.read(Configuration.variables["VTRoot"] + "/data/subscriptions.xml") for dataset, subscriptions in subscriptions.map.iteritems(): listenid = release + "_" + dataset + "_" + site + "_" + trigger pool[listenid] = { "release": release, "dataset": dataset, "site": site, "trigger": trigger, "status": "NoUpdate", } message["startlisten"]["dataset"] = dataset queue.put(pickle.dumps(message)) # Some wiered behavior from the blocking queue. elif message.has_key("listenreport"):