def _info_roots(self, disks): """ Queries root disks for information """ us = UDPSocket() disk_info = {} for disk in disks: # Create packet and sent it qd_pkt = uSanProto.Disks.query(disk) qaddr = (disk, MICROSAN_PORT) us.send_data(qd_pkt, qaddr) while True: try: us.recv_data() except: break # We've got reply replies = us.buf us.clear_buf() # Parse replies for reply_info in replies: qd_rpkt = reply_info[0] qr_data = uSanProto.Disks.parse_query_reply(qd_rpkt) disk_data = uSanProto.Disks.parse_disk_info(qr_data[3]) disk_info[disk] = disk_data us.close() return disk_info
def _query_part(self, part_ipaddr): """ Queries partition information by ip address """ us = UDPSocket() qp_pkt = uSanProto.Partitions.query_part() qaddr = (part_ipaddr, MICROSAN_PORT) us.send_data(qp_pkt, qaddr) while True: try: us.recv_data() except: break part_info = us.buf us.close() return part_info
def _get_parts(self, disk, parts): """ Queries partitions info """ us = UDPSocket() part_infos = [] for part_num in range(1, parts + 1): qp_pkt = uSanProto.Partitions.query_root(disk, part_num) qaddr = (disk, MICROSAN_PORT) us.send_data(qp_pkt, qaddr) while True: try: us.recv_data() except: break part_infos.extend(us.buf) us.clear_buf() us.close() return part_infos