Example #1
0
    def add_symlink(self, oid, name, link_size, dkey_count=1):
        akey = copy.deepcopy(self._dfs_inode_akey)
        value = VosValue(size=link_size)
        akey.add_value(value)

        dkey = DKey(key=name)
        dkey.set_count(dkey_count)
        dkey.add_value(akey)

        self._objects[oid].add_value(dkey)
Example #2
0
def _parse_dfs_sb_dkey(dkey_raw, iods, akey_count):
    key = ctypes.string_at(dkey_raw.iov_buf, dkey_raw.iov_buf_len)
    overhead = Overhead.META
    dkey = DKey(key=key.decode('utf-8'), overhead=overhead)

    for i in range(0, akey_count.value):
        akey = _create_akey(iods[i])
        dkey.add_value(akey)

    return dkey
Example #3
0
def get_dfs_sb_obj():
    try:
        dfs_sb = DFS_SB()
        dkey = dfs_sb.get_dfs_sb_dkey()
        dfs_inode = dfs_sb.get_dfs_inode_akey()
    except Exception as err:
        raise Exception(
            'Failed to get the DFS superblock VOS object: {0}'.format(err))

    sb_obj = VosObject()
    sb_obj.add_value(dkey)

    root_dkey = DKey(key='/', overhead=Overhead.USER)
    root_dkey.add_value(dfs_inode)
    sb_obj.add_value(root_dkey)

    return sb_obj
Example #4
0
    def test_add_value(self):
        with pytest.raises(VosValueError) as err:
            dkey = DKey(key="D-key 1")
            dkey.dump()
        assert "list of akeys must not be empty" in str(err.value) # nosec

        with pytest.raises(TypeError) as err:
            dkey = DKey(key="D-key 1")
            dkey.add_value("rubbish")
        assert "must be of type" in str(err.value) # nosec

        dkey = DKey(key="D-key 1")
        akey = AKey(
            key="A-key 1",
            value_type="single_value",
            values=self.test_data.create_values())
        dkey.add_value(akey)
        akey = AKey(
            key="A-key 2",
            value_type="array",
            values=self.test_data.create_values())
        dkey.add_value(akey)

        want = self.test_data.create_default_dkey()

        assert want == dkey.dump() # nosec
Example #5
0
    def _add_entry(self, oid, name, dkey_count=1):
        dkey = DKey(key=name)
        dkey.set_count(dkey_count)
        dkey.add_value(self._dfs_inode_akey)

        self._objects[oid].add_value(dkey)
Example #6
0
        def get_mock_dfs_superblock_obj(self):
            dkey_sb = DKey(key="DFS_SB_METADATA", overhead=Overhead.META)
            dkey_sb.add_value(self._create_sb_akey(key="DFS_MAGIC", size=8))
            dkey_sb.add_value(
                self._create_sb_akey(key="DFS_SB_VERSION", size=2))
            dkey_sb.add_value(
                self._create_sb_akey(key="DFS_LAYOUT_VERSION", size=2))
            dkey_sb.add_value(
                self._create_sb_akey(key="DFS_CHUNK_SIZE", size=8))
            dkey_sb.add_value(self._create_sb_akey(key="DFS_OBJ_CLASS",
                                                   size=2))

            inode_value = VosValue(size=64)
            akey_inode = AKey(key="DFS_INODE",
                              overhead=Overhead.META,
                              value_type=ValType.ARRAY)
            akey_inode.add_value(inode_value)
            dkey_root = DKey(key="/")
            dkey_root.add_value(akey_inode)

            superblock_obj = VosObject()
            superblock_obj.add_value(dkey_sb)
            superblock_obj.add_value(dkey_root)

            return superblock_obj