On Mon, Aug 28, 2006 at 10:06:03AM +0200, Karel Zak wrote:
On Mon, Aug 28, 2006 at 12:18:52AM +0100, Daniel P. Berrange wrote:
> Attached is the patch for the qemu driver & daemon process
Cool pathes!
On first look (I hope I'm not too pedantic:-):
> +static int qemudParseUUID(const char *uuid,
> + unsigned char *rawuuid) {
We have virParseUUID() in xml.c, I think we should maintain more than
one version of same code.
Yes, be nice to re-factor helper methods into a dir which can be shared
between the daemon & libvirt
> + if (!(*argv = malloc(sizeof(char *) * *argc)))
> + return -1;
Please, virQemuError(VIR_ERR_NO_MEMORY ....) (same or calloc())
I forgot to mention in my posting - I simply return a generic -1, internal
error everywhere in the code. I'm planning to go through it again to add
in explicit, more useful error codes.
> + printf("Load VM %s\n", file);
> + if (!(xml = xmlReadDoc(BAD_CAST doc, file ? file : "domain.xml", NULL,
> + XML_PARSE_NOENT | XML_PARSE_NONET |
> + XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) {
> + printf("malformed\n");
> + return NULL;
> + }
printf()... it seems you forgot there your debug messages ;-)
yes, quite a few of those need taking out - to be done at same time as
error codes are added
> +static void qemudLoadConfig(struct qemud_server *server,
> + const char *file) {
> + FILE *fh;
> + struct stat st;
> + struct qemud_vm *vm;
> + char xml[QEMUD_MAX_XML_LEN];
> + int ret;
> +
> + if (!(fh = fopen(file, "r"))) {
> + return;
> + }
No error message?
This is run during initialization when it scans all config files in user's
$HOME/.qemu.d directory. Since the daemon is already running in the background
STDOUT & STDERR are already pointing to /dev/null. Of course during testing I
run it in foreground (hence the printf()'s, but ordinarily we wouldn't see
this. I think we need some very basically logging code to output issues like
this to $HOME/.qemud.d/daemon.log
> +static
> +int qemudBufferAdd(struct qemudBuffer *buf, const char *str) {
> + int need = strlen(str);
> +
> +static
> +int qemudBufferPrintf(struct qemudBuffer *buf,
> + const char *format, ...) {
Duplicate code?
Yes - needs re-factoring.
> + if (qemudBufferPrintf(&buf, "
<uuid>%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x</uuid>\n",
> + uuid[0], uuid[1], uuid[2], uuid[3],
> + uuid[4], uuid[5], uuid[6], uuid[7],
> + uuid[8], uuid[9], uuid[10], uuid[11],
> + uuid[12], uuid[13], uuid[14], uuid[15]) < 0)
It also seems there is again duplicate code do in test.c and xml.c.
Yes - needs re-factoring.
> + qemudBufferPrintf(&buf, " <graphics
type='vnc'/>\n");
no format args --> BufferAdd()
Opps, misssed that!
Dan
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|