Changeset 476

Show
Ignore:
Timestamp:
05/21/08 11:16:54 (8 months ago)
Author:
jmowery
Message:

more storage fixes: locking, export and clean

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/trunk-pmd-intproto/server/storage.py

    r475 r476  
    428428                        applied_file = self.get_current(file) 
    429429                        if applied_file: 
    430                                 dest_file = os.path.join(dest_path, os.path.basename(applied_file)) 
     430                                dest_file = os.path.join(dest_path, get_local_name(applied_file)) 
    431431                                shutil.copy2(applied_file, dest_file) 
    432432                                os.chmod(dest_file, os.stat(dest_file)[stat.ST_MODE]|stat.S_IWUSR) 
     
    623623        def clean(self, names, recursive=False): 
    624624                '''For each file or directory in names remove all storage files with timestamps newer than the applied time.''' 
    625                 if not storage: 
     625                if not self.storage: 
    626626                        raise RuntimeError, 'Attempt to clean uncontrolled layer.' 
    627627                if names.__class__ == [].__class__: 
     
    641641                        if recursive: 
    642642                                self.clean(self.list_controlled_dirs(), recursive) 
     643                        self.rollback(name='.', recursive=recursive) #will call update() no need to call again 
    643644                        return 
    644645                elif self.entries[name].type == 'DIR' or self.entries[name].type == 'LOCAL': 
     
    655656                                if f.startswith(name): 
    656657                                        if int(get_timestamp(f)) > self.entries[name].applied: 
    657                                                 os.remove(f) 
     658                                                os.remove(os.path.join(self.storage.storage_dir, f)) 
     659                                                self.modified = True 
    658660                self.update() #call again to update latest entries 
    659661 
     
    840842        def lock(self, names=['.'], recursive=False): 
    841843                '''Lock each file or directory in names preventing modifications other than rollback.''' 
    842                 if not self.stprage: 
     844                if not self.storage: 
    843845                        raise RuntimeError, 'Attempt to lock files in uncontroled layer.' 
    844846                if names.__class__ == [].__class__: 
    845847                        for name in names: 
    846848                                self.lock(name, recursive) 
    847                 name = os.path.basename(name
     849                name = os.path.basename(names
    848850                if not self.entries.has_key(name): 
    849851                        raise ValueError, 'Layer \'' + self.name + '\' has no entry for \'' + name +'\'.' 
     
    874876        def unlock(self, names=['.'], recursive=False): 
    875877                '''Unlock each file or directory in names.''' 
    876                 if not self.stprage: 
     878                if not self.storage: 
    877879                        raise RuntimeError, 'Attempt to lock files in uncontroled layer.' 
    878880                if names.__class__ == [].__class__: 
    879881                        for name in names: 
    880882                                self.unlock(name, recursive) 
    881                 name = os.path.basename(name
     883                name = os.path.basename(names
    882884                if not self.entries.has_key(name): 
    883885                        raise ValueError, 'Layer \'' + self.name + '\' has no entry for \'' + name +'\'.'