Ejemplo n.º 1
0
 def _parse_dva(self, data):
     dva = OODict()
     su = StreamUnpacker(data)
     i = su.uint64()
     dva.asize = get_bits(i, 0, 24) << SPA_MINBLOCKSHIFT
     dva.grid = get_bits(i, 24, 8)
     dva.vdev = get_bits(i, 32, 32)
     i = su.uint64()
     dva.offset = get_bits(i, 0, 63) << SPA_MINBLOCKSHIFT
     if get_bits(i, 63, 1):
         dva.G = True
     else:
         dva.G = False
     return dva
Ejemplo n.º 2
0
    def __init__(self, data):
        f = StreamUnpacker(data)
        self.z_acl_extern_obj = f.uint64()
        self.z_acl_count = f.uint32()
        self.z_acl_version = f.uint16()

        self.z_ace_data = []
        for data in split_records(data[16:], ACL_T_SIZE):
            acl = OODict()
            f = StreamUnpacker(data)
            acl.a_who = f.uint64()
            acl.a_access_mask = f.uint32()
            acl.a_flags, acl.a_type = f.repeat('uint16', 2)
            self.z_ace_data.append(acl)
Ejemplo n.º 3
0
 def strip(cls, nvlist):
     """
     Strip a nvlist dict to an simple OODict
     """
     striped = OODict() 
     for pair in nvlist['nvpairs']:
         pt = pair['type']
         pn = pair['name']
         pv = pair['value']
         #print pt, pn, pv 
         if 'NVLIST_ARRAY' in pt:
             striped[pn] = []
             for v in pv:
                 striped[pn].append(cls.strip(v))
         else:
             if 'NVLIST' in pt:
                 striped[pn] = cls.strip(pv)
             else:
                 striped[pn] = pv
     return striped