Beispiel #1
0
    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        
Beispiel #2
0
server.bind(("", options.port))
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.