def __init__(self, pilot_data=None, data_unit_description=None, du_url=None): """ 1.) create a new Pilot Data: pilot_data_service and data_unit_description required 2.) reconnect to an existing Pilot Data: du_url required """ if du_url==None: self.id = self.DU_ID_PREFIX + str(uuid.uuid1()) self.data_unit_description = data_unit_description self.pilot_data=[] self.state = State.New self.data_unit_items=[] if self.data_unit_description.has_key("file_urls"): self.data_unit_items = DataUnitItem.create_data_unit_list(self, self.data_unit_description["file_urls"]) self.url = None # register a data unit as top-level entry in Redis application_url = CoordinationAdaptor.get_base_url(application_id) self.url = CoordinationAdaptor.add_du(application_url, self) CoordinationAdaptor.update_du(self) # Deprecated # old method only allowed the creation of a du if a pd existed #if pilot_data!=None: # # Allow data units that are not connected to a resource! # self.url = CoordinationAdaptor.add_du(pilot_data.url, self) # CoordinationAdaptor.update_du(self) else: self.id = DataUnit._get_du_id(du_url) self.url = du_url logger.debug("Restore du: %s"%self.id) self.__restore_state() self.transfer_threads=[]
def __add_pilot_data(self, pilot_data): logger.debug("add du to pilot data") if len(self.pilot_data) > 0: # copy files from other pilot data self.pilot_data[0].copy_du(self, pilot_data) else: # copy files from original location pilot_data.put_du(self) self.pilot_data.append(pilot_data) self._update_state(State.Running) #self.url = CoordinationAdaptor.add_du(pilot_data.url, self) CoordinationAdaptor.update_du(self)
def __add_pilot_data(self, pilot_data): logger.debug("add du to pilot data") if len(self.pilot_data) > 0: # copy files from other pilot data self.pilot_data[0].copy_du(self, pilot_data) else: # copy files from original location pilot_data.put_du(self) self.pilot_data.append(pilot_data) self.state = State.Running #self.url = CoordinationAdaptor.add_du(pilot_data.url, self) CoordinationAdaptor.update_du(self)
def add_files(self, file_url_list=[]): """Add files referenced in list to Data Unit""" self.state = State.Pending item_list = DataUnitItem.create_data_unit_from_urls(None, file_url_list) for i in item_list: self.data_unit_items.append(i) CoordinationAdaptor.update_du(self) if len(self.pilot_data) > 0: for i in self.pilot_data: logger.debug("Update Pilot Data %s" % (i.get_url())) i.put_du(self) CoordinationAdaptor.update_du(self)
def add_files(self, file_url_list=[]): """Add files referenced in list to Data Unit""" self.state = State.Pending item_list = DataUnitItem.create_data_unit_from_urls( None, file_url_list) for i in item_list: self.data_unit_items.append(i) CoordinationAdaptor.update_du(self) if len(self.pilot_data) > 0: for i in self.pilot_data: logger.debug("Update Pilot Data %s" % (i.get_url())) i.put_du(self) CoordinationAdaptor.update_du(self)
def __add_pilot_data(self, pilot_data): logger.debug("DU add_pilot_data: add DU to pilot data in Thread") self._update_state(State.Pending) if len(self.pilot_data) > 0: # copy files from other pilot data self.pilot_data[0].copy_du(self, pilot_data) else: # copy files from original location pilot_data.put_du(self) logger.debug("DU add_pilot_data: Copy/Put DU to pilot data successfull") self.pilot_data.append(pilot_data) self._update_state(State.Running) logger.debug("DU add_pilot_data: Updated State") #self.url = CoordinationAdaptor.add_du(pilot_data.url, self) CoordinationAdaptor.update_du(self)
def __add_pilot_data(self, pilot_data): logger.debug("DU add_pilot_data: add DU to pilot data in Thread") self._update_state(State.Pending) if len(self.pilot_data) > 0: # copy files from other pilot data self.pilot_data[0].copy_du(self, pilot_data) else: # copy files from original location pilot_data.put_du(self) logger.debug( "DU add_pilot_data: Copy/Put DU to pilot data successfull") self.pilot_data.append(pilot_data) self._update_state(State.Running) logger.debug("DU add_pilot_data: Updated State") #self.url = CoordinationAdaptor.add_du(pilot_data.url, self) CoordinationAdaptor.update_du(self)
def __init__(self, pilot_data=None, data_unit_description=None, du_url=None): """ 1.) create a new Pilot Data: pilot_data_service and data_unit_description required 2.) reconnect to an existing Pilot Data: du_url required """ if du_url == None: self.id = self.DU_ID_PREFIX + str(uuid.uuid1()) self.data_unit_description = data_unit_description self.pilot_data = [] self.state = State.New self.data_unit_items = [] if self.data_unit_description.has_key("file_urls"): self.data_unit_items = DataUnitItem.create_data_unit_list( self, self.data_unit_description["file_urls"]) self.url = None # register a data unit as top-level entry in Redis application_url = CoordinationAdaptor.get_base_url(application_id) self.url = CoordinationAdaptor.add_du(application_url, self) CoordinationAdaptor.update_du(self) # Deprecated # old method only allowed the creation of a du if a pd existed #if pilot_data!=None: # # Allow data units that are not connected to a resource! # self.url = CoordinationAdaptor.add_du(pilot_data.url, self) # CoordinationAdaptor.update_du(self) else: self.id = DataUnit._get_du_id(du_url) self.url = du_url logger.debug("Restore du: %s" % self.id) self.__restore_state() self.transfer_threads = []
def _update_state(self, state): """ Internal method for updating state""" self.state=state logger.debug("Update DU state to " + state + " Number of PD: " + str(len(self.pilot_data))) if len(self.pilot_data) > 0: CoordinationAdaptor.update_du(self)
def remove_files(self, file_urls): """Remove files from Data Unit (NOT implemented yet""" # TODO #self.data_unit_items.remove(input_data_unit) if len(self.pilot_data) > 0: CoordinationAdaptor.update_du(self)
def cancel(self): """ Cancel the Data Unit. """ self.state = State.Done if len(self.pilot_data) > 0: CoordinationAdaptor.update_du(self)
def _update_state(self, state): """ Internal method for updating state""" self.state = state if len(self.pilot_data) > 0: CoordinationAdaptor.update_du(self)