def __init__(self, host, path, mode, dryrun):
        """ Initialize.

        host is ignored.
        path is the file system location of the read-only subvolumes.

        """
        # Don't lose a trailing slash -- it's significant
        path = os.path.abspath(path) + ("/" if path.endswith("/") else "")

        super(ButterStore, self).__init__(host, path, mode, dryrun)

        if not os.path.isdir(self.userPath):
            raise Exception("'%s' is not an existing directory" % (self.userPath))

        self.isDiffStore = True

        self.butter = Butter.Butter(dryrun)  # subprocess command-line interface
        self.btrfs = btrfs.FileSystem(self.userPath)     # ioctl interface

        # Dict of {uuid: <btrfs.Volume>}
        self.butterVolumes = {}

        # Volumes to be deleted using the '--delete' option.
        # Initialized to hold all volumes inside destination directory,
        # Then volumes in source are "kept", and removed from extraVolumes.
        self.extraVolumes = {}
def __init__ ( self , host , path , mode , dryrun ) : path = os . path . abspath ( path ) + ( "/" if path . endswith ( "/" ) else "" ) super ( ButterStore , self ) . __init__ ( host , path , mode , dryrun ) if not os . path . isdir ( self . userPath ) : raise Exception ( "'%s' is not an existing directory" % ( self . userPath ) ) self . isDiffStore = True self . butter = Butter . Butter ( dryrun ) self . btrfs = btrfs . FileSystem ( self . userPath ) self . butterVolumes = { } self . extraVolumes = { }
Initialize.

        host is ignored.
        path is the file system location of the read-only subvolumes.