Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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