Exemple #1
0
 def __init__(self, root, account, fs_object=None):
     self.root = root
     self.account = account
     self.datadir = os.path.join(self.root, self.account)
     if not check_mount(root, account):
         check_valid_account(account, fs_object)
     self.metadata = read_metadata(self.datadir)
     if not self.metadata or not validate_account(self.metadata):
         self.metadata = create_account_metadata(self.datadir)
Exemple #2
0
 def __init__(self, root, account, fs_object = None):
     self.root = root
     self.account = account
     self.datadir = os.path.join(self.root, self.account)
     if not check_mount(root, account):
         check_valid_account(account, fs_object)
     self.metadata = read_metadata(self.datadir)
     if not self.metadata or not validate_account(self.metadata):
         self.metadata = create_account_metadata(self.datadir)
Exemple #3
0
 def __init__(self,
              path,
              device,
              partition,
              account,
              container,
              logger,
              uid=DEFAULT_UID,
              gid=DEFAULT_GID,
              fs_object=None):
     self.root = path
     device = account
     if container:
         self.name = container
     else:
         self.name = None
     if self.name:
         self.datadir = os.path.join(path, account, self.name)
     else:
         self.datadir = os.path.join(path, device)
     self.account = account
     self.device_path = os.path.join(path, device)
     if not check_mount(path, device):
         check_valid_account(account, fs_object)
     self.logger = logger
     self.metadata = {}
     self.uid = int(uid)
     self.gid = int(gid)
     # Create a dummy db_file in /etc/swift
     self.db_file = '/etc/swift/db_file.db'
     if not os.path.exists(self.db_file):
         file(self.db_file, 'w+')
     self.dir_exists = os.path.exists(self.datadir)
     if self.dir_exists:
         try:
             self.metadata = read_metadata(self.datadir)
         except EOFError:
             create_container_metadata(self.datadir)
     else:
         return
     if container:
         if not self.metadata:
             create_container_metadata(self.datadir)
             self.metadata = read_metadata(self.datadir)
         else:
             if not validate_container(self.metadata):
                 create_container_metadata(self.datadir)
                 self.metadata = read_metadata(self.datadir)
     else:
         if not self.metadata:
             create_account_metadata(self.datadir)
             self.metadata = read_metadata(self.datadir)
         else:
             if not validate_account(self.metadata):
                 create_account_metadata(self.datadir)
                 self.metadata = read_metadata(self.datadir)
Exemple #4
0
 def __init__(self, path, device, partition, account, container, logger,
              uid=DEFAULT_UID, gid=DEFAULT_GID, fs_object=None):
     self.root = path
     device = account
     if container:
         self.name = container
     else:
         self.name = None
     if self.name:
         self.datadir = os.path.join(path, account, self.name)
     else:
         self.datadir = os.path.join(path, device)
     self.account = account
     self.device_path = os.path.join(path, device)
     if not check_mount(path, device):
         check_valid_account(account, fs_object)
     self.logger = logger
     self.metadata = {}
     self.uid = int(uid)
     self.gid = int(gid)
     # Create a dummy db_file in /etc/swift
     self.db_file = '/etc/swift/db_file.db'
     if not os.path.exists(self.db_file):
         file(self.db_file, 'w+')
     self.dir_exists = os.path.exists(self.datadir)
     if self.dir_exists:
         try:
             self.metadata = read_metadata(self.datadir)
         except EOFError:
             create_container_metadata(self.datadir)
     else:
         return
     if container:
         if not self.metadata:
             create_container_metadata(self.datadir)
             self.metadata = read_metadata(self.datadir)
         else:
             if not validate_container(self.metadata):
                 create_container_metadata(self.datadir)
                 self.metadata = read_metadata(self.datadir)
     else:
         if not self.metadata:
             create_account_metadata(self.datadir)
             self.metadata = read_metadata(self.datadir)
         else:
             if not validate_account(self.metadata):
                 create_account_metadata(self.datadir)
                 self.metadata = read_metadata(self.datadir)
Exemple #5
0
    def __init__(
        self,
        path,
        device,
        partition,
        account,
        container,
        obj,
        logger,
        keep_data_fp=False,
        disk_chunk_size=65536,
        uid=DEFAULT_UID,
        gid=DEFAULT_GID,
    ):
        self.disk_chunk_size = disk_chunk_size
        device = account
        # Don't support obj_name ending/begining with '/', like /a, a/, /a/b/ etc
        obj = obj.strip("/")
        if "/" in obj:
            self.obj_path, self.obj = obj.rsplit("/", 1)
        else:
            self.obj_path = ""
            self.obj = obj

        if self.obj_path:
            self.name = "/".join((container, self.obj_path))
        else:
            self.name = container
        # Absolute path for obj directory.
        self.datadir = os.path.join(path, device, self.name)

        self.device_path = os.path.join(path, device)
        if not check_mount(path, device):
            check_valid_account(account)

        self.container_path = os.path.join(path, device, container)
        self.tmpdir = os.path.join(path, device, "tmp")
        self.logger = logger
        self.metadata = {}
        self.meta_file = None
        self.data_file = None
        self.fp = None
        self.iter_etag = None
        self.started_at_0 = False
        self.read_to_eof = False
        self.quarantined_dir = None
        self.keep_cache = False
        self.is_dir = False
        self.is_valid = True
        self.uid = int(uid)
        self.gid = int(gid)
        if not os.path.exists(self.datadir + "/" + self.obj):
            return

        self.data_file = os.path.join(self.datadir, self.obj)
        self.metadata = read_metadata(self.datadir + "/" + self.obj)
        if not self.metadata:
            create_object_metadata(self.datadir + "/" + self.obj)
            self.metadata = read_metadata(self.datadir + "/" + self.obj)

        if not validate_object(self.metadata):
            create_object_metadata(self.datadir + "/" + self.obj)
            self.metadata = read_metadata(self.datadir + "/" + self.obj)

        self.filter_metadata()

        if os.path.isdir(self.datadir + "/" + self.obj):
            self.is_dir = True
        else:
            self.fp = do_open(self.data_file, "rb")
            if not keep_data_fp:
                self.close(verify_file=False)
Exemple #6
0
    def __init__(self,
                 path,
                 device,
                 partition,
                 account,
                 container,
                 obj,
                 logger,
                 keep_data_fp=False,
                 disk_chunk_size=65536,
                 uid=DEFAULT_UID,
                 gid=DEFAULT_GID,
                 fs_object=None):
        self.disk_chunk_size = disk_chunk_size
        device = account
        #Don't support obj_name ending/begining with '/', like /a, a/, /a/b/ etc
        obj = obj.strip('/')
        if '/' in obj:
            self.obj_path, self.obj = obj.rsplit('/', 1)
        else:
            self.obj_path = ''
            self.obj = obj

        if self.obj_path:
            self.name = '/'.join((container, self.obj_path))
        else:
            self.name = container
        #Absolute path for obj directory.
        self.datadir = os.path.join(path, device, self.name)

        self.device_path = os.path.join(path, device)
        if not check_mount(path, device):
            check_valid_account(account, fs_object)

        self.container_path = os.path.join(path, device, container)
        self.tmpdir = os.path.join(path, device, 'tmp')
        self.logger = logger
        self.metadata = {}
        self.meta_file = None
        self.data_file = None
        self.fp = None
        self.iter_etag = None
        self.started_at_0 = False
        self.read_to_eof = False
        self.quarantined_dir = None
        self.keep_cache = False
        self.is_dir = False
        self.is_valid = True
        self.uid = int(uid)
        self.gid = int(gid)
        if not os.path.exists(self.datadir + '/' + self.obj):
            return

        self.data_file = os.path.join(self.datadir, self.obj)
        self.metadata = read_metadata(self.datadir + '/' + self.obj)
        if not self.metadata:
            create_object_metadata(self.datadir + '/' + self.obj)
            self.metadata = read_metadata(self.datadir + '/' + self.obj)

        if not validate_object(self.metadata):
            create_object_metadata(self.datadir + '/' + self.obj)
            self.metadata = read_metadata(self.datadir + '/' + self.obj)

        self.filter_metadata()

        if os.path.isdir(self.datadir + '/' + self.obj):
            self.is_dir = True
        else:
            self.fp = do_open(self.data_file, 'rb')
            if not keep_data_fp:
                self.close(verify_file=False)