Source code for nornir_volumemodel.model.base_classes

'''
Created on Apr 11, 2014

@author: u0490822
'''

import os

[docs] class ModelBase(object): '''Properties common to all volume objects''' @property def Version(self): return self._Version @Version.setter def Version(self, Value): self._Version = Value def __init__(self): self._Version = None self._Parent = None
[docs] class ExternalResource(ModelBase): '''Properties of objects whose data is stored outside the object file structure, such as on a file system''' @property def Parent(self): return self._Parent @Parent.setter def Parent(self, Value): self._Parent = Value @property def Path(self): return self._Path @Path.setter def Path(self, val): self._Path = val if hasattr(self, '__fullpath'): del self.__dict__['__fullpath'] @property def RelativePath(self): '''Relative path from volume root''' RelPathStr = self.__dict__.get('__relpath', None) if self._Parent is None: return '' if RelPathStr is None: RelPathStr = self.Path if(not hasattr(self, '_Parent')): raise Exception("FullPath could not be generated for resource") IterElem = self.Parent while not IterElem is None: if hasattr(IterElem, 'RelativePath'): RelPathStr = os.path.join(IterElem.RelativePath, RelPathStr) IterElem = None break elif hasattr(IterElem, '_Parent'): IterElem = IterElem._Parent else: raise Exception("FullPath could not be generated for resource") self.__dict__['__relpath'] = RelPathStr return RelPathStr @property def FullPath(self): FullPathStr = self.__dict__.get('__fullpath', None) if FullPathStr is None: FullPathStr = self.Path if(not hasattr(self, '_Parent')): raise Exception("FullPath could not be generated for resource") IterElem = self.Parent while not IterElem is None: if hasattr(IterElem, 'FullPath'): FullPathStr = os.path.join(IterElem.FullPath, FullPathStr) IterElem = None break elif hasattr(IterElem, '_Parent'): IterElem = IterElem._Parent else: raise Exception("FullPath could not be generated for resource") self.__dict__['__fullpath'] = FullPathStr return FullPathStr def __init__(self): self._Path = None
[docs] class DirectoryResource(ExternalResource): pass
[docs] class Named(): '''Object that contains other objects. Path always refers to a directory''' @property def Name(self): return self._Name @Name.setter def Name(self, val): self._Name = val def __init__(self): self._Name = None def __str__(self): return self.Name
[docs] class Numbered(): '''Object that contains other objects. Path always refers to a directory''' @property def Number(self): return self._Number @Number.setter def Number(self, val): self._Number = val def __init__(self): self._Number = None def __str__(self): return "%d" % self.Number
[docs] class FileResource(ExternalResource): '''Represents a file''' @property def Type(self): return self._type @Type.setter def Type(self, value): self._type = value @property def Checksum(self): return self._checksum @Checksum.setter def Checksum(self, val): assert(isinstance(val, bytes)) self._checksum = val def __init__(self): self._type = None self._checksum = None