From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43292 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCP82-0001oc-7e for qemu-devel@nongnu.org; Wed, 12 May 2010 23:30:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCKJE-0001Df-2C for qemu-devel@nongnu.org; Wed, 12 May 2010 18:21:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:8910) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCKJC-0001DM-Uv for qemu-devel@nongnu.org; Wed, 12 May 2010 18:21:43 -0400 Received: from int-mx05.intmail.prod.int.phx2.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.18]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o4CLHHgD009413 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 May 2010 17:17:18 -0400 Date: Wed, 12 May 2010 18:17:12 -0300 From: Luiz Capitulino Subject: Re: [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Message-ID: <20100512181712.5637f26f@redhat.com> In-Reply-To: References: <1273086712-29163-1-git-send-email-lcapitulino@redhat.com> <1273086712-29163-2-git-send-email-lcapitulino@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: bazulay@redhat.com, juzhang@redhat.com, qemu-devel@nongnu.org On Wed, 12 May 2010 18:48:38 +0200 Markus Armbruster wrote: > > +query-block > > +----------- > > + > > +Show the block devices. > > + > > +Each block device information is stored in a json-object and the returned value > > +is a json-array of all devices. > > + > > +Each json-object contain the following: > > + > > +- "device": device name (json-string) > > +- "type": device type (json-string) > > Possible values? "hd", "cdrom", "floppy". Code also has "unknown", but > when it uses that, it's badly broken. Yes, but you didn't mean we shouldn't use 'unknown', right? > > +- "removable": true if the device is removable, false otherwise (json-bool) > > +- "locked": true if the device is locked, false otherwise (json-bool) > > +- "inserted": only present if the device is inserted, it is a json-object > > + containing the following: > > + - "file": device file name (json-string) > > + - "ro": true if read-only, false otherwise (json-bool) > > + - "drv": driver format name (json-string) > > Possible values? I got the following list by grepping the code. Kevin, can you confirm it's correct? "blkdebug", "bochs", "cloop", "cow", "dmg", "file", "file", "ftp", "ftps", "host_cdrom", "host_cdrom", "host_device", "host_device", "host_floppy", "http", "https", "nbd", "parallels", "qcow", "qcow2", "raw", "tftp", "vdi", "vmdk", "vpc", "vvfat" > > +query-cpus > > +---------- > > + > > +Show CPU information. > > + > > +Return a json-array. Each CPU is represented by a json-object, which contains: > > + > > +- "cpu": CPU index (json-int) > > It's actually upper case (see example below). I hate that. Hm, this one leaked.. But it's quite minor anyway. > > +- "current": true if this is the current CPU, false otherwise (json-bool) > > +- "halted": true if the cpu is halted, false otherwise (json-bool) > > +- Current program counter. The key's name depends on the architecture: > > + "pc": i386/x86_64 (json-int) > > + "nip": PPC (json-int) > > + "pc" and "npc": sparc (json-int) > > + "PC": mips (json-int) > > Key name depending on arch: isn't that an extraordinarily bad idea? Honestly, I don't think it's that bad: it's a form of optional key, but if you think it's so bad I can add a "arch" key with the arch's name. Don't think anyone is using this, anyway. > > +query-migrate > > +------------- > > + > > +Migration status. > > + > > +Return a json-object. If migration is active there will be another json-object > > +with RAM migration status and if block migration is active another one with > > +block migration status. > > + > > +The main json-object contains the following: > > + > > +- "status": migration status (json-string) > > Possible values? "active", "completed", "failed", "cancelled". Note > there's no value for "never attempted"; see below. > > > +- "ram": only present if "status" is "active", it is a json-object with the > > + following RAM information (in bytes): > > + - "transferred": amount transferred (json-int) > > + - "remaining": amount remaining (json-int) > > + - "total": total (json-int) > > +- "disk": only present if "status" is "active" and it is a block migration, > > + it is a json-object with the following disk information (in bytes): > > + - "transferred": amount transferred (json-int) > > + - "remaining": amount remaining (json-int) > > + - "total": total (json-int) > > Before the first migration, we actually reply with > > {"return": {}} > > which contradicts the doc. Good catch, what would be the best behavior here? > > +Example: > > + > > +{ > > + "return":[ > > + { > > + "bus":0, > > + "devices":[ > > + { > > + "bus":0, > > + "qdev_id":"", > > + "slot":0, > > + "class_info":{ > > + "class":1536, > > + "desc":"Host bridge" > > + }, > > + "id":{ > > + "device":32902, > > + "vendor":4663 > > + }, > > + "function":0, > > + "regions":[ > > + > > + ] > > Suggest to simply write > > "regions":[] I could, and I agree it's better, but I'm using a formatting tool, so editing by hand would be a PITA. > > +Note: This example has been shortened as the real response is too long. > > Actually, I get a shorter response for my minimal guest: just slots > 0..3. Suggest to omit slot 4 and this note. What's the command-line for it? > > +query-vnc > > +--------- > > + > > +Show VNC server information. > > + > > +Return a json-object with server information. Connected clients are returned > > +as a json-array of json-objects. > > + > > +The main json-object contains the following: > > + > > +- "enabled": true or false (json-bool) > > +- "host": server's IP address (json-string) > > Wouldn't hurt to mention it can be a wildcard address. The example > below shows the IPv4 wildcard address "0.0.0.0". > > > +- "family": address family (json-string, "ipv4" or "ipv6") > > inet_strfamily() can also return "unix" and "unknown". > > By the way, we use PF_INET6, PF_INET and PF_UNIX there. To be > pedantically correct, we should use AF_INET6, AF_INET and AF_LOCAL. > > > +- "service": server's port number (json-string) > > Why isn't this json-int? Because getnameinfo() returns a string and I didn't bother using it, do you?