Devel
Threads by month
- ----- 2026 -----
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- 51 participants
- 40075 discussions
26 May '11
Hi.
As reported by Diego Blanco in
- https://bugzilla.redhat.com/show_bug.cgi?id=702602
commit f0443765 which replaced openvz_readline to getline(3)
broke OpenVZ driver as it changed semantics of EOF-handling
when parsing OpenVZ configuration.
There're several other issues reported with current OpenVZ driver:
#1: unclear error message when parsing "CPUS=" line
#2: openvz driver goes into crashing loop
#3: "NETIF=" line in configuration is not parsed correctly
#4: aborts even when optional parameter is missing
#5: there's a potential memory leak
In this email, I'm sending in updated patch to fix #[145].
This patch does not fix #[23] as I haven't verified these yet,
but this at least got me to run OpenVZ on libvirt once again.
This patch applies to latest git, and I verified that both
"make check" and "make syntax-check" passes (except
for check_author_list check).
Best Regards,
> --- Comment #3 from Cole Robinson <crobinso(a)redhat.com> 2011-05-18 09:34:21 EDT ---
> Thanks for the report and the patch. However, libvirt devs generally don't
> review patches in bugzilla. Can you please send your patch to
> libvirt-list(a)redhat.com, and ensure that it applied against latest upstream,
> and that make check and make syntax-check both pass?
>
> When the patch is applied, we can close this bug. Thanks!
>
> --
> Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug.
>
2
1
Coverity spotted this off-by-one. Thankfully, no one in libvirt
was ever calling virAuditSend with an argument of 3.
* src/util/virtaudit.c (virAuditSend): Use correct comparison.
---
src/util/virtaudit.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/util/virtaudit.c b/src/util/virtaudit.c
index 2f1a529..560f7b7 100644
--- a/src/util/virtaudit.c
+++ b/src/util/virtaudit.c
@@ -1,7 +1,7 @@
/*
* virtaudit.c: auditing support
*
- * Copyright (C) 2010 Red Hat, Inc.
+ * Copyright (C) 2010-2011 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -123,7 +123,7 @@ void virAuditSend(const char *file ATTRIBUTE_UNUSED, const char *func,
[VIR_AUDIT_RECORD_RESOURCE] = AUDIT_VIRT_RESOURCE,
};
- if (type > ARRAY_CARDINALITY(record_types) || record_types[type] == 0)
+ if (type >= ARRAY_CARDINALITY(record_types) || record_types[type] == 0)
VIR_WARN("Unknown audit record type %d", type);
else if (audit_log_user_message(auditfd, record_types[type], str, NULL,
clientaddr, clienttty, success) < 0) {
--
1.7.4.4
2
2
[libvirt] [PATCH] qemu: allow blkstat/blkinfo calls during migration
by Federico Simoncelli 26 May '11
by Federico Simoncelli 26 May '11
26 May '11
References:
- https://www.redhat.com/archives/libvir-list/2011-May/msg00210.html
- https://www.redhat.com/archives/libvir-list/2011-May/msg00287.html
---
src/qemu/qemu_domain.c | 6 +++
src/qemu/qemu_domain.h | 7 ++++
src/qemu/qemu_driver.c | 86 +++++++++++++++++++++++++++++++--------------
src/qemu/qemu_migration.c | 31 ++++++++++++++++
4 files changed, 103 insertions(+), 27 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index c61f9bf..d4e53c4 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -526,6 +526,12 @@ int qemuDomainObjBeginJob(virDomainObjPtr obj)
priv->jobStart = timeval_to_ms(now);
memset(&priv->jobInfo, 0, sizeof(priv->jobInfo));
+ if (virCondInit(&priv->signalCond) < 0) {
+ virReportSystemError(errno,
+ "%s", _("cannot initialize signal condition"));
+ return -1;
+ }
+
return 0;
}
diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h
index 6d24f53..b82986c 100644
--- a/src/qemu/qemu_domain.h
+++ b/src/qemu/qemu_domain.h
@@ -47,11 +47,17 @@ enum qemuDomainJobSignals {
QEMU_JOB_SIGNAL_SUSPEND = 1 << 1, /* Request VM suspend to finish live migration offline */
QEMU_JOB_SIGNAL_MIGRATE_DOWNTIME = 1 << 2, /* Request migration downtime change */
QEMU_JOB_SIGNAL_MIGRATE_SPEED = 1 << 3, /* Request migration speed change */
+ QEMU_JOB_SIGNAL_BLKSTAT = 1 << 4, /* Request blkstat during migration */
+ QEMU_JOB_SIGNAL_BLKINFO = 1 << 5, /* Request blkinfo during migration */
};
struct qemuDomainJobSignalsData {
unsigned long long migrateDowntime; /* Data for QEMU_JOB_SIGNAL_MIGRATE_DOWNTIME */
unsigned long migrateBandwidth; /* Data for QEMU_JOB_SIGNAL_MIGRATE_SPEED */
+ char *devname; /* Device name used by blkstat/blkinfo calls */
+ int returnCode; /* Return code for the blkstat/blkinfo calls */
+ virDomainBlockStatsPtr blockStat; /* Block statistics for QEMU_JOB_SIGNAL_BLKSTAT */
+ virDomainBlockInfoPtr blockInfo; /* Block information for QEMU_JOB_SIGNAL_BLKINFO */
};
typedef struct _qemuDomainPCIAddressSet qemuDomainPCIAddressSet;
@@ -61,6 +67,7 @@ typedef struct _qemuDomainObjPrivate qemuDomainObjPrivate;
typedef qemuDomainObjPrivate *qemuDomainObjPrivatePtr;
struct _qemuDomainObjPrivate {
virCond jobCond; /* Use in conjunction with main virDomainObjPtr lock */
+ virCond signalCond; /* Use in conjunction with main virDomainObjPtr lock */
enum qemuDomainJob jobActive; /* Currently running job */
unsigned int jobSignals; /* Signals for running job */
struct qemuDomainJobSignalsData jobSignalsData; /* Signal specific data */
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 0fd0f10..f9f5e83 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5031,13 +5031,10 @@ qemudDomainBlockStats (virDomainPtr dom,
goto cleanup;
}
- if (qemuDomainObjBeginJob(vm) < 0)
- goto cleanup;
-
if (!virDomainObjIsActive(vm)) {
qemuReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is not running"));
- goto endjob;
+ goto cleanup;
}
for (i = 0 ; i < vm->def->ndisks ; i++) {
@@ -5050,29 +5047,48 @@ qemudDomainBlockStats (virDomainPtr dom,
if (!disk) {
qemuReportError(VIR_ERR_INVALID_ARG,
_("invalid path: %s"), path);
- goto endjob;
+ goto cleanup;
}
if (!disk->info.alias) {
qemuReportError(VIR_ERR_INTERNAL_ERROR,
_("missing disk device alias name for %s"), disk->dst);
- goto endjob;
+ goto cleanup;
}
priv = vm->privateData;
- qemuDomainObjEnterMonitor(vm);
- ret = qemuMonitorGetBlockStatsInfo(priv->mon,
- disk->info.alias,
- &stats->rd_req,
- &stats->rd_bytes,
- &stats->wr_req,
- &stats->wr_bytes,
- &stats->errs);
- qemuDomainObjExitMonitor(vm);
+ if ((priv->jobActive == QEMU_JOB_MIGRATION_OUT)
+ || (priv->jobActive == QEMU_JOB_SAVE)) {
-endjob:
- if (qemuDomainObjEndJob(vm) == 0)
- vm = NULL;
+ while (priv->jobSignals)
+ ignore_value(virCondWait(&priv->signalCond, &vm->lock));
+
+ priv->jobSignals |= QEMU_JOB_SIGNAL_BLKSTAT;
+ priv->jobSignalsData.devname = disk->info.alias;
+ priv->jobSignalsData.blockStat = stats;
+ priv->jobSignalsData.returnCode = -1;
+
+ while (priv->jobSignals & QEMU_JOB_SIGNAL_BLKSTAT)
+ ignore_value(virCondWait(&priv->signalCond, &vm->lock));
+
+ ret = priv->jobSignalsData.returnCode;
+ } else {
+ if (qemuDomainObjBeginJob(vm) < 0)
+ goto cleanup;
+
+ qemuDomainObjEnterMonitor(vm);
+ ret = qemuMonitorGetBlockStatsInfo(priv->mon,
+ disk->info.alias,
+ &stats->rd_req,
+ &stats->rd_bytes,
+ &stats->wr_req,
+ &stats->wr_bytes,
+ &stats->errs);
+ qemuDomainObjExitMonitor(vm);
+
+ if (qemuDomainObjEndJob(vm) == 0)
+ vm = NULL;
+ }
cleanup:
if (vm)
@@ -5473,23 +5489,39 @@ static int qemuDomainGetBlockInfo(virDomainPtr dom,
disk format and on a block device, then query
highest allocated extent from QEMU */
if (disk->type == VIR_DOMAIN_DISK_TYPE_BLOCK &&
- format != VIR_STORAGE_FILE_RAW &&
- S_ISBLK(sb.st_mode)) {
+ format != VIR_STORAGE_FILE_RAW && S_ISBLK(sb.st_mode)) {
qemuDomainObjPrivatePtr priv = vm->privateData;
- if (qemuDomainObjBeginJob(vm) < 0)
- goto cleanup;
- if (!virDomainObjIsActive(vm))
+
+ if (!virDomainObjIsActive(vm)) {
ret = 0;
- else {
+ } else if ((priv->jobActive == QEMU_JOB_MIGRATION_OUT)
+ || (priv->jobActive == QEMU_JOB_SAVE)) {
+
+ while (priv->jobSignals)
+ ignore_value(virCondWait(&priv->signalCond, &vm->lock));
+
+ priv->jobSignals |= QEMU_JOB_SIGNAL_BLKINFO;
+ priv->jobSignalsData.devname = disk->info.alias;
+ priv->jobSignalsData.blockInfo = info;
+ priv->jobSignalsData.returnCode = -1;
+
+ while (priv->jobSignals & QEMU_JOB_SIGNAL_BLKINFO)
+ ignore_value(virCondWait(&priv->signalCond, &vm->lock));
+
+ ret = priv->jobSignalsData.returnCode;
+ } else {
+ if (qemuDomainObjBeginJob(vm) < 0)
+ goto cleanup;
+
qemuDomainObjEnterMonitor(vm);
ret = qemuMonitorGetBlockExtent(priv->mon,
disk->info.alias,
&info->allocation);
qemuDomainObjExitMonitor(vm);
- }
- if (qemuDomainObjEndJob(vm) == 0)
- vm = NULL;
+ if (qemuDomainObjEndJob(vm) == 0)
+ vm = NULL;
+ }
} else {
ret = 0;
}
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 6738a53..54e41f9 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -156,6 +156,34 @@ qemuMigrationWaitForCompletion(struct qemud_driver *driver, virDomainObjPtr vm)
qemuDomainObjExitMonitorWithDriver(driver, vm);
if (rc < 0)
VIR_WARN0("Unable to set migration speed");
+ } else if (priv->jobSignals & QEMU_JOB_SIGNAL_BLKSTAT) {
+ qemuDomainObjEnterMonitorWithDriver(driver, vm);
+ rc = qemuMonitorGetBlockStatsInfo(priv->mon,
+ priv->jobSignalsData.devname,
+ &priv->jobSignalsData.blockStat->rd_req,
+ &priv->jobSignalsData.blockStat->rd_bytes,
+ &priv->jobSignalsData.blockStat->wr_req,
+ &priv->jobSignalsData.blockStat->wr_bytes,
+ &priv->jobSignalsData.blockStat->errs);
+ qemuDomainObjExitMonitorWithDriver(driver, vm);
+
+ priv->jobSignalsData.returnCode = rc;
+ priv->jobSignals ^= QEMU_JOB_SIGNAL_BLKSTAT;
+
+ if (rc < 0)
+ VIR_WARN0("Unable to get block statistics");
+ } else if (priv->jobSignals & QEMU_JOB_SIGNAL_BLKINFO) {
+ qemuDomainObjEnterMonitorWithDriver(driver, vm);
+ rc = qemuMonitorGetBlockExtent(priv->mon,
+ priv->jobSignalsData.devname,
+ &priv->jobSignalsData.blockInfo->allocation);
+ qemuDomainObjExitMonitorWithDriver(driver, vm);
+
+ priv->jobSignalsData.returnCode = rc;
+ priv->jobSignals ^= QEMU_JOB_SIGNAL_BLKINFO;
+
+ if (rc < 0)
+ VIR_WARN0("Unable to get block information");
}
/* Repeat check because the job signals might have caused
@@ -223,6 +251,8 @@ qemuMigrationWaitForCompletion(struct qemud_driver *driver, virDomainObjPtr vm)
break;
}
+ virCondSignal(&priv->signalCond);
+
virDomainObjUnlock(vm);
qemuDriverUnlock(driver);
@@ -233,6 +263,7 @@ qemuMigrationWaitForCompletion(struct qemud_driver *driver, virDomainObjPtr vm)
}
cleanup:
+ virCondBroadcast(&priv->signalCond);
return ret;
}
--
1.7.1
4
16
[libvirt] [PATCHv2 0/7] interface: new public API for network config change transactions
by Laine Stump 26 May '11
by Laine Stump 26 May '11
26 May '11
(I'm sending v2 of this patch series for Michal Privoznik, as I had to
tweak some things while integrating with the netcf part that I'm
writing, and he will be out of the office tomorrow and thus unable to
resend. In addition to the few small things I needed to change to make
everything compile and work properly once the build system had a
version of netcf supporting the new API, Michal incorporated all the
comments from reviewers of the first version before forwarding the
patches to me for integration.)
This patch series implements three new APIs for the interface
driver which support transactional changes to the host's network
config - at any point you can begin a transaction (which saves a
snapshot of the current config), then make any changes you like to the
config, and later either commit those changes (the current
implementation just removes the snapshotted files) or rollback to the
original config.
The actual implementation of this functionality lives in the netcf
library; these patches create pass-through functions that call out to
netcf on the machine that's running libvirtd.
Most importantly, note that uses of "start" in the API names have been
changed to "begin", and rather than a single virsh command with
multiple subcommands, there are now three separate commands:
iface-begin, iface-commit, and iface-rollback.
Thanks to using AC_CHECK_LIB in configure.ac, this code can safely be
pushed and built on systems that don't yet have a new enough netcf to
contain the API extensions - those functions are simply not
implemented in that case (and return the appropriate error).
5
33
When modifying the disk devices of a live domain and the domain
configuration, the function qemuDomainAttachDeviceConfig
first sets dev->data->disk to NULL. Later qemuDomainAttachDeviceLive
accesses dev->data.disk and causes a segfault.
---
src/qemu/qemu_driver.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b8d9c92..55e6314 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -4278,12 +4278,13 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
"%s", _("cannot modify device on transient domain"));
goto endjob;
}
- dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
- VIR_DOMAIN_XML_INACTIVE);
- if (dev == NULL)
- goto endjob;
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
+ dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
+ VIR_DOMAIN_XML_INACTIVE);
+ if (dev == NULL)
+ goto endjob;
+
/* Make a copy for updated domain. */
vmdef = virDomainObjCopyPersistentDef(driver->caps, vm);
if (!vmdef)
@@ -4307,6 +4308,11 @@ qemuDomainModifyDeviceFlags(virDomainPtr dom, const char *xml,
ret = 0;
if (!ret && (flags & VIR_DOMAIN_DEVICE_MODIFY_LIVE)) {
+ dev = virDomainDeviceDefParse(driver->caps, vm->def, xml,
+ VIR_DOMAIN_XML_INACTIVE);
+ if (dev == NULL)
+ goto endjob;
+
switch (action) {
case QEMU_DEVICE_ATTACH:
ret = qemuDomainAttachDeviceLive(vm, dev, dom);
--
1.7.5.1
3
5
[libvirt] [PATCH] schema: Add graphics element passwdValidTo attribute to schema
by Michal Privoznik 26 May '11
by Michal Privoznik 26 May '11
26 May '11
We support this in code, but forgot to add this to RNG schema as well.
According to documentation, the value match the dateTime type.
---
docs/schemas/domain.rng | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng
index 1ae5b36..c270815 100644
--- a/docs/schemas/domain.rng
+++ b/docs/schemas/domain.rng
@@ -1222,6 +1222,11 @@
<text/>
</attribute>
</optional>
+ <optional>
+ <attribute name="passwdValidTo">
+ <data type="dateTime"/>
+ </attribute>
+ </optional>
</group>
<group>
<attribute name="type">
@@ -1260,6 +1265,11 @@
<text/>
</attribute>
</optional>
+ <optional>
+ <attribute name="passwdValidTo">
+ <data type="dateTime"/>
+ </attribute>
+ </optional>
<interleave>
<zeroOrMore>
<element name="channel">
--
1.7.5.rc3
3
2
26 May '11
---
tests/domainschemadata/domain-complex-1.xml | 87 +++++++++++++++++++++++++++
1 files changed, 87 insertions(+), 0 deletions(-)
create mode 100644 tests/domainschemadata/domain-complex-1.xml
diff --git a/tests/domainschemadata/domain-complex-1.xml b/tests/domainschemadata/domain-complex-1.xml
new file mode 100644
index 0000000..542181c
--- /dev/null
+++ b/tests/domainschemadata/domain-complex-1.xml
@@ -0,0 +1,87 @@
+<domain type='kvm'>
+ <name>f14</name>
+ <uuid>553effab-b5e1-2d80-dfe3-da4344826c43</uuid>
+ <memory>1048576</memory>
+ <currentMemory>1048576</currentMemory>
+ <vcpu>2</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc-0.13'>hvm</type>
+ <boot dev='cdrom'/>
+ <boot dev='hd'/>
+ <bootmenu enable='yes'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu match='exact'>
+ <model>Westmere</model>
+ <vendor>Intel</vendor>
+ <feature policy='require' name='tm2'/>
+ <feature policy='require' name='est'/>
+ <feature policy='require' name='monitor'/>
+ <feature policy='require' name='ss'/>
+ <feature policy='require' name='vme'/>
+ <feature policy='require' name='rdtscp'/>
+ <feature policy='require' name='ht'/>
+ <feature policy='require' name='ds'/>
+ <feature policy='require' name='pbe'/>
+ <feature policy='require' name='tm'/>
+ <feature policy='require' name='vmx'/>
+ <feature policy='require' name='ds_cpl'/>
+ <feature policy='require' name='xtpr'/>
+ <feature policy='require' name='acpi'/>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-kvm</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2'/>
+ <source file='/var/lib/libvirt/images/f14.img'/>
+ <target dev='vda' bus='virtio'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
+ </disk>
+ <disk type='file' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <source file='/var/lib/libvirt/Fedora-14-x86_64-Live-KDE.iso'/>
+ <target dev='hdc' bus='ide'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='1' unit='0'/>
+ </disk>
+ <controller type='ide' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <controller type='virtio-serial' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
+ </controller>
+ <interface type='network'>
+ <mac address='52:54:00:71:70:89'/>
+ <source network='default'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
+ </interface>
+ <serial type='pty'>
+ <target port='0'/>
+ </serial>
+ <console type='pty'>
+ <target type='serial' port='0'/>
+ </console>
+ <input type='tablet' bus='usb'/>
+ <input type='mouse' bus='ps2'/>
+ <graphics type='spice' port='-1' autoport='yes' passwdValidTo="2010-04-09T15:51:00"/>
+ <sound model='ac97'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+ </sound>
+ <video>
+ <model type='vga' vram='9216' heads='1'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </video>
+ <memballoon model='virtio'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
+ </memballoon>
+ </devices>
+</domain>
+
--
1.7.5.rc3
2
1
localtime_r expects time_t.
---
v2: add overflow check
tools/virsh.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/tools/virsh.c b/tools/virsh.c
index de49489..b43c167 100644
--- a/tools/virsh.c
+++ b/tools/virsh.c
@@ -10442,7 +10442,8 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
char *doc = NULL;
virDomainSnapshotPtr snapshot = NULL;
char *state = NULL;
- long creation;
+ long long creation_longlong;
+ time_t creation_time_t;
char timestr[100];
struct tm time_info;
@@ -10501,10 +10502,15 @@ cmdSnapshotList(vshControl *ctl, const vshCmd *cmd)
state = virXPathString("string(/domainsnapshot/state)", ctxt);
if (state == NULL)
continue;
- if (virXPathLong("string(/domainsnapshot/creationTime)", ctxt,
- &creation) < 0)
+ if (virXPathLongLong("string(/domainsnapshot/creationTime)", ctxt,
+ &creation_longlong) < 0)
continue;
- localtime_r(&creation, &time_info);
+ creation_time_t = creation_longlong;
+ if (creation_time_t != creation_longlong) {
+ vshError(ctl, "%s", _("time_t overflow"));
+ continue;
+ }
+ localtime_r(&creation_time_t, &time_info);
strftime(timestr, sizeof(timestr), "%Y-%m-%d %H:%M:%S %z", &time_info);
vshPrint(ctl, " %-20s %-25s %s\n", names[i], timestr, state);
--
1.7.0.4
3
3
[libvirt] [Libvirt-test-API][PATCH] Modify try/except/finally format in all testcases for python backward compatibility
by Guannan Ren 26 May '11
by Guannan Ren 26 May '11
26 May '11
From: Wayne Sun <gsun(a)redhat.com>
* modify all cases under repos/ of try/except/finally format
* delete utils/Python/virt.cfg which in wrong place
Signed-off-by: Guannan Ren <gren(a)redhat.com>
---
repos/domain/attach_disk.py | 29 ++++----
repos/domain/attach_interface.py | 29 ++++----
repos/domain/autostart.py | 29 ++++----
repos/domain/blkstats.py | 9 +-
repos/domain/create.py | 13 ++--
repos/domain/define.py | 19 +++--
repos/domain/destroy.py | 13 ++--
repos/domain/detach_disk.py | 29 ++++----
repos/domain/detach_interface.py | 31 ++++----
repos/domain/domain_uuid.py | 25 +++---
repos/domain/reboot.py | 13 ++--
repos/domain/save.py | 25 +++---
repos/domain/undefine.py | 19 +++--
repos/interface/create.py | 29 ++++----
repos/interface/define.py | 25 +++---
repos/interface/destroy.py | 29 ++++----
repos/interface/undefine.py | 25 +++---
repos/network/autostart.py | 39 +++++-----
repos/network/create.py | 31 ++++----
repos/network/define.py | 29 ++++----
repos/network/destroy.py | 31 ++++----
repos/network/network_name.py | 25 +++---
repos/network/network_uuid.py | 25 +++---
repos/network/undefine.py | 29 ++++----
repos/nodedevice/detach.py | 33 ++++----
repos/nodedevice/reattach.py | 33 ++++----
repos/nodedevice/reset.py | 21 +++---
repos/npiv/create_virtual_hba.py | 35 +++++----
repos/snapshot/delete.py | 23 +++---
repos/snapshot/internal_create.py | 15 ++--
repos/snapshot/revert.py | 15 ++--
repos/storage/activate_pool.py | 23 +++---
repos/storage/build_dir_pool.py | 27 ++++---
repos/storage/build_disk_pool.py | 27 ++++---
repos/storage/build_logical_pool.py | 29 ++++----
repos/storage/build_netfs_pool.py | 27 ++++---
repos/storage/create_dir_pool.py | 25 +++---
repos/storage/create_dir_volume.py | 13 ++--
repos/storage/create_fs_pool.py | 35 +++++----
repos/storage/create_iscsi_pool.py | 25 +++---
repos/storage/create_logical_volume.py | 31 ++++----
repos/storage/create_netfs_pool.py | 35 +++++----
repos/storage/create_netfs_volume.py | 13 ++--
repos/storage/define_dir_pool.py | 37 +++++-----
repos/storage/define_disk_pool.py | 31 ++++----
repos/storage/define_iscsi_pool.py | 29 ++++----
repos/storage/define_logical_pool.py | 29 ++++----
repos/storage/define_mpath_pool.py | 31 ++++----
repos/storage/define_netfs_pool.py | 29 ++++----
repos/storage/define_scsi_pool.py | 31 ++++----
repos/storage/delete_dir_volume.py | 27 ++++---
repos/storage/delete_logical_pool.py | 29 ++++----
repos/storage/delete_logical_volume.py | 31 ++++----
repos/storage/delete_netfs_volume.py | 27 ++++---
repos/storage/pool_name.py | 23 +++---
repos/storage/pool_uuid.py | 23 +++---
repos/storage/undefine_pool.py | 29 ++++----
utils/Python/virt.cfg | 129 --------------------------------
58 files changed, 774 insertions(+), 846 deletions(-)
delete mode 100644 utils/Python/virt.cfg
diff --git a/repos/domain/attach_disk.py b/repos/domain/attach_disk.py
index b8fd8ef..3a1175e 100644
--- a/repos/domain/attach_disk.py
+++ b/repos/domain/attach_disk.py
@@ -120,21 +120,22 @@ def attach_disk(params):
# Attach disk to domain
try:
- domobj.attach_device(guestname, diskxml)
- disk_num2 = util.dev_num(guestname, "disk")
- logger.debug("update disk number to %s" %disk_num2)
- if check_attach_disk(disk_num1, disk_num2):
- logger.info("current disk number: %s\n" %disk_num2)
- test_result = True
- else:
- logger.error("fail to attach a disk to guest: %s\n" %disk_num2)
+ try:
+ domobj.attach_device(guestname, diskxml)
+ disk_num2 = util.dev_num(guestname, "disk")
+ logger.debug("update disk number to %s" %disk_num2)
+ if check_attach_disk(disk_num1, disk_num2):
+ logger.info("current disk number: %s\n" %disk_num2)
+ test_result = True
+ else:
+ logger.error("fail to attach a disk to guest: %s\n" %disk_num2)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("attach %s disk to guest %s" % (imagename, guestname))
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'], e.response()['code']))
- logger.error("attach %s disk to guest %s" % (imagename, guestname))
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/attach_interface.py b/repos/domain/attach_interface.py
index 351e57e..9d475a3 100644
--- a/repos/domain/attach_interface.py
+++ b/repos/domain/attach_interface.py
@@ -89,21 +89,22 @@ def attach_interface(params):
# Attach interface to domain
try:
- domobj.attach_device(guestname, interfacexml)
- iface_num2 = util.dev_num(guestname, "interface")
- logger.debug("update interface number to %s" %iface_num2)
- if check_attach_interface(iface_num1, iface_num2):
- logger.info("current interface number: %s" %iface_num2)
- test_result = True
- else:
- logger.error("fail to attach a interface to guest: %s" %iface_num2)
+ try:
+ domobj.attach_device(guestname, interfacexml)
+ iface_num2 = util.dev_num(guestname, "interface")
+ logger.debug("update interface number to %s" %iface_num2)
+ if check_attach_interface(iface_num1, iface_num2):
+ logger.info("current interface number: %s" %iface_num2)
+ test_result = True
+ else:
+ logger.error("fail to attach a interface to guest: %s" %iface_num2)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("attach a interface to guest %s" % guestname)
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'], e.response()['code']))
- logger.error("attach a interface to guest %s" % guestname)
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/autostart.py b/repos/domain/autostart.py
index 2a1f0c8..f0fc97c 100644
--- a/repos/domain/autostart.py
+++ b/repos/domain/autostart.py
@@ -94,21 +94,22 @@ def autostart(params):
# Set autostart for domain
domobj = domainAPI.DomainAPI(virconn)
try:
- domobj.set_auto_start(guestname, flag)
- if check_guest_autostart(guestname, uri.split(":")[0], flag, logger):
- logger.info("current %s autostart: %s" %
- (guestname, domobj.get_auto_start(guestname)))
- logger.info("executing autostart operation is successful")
- test_result = True
- else:
- logger.error("Error: fail to check autostart domain")
+ try:
+ domobj.set_auto_start(guestname, flag)
+ if check_guest_autostart(guestname, uri.split(":")[0], flag, logger):
+ logger.info("current %s autostart: %s" %
+ (guestname, domobj.get_auto_start(guestname)))
+ logger.info("executing autostart operation is successful")
+ test_result = True
+ else:
+ logger.error("Error: fail to check autostart domain")
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to autostart %s domain" %guestname)
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to autostart %s domain" %guestname)
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/blkstats.py b/repos/domain/blkstats.py
index 4c35ca3..05dbb83 100644
--- a/repos/domain/blkstats.py
+++ b/repos/domain/blkstats.py
@@ -72,10 +72,11 @@ def block_stats(params):
domobj.start(guestname)
time.sleep(90)
try:
- (blkstats, path) = domobj.get_block_stats(guestname)
- except exception.LibvirtAPI, e:
- logger.error("libvirt error: error code - %s; error message - %s" %(e.code, e.message))
- return 1;
+ try:
+ (blkstats, path) = domobj.get_block_stats(guestname)
+ except exception.LibvirtAPI, e:
+ logger.error("libvirt error: error code - %s; error message - %s" %(e.code, e.message))
+ return 1;
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/create.py b/repos/domain/create.py
index 2bb759d..343aba2 100644
--- a/repos/domain/create.py
+++ b/repos/domain/create.py
@@ -98,12 +98,13 @@ def create(params):
# Create domain from xml
try:
- domobj.create(domxml)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'], e.response()['code']))
- logger.error("fail to create domain %s" % guestname)
- return 1
+ try:
+ domobj.create(domxml)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("fail to create domain %s" % guestname)
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/define.py b/repos/domain/define.py
index 8ad7843..d965f63 100644
--- a/repos/domain/define.py
+++ b/repos/domain/define.py
@@ -115,16 +115,17 @@ def define(params):
# Define domain from xml
try:
- dom_obj.define(dom_xml)
- if check_define_domain(guestname, guesttype, logger):
- logger.info("define a domain form xml is successful")
- test_result = True
- else:
- logger.error("fail to check define domain")
+ try:
+ dom_obj.define(dom_xml)
+ if check_define_domain(guestname, guesttype, logger):
+ logger.info("define a domain form xml is successful")
+ test_result = True
+ else:
+ logger.error("fail to check define domain")
+ test_result = False
+ except:
+ logger.error("fail to define a domain from xml")
test_result = False
- except:
- logger.error("fail to define a domain from xml")
- test_result = False
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/destroy.py b/repos/domain/destroy.py
index f06a1f6..f98b602 100644
--- a/repos/domain/destroy.py
+++ b/repos/domain/destroy.py
@@ -88,12 +88,13 @@ def destroy(params):
# Destroy domain
try:
- dom_obj.destroy(guestname)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- logger.error("fail to destroy domain")
- return 1
+ try:
+ dom_obj.destroy(guestname)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ logger.error("fail to destroy domain")
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/detach_disk.py b/repos/domain/detach_disk.py
index 3972c3f..21c6598 100644
--- a/repos/domain/detach_disk.py
+++ b/repos/domain/detach_disk.py
@@ -99,21 +99,22 @@ def detach_disk(params):
time.sleep(90)
try:
- domobj.detach_device(guestname, diskxml)
- disk_num2 = util.dev_num(guestname, "disk")
- logger.debug("update disk number to %s" %disk_num2)
- if check_detach_disk(disk_num1, disk_num2):
- logger.info("current disk number: %s\n" %disk_num2)
- test_result = True
- else:
- logger.error("fail to detach a disk to guest: %s\n" %disk_num2)
+ try:
+ domobj.detach_device(guestname, diskxml)
+ disk_num2 = util.dev_num(guestname, "disk")
+ logger.debug("update disk number to %s" %disk_num2)
+ if check_detach_disk(disk_num1, disk_num2):
+ logger.info("current disk number: %s\n" %disk_num2)
+ test_result = True
+ else:
+ logger.error("fail to detach a disk to guest: %s\n" %disk_num2)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ logger.error("detach %s disk from guest %s" % (imagename, guestname))
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- logger.error("detach %s disk from guest %s" % (imagename, guestname))
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/detach_interface.py b/repos/domain/detach_interface.py
index 5eee836..6639336 100644
--- a/repos/domain/detach_interface.py
+++ b/repos/domain/detach_interface.py
@@ -101,22 +101,23 @@ def detach_interface(params):
time.sleep(90)
try:
- domobj.detach_device(guestname, ifacexml)
- iface_num2 = util.dev_num(guestname, "interface")
- logger.debug("update interface number to %s" % iface_num2)
- if check_detach_interface(iface_num1, iface_num2):
- logger.info("current interface number: %s" % iface_num2)
- test_result = True
- else:
- logger.error("fail to detach a interface to guest: %s" %
- iface_num2)
+ try:
+ domobj.detach_device(guestname, ifacexml)
+ iface_num2 = util.dev_num(guestname, "interface")
+ logger.debug("update interface number to %s" % iface_num2)
+ if check_detach_interface(iface_num1, iface_num2):
+ logger.info("current interface number: %s" % iface_num2)
+ test_result = True
+ else:
+ logger.error("fail to detach a interface to guest: %s" %
+ iface_num2)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ logger.error("detach the interface from guest %s" % guestname)
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- logger.error("detach the interface from guest %s" % guestname)
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/domain_uuid.py b/repos/domain/domain_uuid.py
index 05bd7e1..8b02a15 100644
--- a/repos/domain/domain_uuid.py
+++ b/repos/domain/domain_uuid.py
@@ -85,19 +85,20 @@ def domuuid(params):
return 1
try:
- logger.info("get the UUID string of %s" % guestname)
- UUIDString = domobj.get_uuid_string(guestname)
- if check_domain_uuid(guestname, UUIDString, logger):
- logger.info("UUIDString from API is the same as the one from virsh")
- logger.info("UUID String is %s" % UUIDString)
- return 0
- else:
- logger.error("UUIDString from API is not the same as the one from virsh")
+ try:
+ logger.info("get the UUID string of %s" % guestname)
+ UUIDString = domobj.get_uuid_string(guestname)
+ if check_domain_uuid(guestname, UUIDString, logger):
+ logger.info("UUIDString from API is the same as the one from virsh")
+ logger.info("UUID String is %s" % UUIDString)
+ return 0
+ else:
+ logger.error("UUIDString from API is not the same as the one from virsh")
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/reboot.py b/repos/domain/reboot.py
index aabeb88..03172c4 100644
--- a/repos/domain/reboot.py
+++ b/repos/domain/reboot.py
@@ -81,12 +81,13 @@ def reboot(params):
# Reboot domain
try:
- dom_obj.reboot(domain_name)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" %
- (e.response()['message'], e.response()['code']))
- logger.error("fail to reboot domain")
- return 1
+ try:
+ dom_obj.reboot(domain_name)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" %
+ (e.response()['message'], e.response()['code']))
+ logger.error("fail to reboot domain")
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/save.py b/repos/domain/save.py
index 33d8d41..d9782e3 100644
--- a/repos/domain/save.py
+++ b/repos/domain/save.py
@@ -124,20 +124,21 @@ def save(params):
logger.info("closed hypervisor connection")
return 1
try:
- domobj.save(guestname, filepath)
- if check_guest_save(guestname, domobj, util, logger):
- logger.info("save %s domain successful" %guestname)
- test_result = True
- else:
- logger.error("Error: fail to check save domain")
+ try:
+ domobj.save(guestname, filepath)
+ if check_guest_save(guestname, domobj, util, logger):
+ logger.info("save %s domain successful" %guestname)
+ test_result = True
+ else:
+ logger.error("Error: fail to check save domain")
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to save %s domain" %guestname)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to save %s domain" %guestname)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/domain/undefine.py b/repos/domain/undefine.py
index 02ca5bd..13412fa 100644
--- a/repos/domain/undefine.py
+++ b/repos/domain/undefine.py
@@ -70,16 +70,17 @@ def undefine(params):
dom_obj = domainAPI.DomainAPI(virconn)
try:
- dom_obj.undefine(guestname)
- if check_undefine_domain(guestname):
- logger.info("undefine the domain is successful")
- test_result = True
- else:
- logger.error("fail to check domain undefine")
+ try:
+ dom_obj.undefine(guestname)
+ if check_undefine_domain(guestname):
+ logger.info("undefine the domain is successful")
+ test_result = True
+ else:
+ logger.error("fail to check domain undefine")
+ test_result = False
+ except:
+ logger.error("fail to undefine the domain")
test_result = False
- except:
- logger.error("fail to undefine the domain")
- test_result = False
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/interface/create.py b/repos/interface/create.py
index 6aabfe7..41e5dcc 100644
--- a/repos/interface/create.py
+++ b/repos/interface/create.py
@@ -110,22 +110,23 @@ def create(params):
try:
- ifaceobj.create(ifacename)
- logger.info("create host interface %s" % ifacename)
- display_current_interface(ifaceobj)
- if check_create_interface(ifacename, util):
- logger.info("create host interface %s is successful" % ifacename)
- test_result = True
- else:
- logger.error("fail to check create interface")
+ try:
+ ifaceobj.create(ifacename)
+ logger.info("create host interface %s" % ifacename)
+ display_current_interface(ifaceobj)
+ if check_create_interface(ifacename, util):
+ logger.info("create host interface %s is successful" % ifacename)
+ test_result = True
+ else:
+ logger.error("fail to check create interface")
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to create interface %s" %ifacename)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to create interface %s" %ifacename)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/interface/define.py b/repos/interface/define.py
index 4d996ab..054bd54 100644
--- a/repos/interface/define.py
+++ b/repos/interface/define.py
@@ -103,20 +103,21 @@ def define(params):
logger.debug("interface xml:\n%s" %iface_xml)
try:
- ifaceobj.define(iface_xml)
- if check_define_interface(ifacename):
- logger.info("define a interface form xml is successful")
- test_result = True
- else:
- logger.error("fail to check define interface")
+ try:
+ ifaceobj.define(iface_xml)
+ if check_define_interface(ifacename):
+ logger.info("define a interface form xml is successful")
+ test_result = True
+ else:
+ logger.error("fail to check define interface")
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to define a interface from xml")
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to define a interface from xml")
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/interface/destroy.py b/repos/interface/destroy.py
index 2467aa6..771fa74 100644
--- a/repos/interface/destroy.py
+++ b/repos/interface/destroy.py
@@ -111,22 +111,23 @@ def destroy(params):
#logger.debug("interface xml:\n%s" %iface_xml)
try:
- ifaceobj.destroy(ifacename)
- logger.info("destroy host interface %s" % ifacename)
- display_current_interface(ifaceobj)
- if check_destroy_interface(hostip):
- logger.info("destroy host interface %s is successful" % ifacename)
- test_result = True
- else:
- logger.error("fail to check destroy interface")
+ try:
+ ifaceobj.destroy(ifacename)
+ logger.info("destroy host interface %s" % ifacename)
+ display_current_interface(ifaceobj)
+ if check_destroy_interface(hostip):
+ logger.info("destroy host interface %s is successful" % ifacename)
+ test_result = True
+ else:
+ logger.error("fail to check destroy interface")
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to destroy interface %s" %ifacename)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to destroy interface %s" %ifacename)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/interface/undefine.py b/repos/interface/undefine.py
index 61f90bf..7d49942 100644
--- a/repos/interface/undefine.py
+++ b/repos/interface/undefine.py
@@ -98,20 +98,21 @@ def undefine(params):
ifaceobj = interfaceAPI.InterfaceAPI(virconn)
try:
- ifaceobj.undefine(ifacename)
- if check_undefine_interface(ifacename):
- logger.info("undefine a interface form xml is successful")
- test_result = True
- else:
- logger.error("fail to check undefine interface")
+ try:
+ ifaceobj.undefine(ifacename)
+ if check_undefine_interface(ifacename):
+ logger.info("undefine a interface form xml is successful")
+ test_result = True
+ else:
+ logger.error("fail to check undefine interface")
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to undefine a interface from xml")
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to undefine a interface from xml")
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/autostart.py b/repos/network/autostart.py
index 0c4bd5a..ba4b4f1 100644
--- a/repos/network/autostart.py
+++ b/repos/network/autostart.py
@@ -113,26 +113,27 @@ def autostart(params):
logger.debug("the output of 'virsh net-list --all' is %s" % text)
try:
- netobj.setnetAutostart(networkname, flag)
- if check_network_autostart(networkname,
- "qemu",
- flag,
- logger):
- logger.info("current virtual network %s autostart: %s" % \
- (networkname, netobj.get_autostart(networkname)))
- logger.info("executing autostart operation is successful")
- test_result = True
- else:
- logger.error("Error: fail to check autostart status of \
- virtual network %s" % networkname)
+ try:
+ netobj.setnetAutostart(networkname, flag)
+ if check_network_autostart(networkname,
+ "qemu",
+ flag,
+ logger):
+ logger.info("current virtual network %s autostart: %s" % \
+ (networkname, netobj.get_autostart(networkname)))
+ logger.info("executing autostart operation is successful")
+ test_result = True
+ else:
+ logger.error("Error: fail to check autostart status of \
+ virtual network %s" % networkname)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to autostart virtual network %s " % \
+ networkname)
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to autostart virtual network %s " % \
- networkname)
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/create.py b/repos/network/create.py
index 4caa7f7..a667441 100644
--- a/repos/network/create.py
+++ b/repos/network/create.py
@@ -89,22 +89,23 @@ def create(params):
logger.info("original network active number: %s" % net_num1)
try:
- netobj.create(netxml)
- net_num2 = netobj.get_number()
- if not check_network_status(networkname, netobj, logger) and \
- net_num2 > net_num1:
- logger.info("current network active number: %s\n" % net_num2)
- test_result = True
- else:
- logger.error("the %s network is inactive" % networkname)
- logger.error("fail to create network from :\n%s" % netxml)
+ try:
+ netobj.create(netxml)
+ net_num2 = netobj.get_number()
+ if not check_network_status(networkname, netobj, logger) and \
+ net_num2 > net_num1:
+ logger.info("current network active number: %s\n" % net_num2)
+ test_result = True
+ else:
+ logger.error("the %s network is inactive" % networkname)
+ logger.error("fail to create network from :\n%s" % netxml)
+ test_result = False
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("create a network from xml: \n%s" % netxml)
test_result = False
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("create a network from xml: \n%s" % netxml)
- test_result = False
- return 1
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/define.py b/repos/network/define.py
index b96c599..dda8d06 100644
--- a/repos/network/define.py
+++ b/repos/network/define.py
@@ -97,22 +97,23 @@ def define(params):
logger.info("original network define number: %s" % net_num1)
try:
- netobj.define(netxml)
- net_num2 = netobj.get_define_number()
- if check_network_define(networkname, logger) and net_num2 > net_num1:
- logger.info("current network define number: %s" % net_num2)
- logger.info("define %s network is successful" % networkname)
- test_result = True
- else:
- logger.error("%s network is undefined" % networkname)
+ try:
+ netobj.define(netxml)
+ net_num2 = netobj.get_define_number()
+ if check_network_define(networkname, logger) and net_num2 > net_num1:
+ logger.info("current network define number: %s" % net_num2)
+ logger.info("define %s network is successful" % networkname)
+ test_result = True
+ else:
+ logger.error("%s network is undefined" % networkname)
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("define a network from xml: \n%s" % netxml)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("define a network from xml: \n%s" % netxml)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/destroy.py b/repos/network/destroy.py
index 5b31bf0..51663ac 100644
--- a/repos/network/destroy.py
+++ b/repos/network/destroy.py
@@ -86,23 +86,24 @@ def destroy(params):
logger.info("original network active number: %s" % net_num1)
try:
- netobj.destroy(networkname)
- net_num2 = netobj.get_number()
- if not check_network_status(networkname, netobj, logger) and \
- net_num1 > net_num2:
- logger.info("current network active number: %s\n" % net_num2)
- logger.info("destroy %s network successful" % networkname)
- test_result = True
- else:
- logger.error("the %s network is still running" % networkname)
+ try:
+ netobj.destroy(networkname)
+ net_num2 = netobj.get_number()
+ if not check_network_status(networkname, netobj, logger) and \
+ net_num1 > net_num2:
+ logger.info("current network active number: %s\n" % net_num2)
+ logger.info("destroy %s network successful" % networkname)
+ test_result = True
+ else:
+ logger.error("the %s network is still running" % networkname)
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to destroy %s network" % networkname)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to destroy %s network" % networkname)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/network_name.py b/repos/network/network_name.py
index d4e9c04..5b78dec 100644
--- a/repos/network/network_name.py
+++ b/repos/network/network_name.py
@@ -86,19 +86,20 @@ def netname(params):
return 1
try:
- UUIDString = netobj.get_uuid_string(networkname)
- logger.info("the UUID string of network %s is %s" % (networkname, UUIDString))
-
- if check_network_uuid(networkname, UUIDString, logger):
- logger.info(VIRSH_NETNAME + " test succeeded.")
- return 0
- else:
- logger.error(VIRSH_NETNAME + " test failed.")
+ try:
+ UUIDString = netobj.get_uuid_string(networkname)
+ logger.info("the UUID string of network %s is %s" % (networkname, UUIDString))
+
+ if check_network_uuid(networkname, UUIDString, logger):
+ logger.info(VIRSH_NETNAME + " test succeeded.")
+ return 0
+ else:
+ logger.error(VIRSH_NETNAME + " test failed.")
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/network_uuid.py b/repos/network/network_uuid.py
index 266d893..be30fd2 100644
--- a/repos/network/network_uuid.py
+++ b/repos/network/network_uuid.py
@@ -86,19 +86,20 @@ def netuuid(params):
return 1
try:
- UUIDString = netobj.get_uuid_string(networkname)
- logger.info("the UUID string of network %s is %s" % (networkname, UUIDString))
-
- if check_network_uuid(networkname, UUIDString, logger):
- logger.info(VIRSH_NETUUID + " test succeeded.")
- return 0
- else:
- logger.error(VIRSH_NETUUID + " test failed.")
+ try:
+ UUIDString = netobj.get_uuid_string(networkname)
+ logger.info("the UUID string of network %s is %s" % (networkname, UUIDString))
+
+ if check_network_uuid(networkname, UUIDString, logger):
+ logger.info(VIRSH_NETUUID + " test succeeded.")
+ return 0
+ else:
+ logger.error(VIRSH_NETUUID + " test failed.")
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/network/undefine.py b/repos/network/undefine.py
index ea14282..d7e903e 100644
--- a/repos/network/undefine.py
+++ b/repos/network/undefine.py
@@ -85,22 +85,23 @@ def undefine(params):
logger.info("original network define number: %s" % net_num1)
try:
- netobj.undefine(networkname)
- net_num2 = netobj.get_define_number()
- if check_network_undefine(networkname) and net_num2 < net_num1:
- logger.info("current network define number: %s" % net_num2)
- logger.info("undefine %s network is successful" % networkname)
- test_result = True
- else:
- logger.error("the network %s is still define" % networkname)
+ try:
+ netobj.undefine(networkname)
+ net_num2 = netobj.get_define_number()
+ if check_network_undefine(networkname) and net_num2 < net_num1:
+ logger.info("current network define number: %s" % net_num2)
+ logger.info("undefine %s network is successful" % networkname)
+ test_result = True
+ else:
+ logger.error("the network %s is still define" % networkname)
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("fail to undefine a network")
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("fail to undefine a network")
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/nodedevice/detach.py b/repos/nodedevice/detach.py
index 7304b7a..ac9aa89 100644
--- a/repos/nodedevice/detach.py
+++ b/repos/nodedevice/detach.py
@@ -119,24 +119,25 @@ def dettach(dicts):
nodeobj = nodedevAPI.NodedevAPI(virconn)
try:
- logger.info("dettach the node device")
- nodeobj.dettach(device_name)
- current_driver = check_node_dettach(pciaddress)
- logger.info("current device driver: %s" % current_driver)
- if current_driver != original_driver and current_driver == pciback:
- logger.info("the node %s device dettach is successful" \
- % device_name)
- test_result = True
- else:
- logger.info("the node %s device dettach is failed" % device_name)
+ try:
+ logger.info("dettach the node device")
+ nodeobj.dettach(device_name)
+ current_driver = check_node_dettach(pciaddress)
+ logger.info("current device driver: %s" % current_driver)
+ if current_driver != original_driver and current_driver == pciback:
+ logger.info("the node %s device dettach is successful" \
+ % device_name)
+ test_result = True
+ else:
+ logger.info("the node %s device dettach is failed" % device_name)
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to dettach %s node device" % device_name)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to dettach %s node device" % device_name)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/nodedevice/reattach.py b/repos/nodedevice/reattach.py
index 4943fc2..8eafb1d 100644
--- a/repos/nodedevice/reattach.py
+++ b/repos/nodedevice/reattach.py
@@ -118,24 +118,25 @@ def reattach(dicts):
nodeobj = nodedevAPI.NodedevAPI(virconn)
try:
- nodeobj.reattach(device_name)
- logger.info("reattach the node device")
- current_driver = check_node_reattach(pciaddress)
- logger.info("current device driver: %s" % current_driver)
- if original_driver == pciback and current_driver != pciback:
- logger.info("the node %s device reattach is successful" \
- % device_name)
- test_result = True
- else:
- logger.info("the node %s device reattach is failed" % device_name)
+ try:
+ nodeobj.reattach(device_name)
+ logger.info("reattach the node device")
+ current_driver = check_node_reattach(pciaddress)
+ logger.info("current device driver: %s" % current_driver)
+ if original_driver == pciback and current_driver != pciback:
+ logger.info("the node %s device reattach is successful" \
+ % device_name)
+ test_result = True
+ else:
+ logger.info("the node %s device reattach is failed" % device_name)
+ test_result = False
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to reattach %s node device" % device_name)
test_result = False
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to reattach %s node device" % device_name)
- test_result = False
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/nodedevice/reset.py b/repos/nodedevice/reset.py
index 7b85d70..40ba95b 100644
--- a/repos/nodedevice/reset.py
+++ b/repos/nodedevice/reset.py
@@ -87,16 +87,17 @@ def reset(dicts):
nodeobj = nodedevAPI.NodedevAPI(virconn)
try:
- nodeobj.reset(device_name)
- logger.info("reset the node device")
- logger.info("the node %s device reset is successful" % device_name)
- test_result = True
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to reset %s node device" % device_name)
- test_result = False
- return 1
+ try:
+ nodeobj.reset(device_name)
+ logger.info("reset the node device")
+ logger.info("the node %s device reset is successful" % device_name)
+ test_result = True
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to reset %s node device" % device_name)
+ test_result = False
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/npiv/create_virtual_hba.py b/repos/npiv/create_virtual_hba.py
index 3bc6b5b..e86b85a 100644
--- a/repos/npiv/create_virtual_hba.py
+++ b/repos/npiv/create_virtual_hba.py
@@ -117,24 +117,25 @@ def create_virtual_hba(params):
logger.debug("node device xml:\n%s" % nodedev_xml)
try:
- logger.info("creating a virtual HBA ...")
- nodedev_obj = nodedev.create(nodedev_xml)
- dev_name = nodedev.get_name(nodedev_obj)
-
- if check_nodedev_create(wwpn, dev_name) and \
- check_nodedev_parent(nodedev, params['parent'], dev_name):
- logger.info("the virtual HBA '%s' was created successfully" \
- % dev_name)
- return 0
- else:
- logger.error("fail to create the virtual HBA '%s'" \
- % dev_name)
+ try:
+ logger.info("creating a virtual HBA ...")
+ nodedev_obj = nodedev.create(nodedev_xml)
+ dev_name = nodedev.get_name(nodedev_obj)
+
+ if check_nodedev_create(wwpn, dev_name) and \
+ check_nodedev_parent(nodedev, params['parent'], dev_name):
+ logger.info("the virtual HBA '%s' was created successfully" \
+ % dev_name)
+ return 0
+ else:
+ logger.error("fail to create the virtual HBA '%s'" \
+ % dev_name)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ logger.error("Error: fail to create %s virtual hba" % dev_name)
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- logger.error("Error: fail to create %s virtual hba" % dev_name)
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/snapshot/delete.py b/repos/snapshot/delete.py
index 88540c8..8a7eef6 100644
--- a/repos/snapshot/delete.py
+++ b/repos/snapshot/delete.py
@@ -105,18 +105,19 @@ def delete(params):
return 1
try:
- logger.info("delete a snapshot for %s" % guestname)
- snap_obj.delete(guestname, snapshotname)
- if not delete_check(guestname, snapshotname, "noexist", logger):
- logger.error("after deleting, the corresponding \
- xmlfile still exists in %s" % SNAPSHOT_DIR)
+ try:
+ logger.info("delete a snapshot for %s" % guestname)
+ snap_obj.delete(guestname, snapshotname)
+ if not delete_check(guestname, snapshotname, "noexist", logger):
+ logger.error("after deleting, the corresponding \
+ xmlfile still exists in %s" % SNAPSHOT_DIR)
+ return 1
+ else:
+ logger.info("delete snapshot %s succeeded" % snapshotname)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- else:
- logger.info("delete snapshot %s succeeded" % snapshotname)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
-(e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/snapshot/internal_create.py b/repos/snapshot/internal_create.py
index a28eff6..123e38a 100644
--- a/repos/snapshot/internal_create.py
+++ b/repos/snapshot/internal_create.py
@@ -111,13 +111,14 @@ def internal_create(params):
logger.debug("%s snapshot xml:\n%s" % (guestname, snapshot_xml))
try:
- logger.info("create a snapshot for %s" % guestname)
- snap_obj.create(guestname, snapshot_xml)
- logger.info("creating snapshot succeeded")
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
-(e.response()['message'], e.response()['code']))
- return 1
+ try:
+ logger.info("create a snapshot for %s" % guestname)
+ snap_obj.create(guestname, snapshot_xml)
+ logger.info("creating snapshot succeeded")
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/snapshot/revert.py b/repos/snapshot/revert.py
index 4c86bb4..f70e5dc 100644
--- a/repos/snapshot/revert.py
+++ b/repos/snapshot/revert.py
@@ -81,13 +81,14 @@ def revert(params):
return 1
try:
- logger.info("revert a snapshot for %s" % guestname)
- snap_obj.revertToSnapshot(guestname, snapshotname)
- logger.info("revert snapshot succeeded")
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
-(e.response()['message'], e.response()['code']))
- return 1
+ try:
+ logger.info("revert a snapshot for %s" % guestname)
+ snap_obj.revertToSnapshot(guestname, snapshotname)
+ logger.info("revert snapshot succeeded")
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/activate_pool.py b/repos/storage/activate_pool.py
index 9dab7ee..2b27be6 100644
--- a/repos/storage/activate_pool.py
+++ b/repos/storage/activate_pool.py
@@ -101,18 +101,19 @@ def activate_pool(params):
logger.info("closed hypervisor connection")
return 1
try:
- stgobj.active_pool(poolname)
- time.sleep(5)
- if check_pool_active(stgobj, poolname, logger):
- logger.info("activating %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
- else:
- logger.info("activating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ try:
+ stgobj.active_pool(poolname)
+ time.sleep(5)
+ if check_pool_active(stgobj, poolname, logger):
+ logger.info("activating %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("activating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/build_dir_pool.py b/repos/storage/build_dir_pool.py
index d447a5b..5765b36 100644
--- a/repos/storage/build_dir_pool.py
+++ b/repos/storage/build_dir_pool.py
@@ -115,20 +115,21 @@ def build_dir_pool(params):
display_pool_info(stgobj)
try:
- logger.info("build %s storage pool" % poolname)
- stgobj.build_pool(poolname)
- display_pool_info(stgobj)
-
- if check_build_pool(path_value):
- logger.info("build %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("fail to build %s storage pool" % poolname)
+ try:
+ logger.info("build %s storage pool" % poolname)
+ stgobj.build_pool(poolname)
+ display_pool_info(stgobj)
+
+ if check_build_pool(path_value):
+ logger.info("build %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("fail to build %s storage pool" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/build_disk_pool.py b/repos/storage/build_disk_pool.py
index c5311cb..be36ea8 100644
--- a/repos/storage/build_disk_pool.py
+++ b/repos/storage/build_disk_pool.py
@@ -141,20 +141,21 @@ def build_disk_pool(params):
(source_device, device_type))
try:
- logger.info("begin to build the storage pool")
- stgobj.build_pool(poolname)
- time.sleep(5)
- if not check_pool_built(source_device, device_type):
- logger.info("building %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
- else:
- logger.info("building %s storage pool is UNSUCCESSFUL!!!" % \
- poolname)
+ try:
+ logger.info("begin to build the storage pool")
+ stgobj.build_pool(poolname)
+ time.sleep(5)
+ if not check_pool_built(source_device, device_type):
+ logger.info("building %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("building %s storage pool is UNSUCCESSFUL!!!" % \
+ poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/build_logical_pool.py b/repos/storage/build_logical_pool.py
index cc9ccae..f761fd1 100644
--- a/repos/storage/build_logical_pool.py
+++ b/repos/storage/build_logical_pool.py
@@ -120,21 +120,22 @@ def build_logical_pool(params):
display_physical_volume()
try:
- logger.info("build %s storage pool" % poolname)
- stgobj.build_pool(poolname)
- display_pool_info(stgobj)
- display_physical_volume()
-
- if check_build_pool(poolname):
- logger.info("build %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("fail to build %s storage pool" % poolname)
+ try:
+ logger.info("build %s storage pool" % poolname)
+ stgobj.build_pool(poolname)
+ display_pool_info(stgobj)
+ display_physical_volume()
+
+ if check_build_pool(poolname):
+ logger.info("build %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("fail to build %s storage pool" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/build_netfs_pool.py b/repos/storage/build_netfs_pool.py
index 4d0b191..d0012ff 100644
--- a/repos/storage/build_netfs_pool.py
+++ b/repos/storage/build_netfs_pool.py
@@ -114,20 +114,21 @@ def build_netfs_pool(params):
display_pool_info(stgobj)
try:
- logger.info("build %s storage pool" % poolname)
- stgobj.build_pool(poolname)
- display_pool_info(stgobj)
-
- if check_build_pool(path_value):
- logger.info("build %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("fail to build %s storage pool" % poolname)
+ try:
+ logger.info("build %s storage pool" % poolname)
+ stgobj.build_pool(poolname)
+ display_pool_info(stgobj)
+
+ if check_build_pool(path_value):
+ logger.info("build %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("fail to build %s storage pool" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_dir_pool.py b/repos/storage/create_dir_pool.py
index 9f7e36c..d497fdb 100644
--- a/repos/storage/create_dir_pool.py
+++ b/repos/storage/create_dir_pool.py
@@ -109,19 +109,20 @@ def create_dir_pool(params):
logger.debug("storage pool xml:\n%s" % poolxml)
try:
- logger.info("Creating %s storage pool" % poolname)
- stgobj.create_pool(poolxml)
- display_pool_info(stgobj, logger)
- if check_pool_create(stgobj, poolname, logger):
- logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
- else:
- logger.info("aa creating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ try:
+ logger.info("Creating %s storage pool" % poolname)
+ stgobj.create_pool(poolxml)
+ display_pool_info(stgobj, logger)
+ if check_pool_create(stgobj, poolname, logger):
+ logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("aa creating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_dir_volume.py b/repos/storage/create_dir_volume.py
index e5e5cd7..6022e7b 100644
--- a/repos/storage/create_dir_volume.py
+++ b/repos/storage/create_dir_volume.py
@@ -174,12 +174,13 @@ def create_dir_volume(params):
logger.debug("volume xml:\n%s" % volumexml)
try:
- logger.info("create %s volume" % volname)
- stgobj.create_volume(poolname, volumexml)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
+ try:
+ logger.info("create %s volume" % volname)
+ stgobj.create_volume(poolname, volumexml)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_fs_pool.py b/repos/storage/create_fs_pool.py
index 4338cad..887b91d 100644
--- a/repos/storage/create_fs_pool.py
+++ b/repos/storage/create_fs_pool.py
@@ -136,26 +136,27 @@ def create_fs_pool(params):
logger.debug("storage pool xml:\n%s" % poolxml)
try:
- logger.info("Creating %s storage pool" % poolname)
- stgobj.create_pool(poolxml)
- display_pool_info(stgobj, logger)
- if check_pool_create_libvirt(stgobj, poolname, logger):
- logger.info("creating %s storage pool is in libvirt" % poolname)
- if check_pool_create_OS(stgobj, poolname, logger):
- logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
+ try:
+ logger.info("Creating %s storage pool" % poolname)
+ stgobj.create_pool(poolxml)
+ display_pool_info(stgobj, logger)
+ if check_pool_create_libvirt(stgobj, poolname, logger):
+ logger.info("creating %s storage pool is in libvirt" % poolname)
+ if check_pool_create_OS(stgobj, poolname, logger):
+ logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("creating %s storage pool is UNSUCCESSFUL!!!" % \
+ poolname)
+ return 1
else:
- logger.info("creating %s storage pool is UNSUCCESSFUL!!!" % \
- poolname)
+ logger.info("creating %s storage pool is \
+ UNSUCCESSFUL in libvirt!!!" % poolname)
return 1
- else:
- logger.info("creating %s storage pool is \
- UNSUCCESSFUL in libvirt!!!" % poolname)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_iscsi_pool.py b/repos/storage/create_iscsi_pool.py
index 11e345a..d642ddd 100644
--- a/repos/storage/create_iscsi_pool.py
+++ b/repos/storage/create_iscsi_pool.py
@@ -116,19 +116,20 @@ def create_iscsi_pool(params):
logger.debug("storage pool xml:\n%s" % poolxml)
try:
- logger.info("Creating %s storage pool" % poolname)
- stgobj.create_pool(poolxml)
- display_pool_info(stgobj,logger)
- if check_pool_create(stgobj, poolname,logger):
- logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
- else:
- logger.info("creating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ try:
+ logger.info("Creating %s storage pool" % poolname)
+ stgobj.create_pool(poolxml)
+ display_pool_info(stgobj,logger)
+ if check_pool_create(stgobj, poolname,logger):
+ logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("creating %s storage pool is UNSUCCESSFUL!!!" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_logical_volume.py b/repos/storage/create_logical_volume.py
index 43fdc42..e41bede 100644
--- a/repos/storage/create_logical_volume.py
+++ b/repos/storage/create_logical_volume.py
@@ -163,22 +163,23 @@ def create_logical_volume(params):
display_physical_volume()
try:
- logger.info("create %s storage volume" % volname)
- stgobj.create_volume(poolname, volxml)
- display_physical_volume()
- vol_num2 = get_storage_volume_number(stgobj, poolname)
- display_volume_info(stgobj, poolname)
- if check_volume_create(stgobj, poolname, volname, caps_kbyte) \
- and vol_num2 > vol_num1:
- logger.info("create %s storage volume is successful" % volname)
- return 0
- else:
- logger.error("fail to crearte %s storage volume" % volname)
+ try:
+ logger.info("create %s storage volume" % volname)
+ stgobj.create_volume(poolname, volxml)
+ display_physical_volume()
+ vol_num2 = get_storage_volume_number(stgobj, poolname)
+ display_volume_info(stgobj, poolname)
+ if check_volume_create(stgobj, poolname, volname, caps_kbyte) \
+ and vol_num2 > vol_num1:
+ logger.info("create %s storage volume is successful" % volname)
+ return 0
+ else:
+ logger.error("fail to crearte %s storage volume" % volname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_netfs_pool.py b/repos/storage/create_netfs_pool.py
index abe50f1..8ea781b 100644
--- a/repos/storage/create_netfs_pool.py
+++ b/repos/storage/create_netfs_pool.py
@@ -139,27 +139,28 @@ def create_netfs_pool(params):
logger.debug("storage pool xml:\n%s" % poolxml)
try:
- logger.info("Creating %s storage pool" % poolname)
- stgobj.create_pool(poolxml)
- display_pool_info(stgobj, logger)
- if check_pool_create_libvirt(stgobj, poolname, logger):
- logger.info("creating %s storage pool is \
- successful in libvirt" % poolname)
- if check_pool_create_OS(stgobj, poolname, logger):
- logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
- return 0
+ try:
+ logger.info("Creating %s storage pool" % poolname)
+ stgobj.create_pool(poolxml)
+ display_pool_info(stgobj, logger)
+ if check_pool_create_libvirt(stgobj, poolname, logger):
+ logger.info("creating %s storage pool is \
+ successful in libvirt" % poolname)
+ if check_pool_create_OS(stgobj, poolname, logger):
+ logger.info("creating %s storage pool is SUCCESSFUL!!!" % poolname)
+ return 0
+ else:
+ logger.info("creating %s storage pool is \
+ UNSUCCESSFUL!!!" % poolname)
+ return 1
else:
logger.info("creating %s storage pool is \
- UNSUCCESSFUL!!!" % poolname)
+ UNSUCCESSFUL in libvirt!!!" % poolname)
return 1
- else:
- logger.info("creating %s storage pool is \
- UNSUCCESSFUL in libvirt!!!" % poolname)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/create_netfs_volume.py b/repos/storage/create_netfs_volume.py
index a62fd4d..65d1215 100644
--- a/repos/storage/create_netfs_volume.py
+++ b/repos/storage/create_netfs_volume.py
@@ -172,12 +172,13 @@ def create_netfs_volume(params):
logger.debug("volume xml:\n%s" % volumexml)
try:
- logger.info("create %s volume" % volname)
- stgobj.create_volume(poolname, volumexml)
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
+ try:
+ logger.info("create %s volume" % volname)
+ stgobj.create_volume(poolname, volumexml)
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
+ return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_dir_pool.py b/repos/storage/define_dir_pool.py
index 757666f..03b15b7 100644
--- a/repos/storage/define_dir_pool.py
+++ b/repos/storage/define_dir_pool.py
@@ -35,7 +35,7 @@ from exception import LibvirtAPI
VIRSH_POOLLIST = "virsh --quiet pool-list --all|awk '{print $1}'|grep \"^%s$\""
POOL_STAT = "virsh --quiet pool-list --all|grep \"^%s\\b\" |grep \"inactive\""
-POOL_DESTROY = "virsh pool-destroy %s"
+POOL_DESTROY = "virsh pool-destroy %s"
POOL_UNDEFINE = "virsh pool-undefine %s"
def usage(params):
@@ -110,21 +110,22 @@ def define_dir_pool(params):
display_pool_info(stgobj, logger)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj, logger)
- if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
- logger.info("define %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("%s storage pool is undefined" % poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj, logger)
+ if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
+ logger.info("define %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool is undefined" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
@@ -133,7 +134,7 @@ def define_dir_pool(params):
def define_dir_pool_clean(params):
logger = params['logger']
- poolname = params['poolname']
+ poolname = params['poolname']
(status, output) = commands.getstatusoutput(VIRSH_POOLLIST % poolname)
if status:
pass
@@ -146,7 +147,7 @@ def define_dir_pool_clean(params):
logger.error("failed to destroy storage pool %s" % poolname)
logger.error("%s" % output)
else:
- (status, output) = commands.getstatusoutput(POOL_UNDEFINE % poolname)
+ (status, output) = commands.getstatusoutput(POOL_UNDEFINE % poolname)
if status:
logger.error("failed to undefine storage pool %s" % poolname)
logger.error("%s" % output)
@@ -156,5 +157,5 @@ def define_dir_pool_clean(params):
logger.error("failed to undefine storage pool %s" % poolname)
logger.error("%s" % output)
-
+
diff --git a/repos/storage/define_disk_pool.py b/repos/storage/define_disk_pool.py
index 85b6e7b..4b47814 100644
--- a/repos/storage/define_disk_pool.py
+++ b/repos/storage/define_disk_pool.py
@@ -125,22 +125,23 @@ def define_disk_pool(params):
display_pool_info(stgobj)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj)
- if check_pool_define(poolname) and pool_num2 > pool_num1:
- logger.info("It is successful to define %s storage pool" % poolname)
- return 0
- else:
- logger.error("%s storage pool was not defined successfully" % \
- poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj)
+ if check_pool_define(poolname) and pool_num2 > pool_num1:
+ logger.info("It is successful to define %s storage pool" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool was not defined successfully" % \
+ poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_iscsi_pool.py b/repos/storage/define_iscsi_pool.py
index 2066d19..5711159 100644
--- a/repos/storage/define_iscsi_pool.py
+++ b/repos/storage/define_iscsi_pool.py
@@ -123,21 +123,22 @@ def define_iscsi_pool(params):
display_pool_info(stgobj, logger)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj, logger)
- if check_pool_define(stgobj, poolname, logger) and pool_num2 > pool_num1:
- logger.info("define %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("%s storage pool is undefined" % poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj, logger)
+ if check_pool_define(stgobj, poolname, logger) and pool_num2 > pool_num1:
+ logger.info("define %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool is undefined" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_logical_pool.py b/repos/storage/define_logical_pool.py
index d97021d..71dbdeb 100644
--- a/repos/storage/define_logical_pool.py
+++ b/repos/storage/define_logical_pool.py
@@ -101,21 +101,22 @@ def define_logical_pool(params):
display_pool_info(stgobj, logger)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj, logger)
- if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
- logger.info("define %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("%s storage pool is undefined" % poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj, logger)
+ if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
+ logger.info("define %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool is undefined" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_mpath_pool.py b/repos/storage/define_mpath_pool.py
index 1a1f8fe..89db5ef 100644
--- a/repos/storage/define_mpath_pool.py
+++ b/repos/storage/define_mpath_pool.py
@@ -119,22 +119,23 @@ def define_mpath_pool(params):
display_pool_info(stgobj)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj)
- if check_pool_define(poolname) and pool_num2 > pool_num1:
- logger.info("It is successful to define %s storage pool" % poolname)
- return 0
- else:
- logger.error("%s storage pool was not defined successfully" % \
- poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj)
+ if check_pool_define(poolname) and pool_num2 > pool_num1:
+ logger.info("It is successful to define %s storage pool" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool was not defined successfully" % \
+ poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_netfs_pool.py b/repos/storage/define_netfs_pool.py
index 17988b7..68d7c86 100644
--- a/repos/storage/define_netfs_pool.py
+++ b/repos/storage/define_netfs_pool.py
@@ -102,21 +102,22 @@ def define_netfs_pool(params):
display_pool_info(stgobj, logger)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj, logger)
- if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
- logger.info("define %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("%s storage pool is undefined" % poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj, logger)
+ if check_pool_define(poolname, logger) and pool_num2 > pool_num1:
+ logger.info("define %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool is undefined" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/define_scsi_pool.py b/repos/storage/define_scsi_pool.py
index b49f412..a5193e2 100644
--- a/repos/storage/define_scsi_pool.py
+++ b/repos/storage/define_scsi_pool.py
@@ -123,22 +123,23 @@ def define_scsi_pool(params):
display_pool_info(stgobj)
try:
- logger.info("define %s storage pool" % poolname)
- stgobj.define_pool(poolxml)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj)
- if check_pool_define(poolname) and pool_num2 > pool_num1:
- logger.info("It is successful to define %s storage pool" % poolname)
- return 0
- else:
- logger.error("%s storage pool was not defined successfully" % \
- poolname)
+ try:
+ logger.info("define %s storage pool" % poolname)
+ stgobj.define_pool(poolxml)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj)
+ if check_pool_define(poolname) and pool_num2 > pool_num1:
+ logger.info("It is successful to define %s storage pool" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool was not defined successfully" % \
+ poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/delete_dir_volume.py b/repos/storage/delete_dir_volume.py
index 87cedc5..7e6c714 100644
--- a/repos/storage/delete_dir_volume.py
+++ b/repos/storage/delete_dir_volume.py
@@ -118,20 +118,21 @@ def delete_dir_volume(params):
display_volume_info(stgobj, poolname)
try:
- logger.info("delete %s storage volume" % volname)
- stgobj.delete_volume(poolname, volname)
- vol_num2 = get_storage_volume_number(stgobj, poolname)
- display_volume_info(stgobj, poolname)
- if check_volume_delete(volkey) and vol_num1 > vol_num2:
- logger.info("delete %s storage volume is successful" % volname)
- return 0
- else:
- logger.error("%s storage volume is undeleted" % volname)
+ try:
+ logger.info("delete %s storage volume" % volname)
+ stgobj.delete_volume(poolname, volname)
+ vol_num2 = get_storage_volume_number(stgobj, poolname)
+ display_volume_info(stgobj, poolname)
+ if check_volume_delete(volkey) and vol_num1 > vol_num2:
+ logger.info("delete %s storage volume is successful" % volname)
+ return 0
+ else:
+ logger.error("%s storage volume is undeleted" % volname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/delete_logical_pool.py b/repos/storage/delete_logical_pool.py
index 11f2130..c880aa3 100644
--- a/repos/storage/delete_logical_pool.py
+++ b/repos/storage/delete_logical_pool.py
@@ -115,21 +115,22 @@ def delete_logical_pool(params):
display_physical_volume()
try:
- logger.info("delete %s storage pool" % poolname)
- stgobj.delete_pool(poolname)
- display_pool_info(stgobj)
- display_physical_volume()
-
- if check_delete_pool(poolname):
- logger.info("delete %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("fail to delete %s storage pool" % poolname)
+ try:
+ logger.info("delete %s storage pool" % poolname)
+ stgobj.delete_pool(poolname)
+ display_pool_info(stgobj)
+ display_physical_volume()
+
+ if check_delete_pool(poolname):
+ logger.info("delete %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("fail to delete %s storage pool" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/delete_logical_volume.py b/repos/storage/delete_logical_volume.py
index 528d4e6..3dc7036 100644
--- a/repos/storage/delete_logical_volume.py
+++ b/repos/storage/delete_logical_volume.py
@@ -136,22 +136,23 @@ def delete_logical_volume(params):
display_volume_info(stgobj, poolname)
display_physical_volume()
try:
- logger.info("delete %s storage volume" % volname)
- stgobj.delete_volume(poolname, volname)
- vol_num2 = get_storage_volume_number(stgobj, poolname)
- display_volume_info(stgobj, poolname)
- display_physical_volume()
-
- if vol_num1 > vol_num2 and check_volume_delete(poolname, volkey):
- logger.info("delete %s storage volume is successful" % volname)
- return 0
- else:
- logger.error("fail to delete %s storage volume" % volname)
+ try:
+ logger.info("delete %s storage volume" % volname)
+ stgobj.delete_volume(poolname, volname)
+ vol_num2 = get_storage_volume_number(stgobj, poolname)
+ display_volume_info(stgobj, poolname)
+ display_physical_volume()
+
+ if vol_num1 > vol_num2 and check_volume_delete(poolname, volkey):
+ logger.info("delete %s storage volume is successful" % volname)
+ return 0
+ else:
+ logger.error("fail to delete %s storage volume" % volname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/delete_netfs_volume.py b/repos/storage/delete_netfs_volume.py
index 69a5616..e719087 100644
--- a/repos/storage/delete_netfs_volume.py
+++ b/repos/storage/delete_netfs_volume.py
@@ -118,20 +118,21 @@ def delete_netfs_volume(params):
display_volume_info(stgobj, poolname)
try:
- logger.info("delete %s storage volume" % volname)
- stgobj.delete_volume(poolname, volname)
- vol_num2 = get_storage_volume_number(stgobj, poolname)
- display_volume_info(stgobj, poolname)
- if check_volume_delete(volkey) and vol_num1 > vol_num2:
- logger.info("delete %s storage volume is successful" % volname)
- return 0
- else:
- logger.error("%s storage volume is undeleted" % volname)
+ try:
+ logger.info("delete %s storage volume" % volname)
+ stgobj.delete_volume(poolname, volname)
+ vol_num2 = get_storage_volume_number(stgobj, poolname)
+ display_volume_info(stgobj, poolname)
+ if check_volume_delete(volkey) and vol_num1 > vol_num2:
+ logger.info("delete %s storage volume is successful" % volname)
+ return 0
+ else:
+ logger.error("%s storage volume is undeleted" % volname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/pool_name.py b/repos/storage/pool_name.py
index a91ea5a..15329c4 100644
--- a/repos/storage/pool_name.py
+++ b/repos/storage/pool_name.py
@@ -87,18 +87,19 @@ def pool_name(params):
return 1
try:
- UUIDString = stgobj.get_pool_uuidstring(poolname)
- logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString))
- if check_pool_uuid(poolname, UUIDString, logger):
- logger.info(VIRSH_POOLNAME + " test succeeded.")
- return 0
- else:
- logger.error(VIRSH_POOLNAME + " test failed.")
+ try:
+ UUIDString = stgobj.get_pool_uuidstring(poolname)
+ logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString))
+ if check_pool_uuid(poolname, UUIDString, logger):
+ logger.info(VIRSH_POOLNAME + " test succeeded.")
+ return 0
+ else:
+ logger.error(VIRSH_POOLNAME + " test failed.")
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/pool_uuid.py b/repos/storage/pool_uuid.py
index 8bba936..ba92466 100644
--- a/repos/storage/pool_uuid.py
+++ b/repos/storage/pool_uuid.py
@@ -87,18 +87,19 @@ def pool_uuid(params):
return 1
try:
- UUIDString = stgobj.get_pool_uuidstring(poolname)
- logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString))
- if check_pool_uuid(poolname, UUIDString, logger):
- logger.info(VIRSH_POOLUUID + " test succeeded.")
- return 0
- else:
- logger.error(VIRSH_POOLUUID + " test failed.")
+ try:
+ UUIDString = stgobj.get_pool_uuidstring(poolname)
+ logger.info("the UUID string of pool %s is %s" % (poolname, UUIDString))
+ if check_pool_uuid(poolname, UUIDString, logger):
+ logger.info(VIRSH_POOLUUID + " test succeeded.")
+ return 0
+ else:
+ logger.error(VIRSH_POOLUUID + " test failed.")
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" % \
+ (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" % \
- (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
diff --git a/repos/storage/undefine_pool.py b/repos/storage/undefine_pool.py
index 8cf9e46..8246926 100644
--- a/repos/storage/undefine_pool.py
+++ b/repos/storage/undefine_pool.py
@@ -108,21 +108,22 @@ def undefine_pool(params):
display_pool_info(stgobj)
try:
- logger.info("undefine %s storage pool" % poolname)
- stgobj.undefine_pool(poolname)
- pool_num2 = stgobj.get_number_of_defpools()
- logger.info("current storage pool define number: %s" % pool_num2)
- display_pool_info(stgobj)
- if check_pool_undefine(poolname) and pool_num2 < pool_num1:
- logger.info("undefine %s storage pool is successful" % poolname)
- return 0
- else:
- logger.error("%s storage pool is undefined" % poolname)
+ try:
+ logger.info("undefine %s storage pool" % poolname)
+ stgobj.undefine_pool(poolname)
+ pool_num2 = stgobj.get_number_of_defpools()
+ logger.info("current storage pool define number: %s" % pool_num2)
+ display_pool_info(stgobj)
+ if check_pool_undefine(poolname) and pool_num2 < pool_num1:
+ logger.info("undefine %s storage pool is successful" % poolname)
+ return 0
+ else:
+ logger.error("%s storage pool is undefined" % poolname)
+ return 1
+ except LibvirtAPI, e:
+ logger.error("API error message: %s, error code is %s" \
+ % (e.response()['message'], e.response()['code']))
return 1
- except LibvirtAPI, e:
- logger.error("API error message: %s, error code is %s" \
- % (e.response()['message'], e.response()['code']))
- return 1
finally:
conn.close()
logger.info("closed hypervisor connection")
--
1.7.1
2
1
25 May '11
Anything generated that must end up in the tarball must either
have unconditional rules for generation (remote_protocol.c) or
must live in libvirt.git for the case where the person running
'make dist' has disabled the configure options that control the
rebuild of the generated file (remote_protocol-structs).
* src/Makefile.am (remote_protocol-structs): Add a dependency and
document why it must live in git.
($(srcdir)/remote/%_protocol.c, $(srcdir)/remote/%_protocol.c):
Unconditionally generate.
---
This should be the last piece of the puzzle for fixing an issue
that I first pointed out here:
https://www.redhat.com/archives/libvir-list/2011-May/msg00343.html
src/Makefile.am | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/Makefile.am b/src/Makefile.am
index 75ece49..af65158 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -206,7 +206,8 @@ r1 = (?:/\* \d+ \*/\n)?
r2 = /\* <[[:xdigit:]]+> \S+:\d+ \*/
.PHONY: remote_protocol-structs
-remote_protocol-structs:
+if WITH_REMOTE
+remote_protocol-structs: libvirt_driver_remote_la-remote_protocol.$(OBJEXT)
$(AM_V_GEN)if (pdwtags --help) > /dev/null 2>&1; then \
pdwtags --verbose libvirt_driver_remote_la-remote_protocol.$(OBJEXT) \
| perl -0777 -n \
@@ -232,12 +233,17 @@ remote_protocol-structs:
-e ' }' \
-e '}' \
> $@-t; \
- case $$? in 8) exit 0;; 0) ;; *) exit 1;; esac; \
+ case $$? in 8) exit 0;; 0) ;; *) exit 1;; esac; \
diff -u $@-t $(srcdir)/$@; st=$$?; rm -f $@-t; exit $$st; \
else \
echo 'WARNING: you lack pdwtags; skipping the $@ test' >&2; \
echo 'WARNING: install the dwarves package to get pdwtags' >&2; \
fi
+else !WITH_REMOTE
+# This generated file must live in git, because it cannot be re-generated
+# when configured --without-remote.
+remote_protocol-structs:
+endif
EXTRA_DIST += remote_protocol-structs
check-local: remote_protocol-structs
@@ -551,6 +557,8 @@ libvirt_driver_remote_la_SOURCES = $(REMOTE_DRIVER_SOURCES)
$(srcdir)/remote/remote_driver.c: $(REMOTE_DRIVER_GENERATED)
+endif WITH_REMOTE
+
$(srcdir)/remote/%_protocol.c: $(srcdir)/remote/%_protocol.x \
$(srcdir)/remote/%_protocol.h $(srcdir)/remote/rpcgen_fix.pl
$(AM_V_GEN)perl -w $(srcdir)/remote/rpcgen_fix.pl $(RPCGEN) -c \
@@ -561,8 +569,6 @@ $(srcdir)/remote/%_protocol.h: $(srcdir)/remote/%_protocol.x \
$(AM_V_GEN)perl -w $(srcdir)/remote/rpcgen_fix.pl $(RPCGEN) -h \
$< $@
-endif
-
if WITH_XEN
if WITH_DRIVER_MODULES
mod_LTLIBRARIES += libvirt_driver_xen.la
--
1.7.4.4
2
3