Esempio n. 1
0
    def update_object_count(self):
        objects = []
        object_count = 0
        bytes_used = 0
        objects, object_count, bytes_used = get_container_details(self.datadir)

        #print 'cont', object_count, self.metadata
        
        if int(self.metadata[X_OBJECTS_COUNT]) != object_count or \
           int(self.metadata[X_BYTES_USED]) != bytes_used:
            self.metadata[X_OBJECTS_COUNT] = object_count
            self.metadata[X_BYTES_USED] = bytes_used
            self.update_container(self.metadata)
Esempio n. 2
0
    def list_container_objects(self, limit, marker, end_marker,
                               prefix, delimiter, path, out_content_type):
        """
        Returns tuple of name, created_at, size, content_type, etag.
        """
        if path:
            prefix = path = path.rstrip('/') + '/'
            delimiter = '/'
        if delimiter and not prefix:
            prefix = ''

        #print 'Container_list prefix, del, datadir', prefix,\
                                                   #delimiter, self.datadir

        objects = []
        object_count = 0
        bytes_used = 0
        container_list = []

        objects, object_count, bytes_used = get_container_details(self.datadir,
                                                                  self.memcache)

        #print 'cont', object_count, self.metadata

        if int(self.metadata[X_OBJECTS_COUNT]) != object_count or \
           int(self.metadata[X_BYTES_USED]) != bytes_used:
            self.metadata[X_OBJECTS_COUNT] = object_count
            self.metadata[X_BYTES_USED] = bytes_used
            self.update_container(self.metadata)

        if objects:
            objects.sort()

        if objects and prefix:
            objects = self.filter_prefix(objects, prefix)

        if objects and delimiter:
            objects = self.filter_delimiter(objects, delimiter, prefix)

        if objects and marker:
            objects = self.filter_marker(objects, marker)

        if objects and end_marker:
            objects = self.filter_end_marker(objects, end_marker)

        if objects and limit:
            if len(objects) > limit:
                objects = self.filter_limit(objects, limit)

        if objects:
            for obj in objects:
                list_item = []
                metadata = None
                list_item.append(obj)
                if out_content_type != 'text/plain':
                    metadata = read_metadata(self.datadir + '/' + obj)
                    if not metadata:
                        metadata = create_object_metadata(self.datadir + '/' + obj)
                #print 'Gaurav list_obj meta', metadata
                if metadata:
                    list_item.append(metadata[X_TIMESTAMP])
                    list_item.append(metadata[X_CONTENT_LENGTH])
                    list_item.append(metadata[X_CONTENT_TYPE])
                    list_item.append(metadata[X_ETAG])
                container_list.append(list_item)

        #print 'Gaurav list_container objs', container_list
        return container_list