
+1 On 04/14/2011 01:01 PM, Sharad Mishra wrote:
# HG changeset patch # User Sharad Mishra<snmishra@us.ibm.com> # Date 1302722853 25200 # Node ID b1695aa081851829a25a8210bef8de0348c7b089 # Parent a521a11eeec4b41399ca954ab17b874a708eb4b3 Add support for StoragePool autostart.
This patch adds support to set autostart on StoragePools
Signed-off-by: Sharad Mishra<snmishra@us.ibm.com>
diff -r a521a11eeec4 -r b1695aa08185 libxkutil/pool_parsing.c --- a/libxkutil/pool_parsing.c Wed Mar 23 09:32:46 2011 -0700 +++ b/libxkutil/pool_parsing.c Wed Apr 13 12:27:33 2011 -0700 @@ -241,6 +241,7 @@ const xmlChar *xpathstr = (xmlChar *)"/pool"; const char *name;
+ CU_DEBUG("Pool XML : %s", xml); len = strlen(xml) + 1;
if ((xmldoc = xmlParseMemory(xml, len)) == NULL) @@ -277,11 +278,11 @@ return ret; }
-int define_pool(virConnectPtr conn, const char *xml, int res_type) +int define_pool(virConnectPtr conn, const char *xml, struct virt_pool *pool) { int ret = 1;
- if (res_type == CIM_RES_TYPE_NET) { + if (pool->type == CIM_RES_TYPE_NET) { virNetworkPtr ptr = virNetworkDefineXML(conn, xml); if (ptr == NULL) { CU_DEBUG("Unable to define virtual network"); @@ -297,7 +298,7 @@ }
virNetworkFree(ptr); - } else if (res_type == CIM_RES_TYPE_DISK) { + } else if (pool->type == CIM_RES_TYPE_DISK) { #if VIR_USE_LIBVIRT_STORAGE virStoragePoolPtr ptr = virStoragePoolDefineXML(conn, xml, 0); if (ptr == NULL) { @@ -313,6 +314,11 @@ CU_DEBUG("Unable to undefine storage pool"); }
+ if (pool->pool_info.disk.autostart == 1) { + if (virStoragePoolSetAutostart(ptr, 1) != 0) + CU_DEBUG("Unable to set autostart for pool"); + } + virStoragePoolFree(ptr); #endif } diff -r a521a11eeec4 -r b1695aa08185 libxkutil/pool_parsing.h --- a/libxkutil/pool_parsing.h Wed Mar 23 09:32:46 2011 -0700 +++ b/libxkutil/pool_parsing.h Wed Apr 13 12:27:33 2011 -0700 @@ -53,6 +53,7 @@ char *adapter; char *port_name; char *node_name; + uint16_t autostart; };
struct virt_pool { @@ -89,7 +90,7 @@ int get_pool_from_xml(const char *xml, struct virt_pool *pool, int type); char *get_disk_pool_type(uint16_t type);
-int define_pool(virConnectPtr conn, const char *xml, int res_type); +int define_pool(virConnectPtr conn, const char *xml, struct virt_pool *pool); int destroy_pool(virConnectPtr conn, const char *name, int res_type);
char *create_resource(virConnectPtr conn, const char *pname, diff -r a521a11eeec4 -r b1695aa08185 schema/ResourceAllocationSettingData.mof --- a/schema/ResourceAllocationSettingData.mof Wed Mar 23 09:32:46 2011 -0700 +++ b/schema/ResourceAllocationSettingData.mof Wed Apr 13 12:27:33 2011 -0700 @@ -350,6 +350,7 @@ Values {"Unknown", "Directory, File System, Network File System, " "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; + uint16 Autostart; string Path; string DevicePaths[]; string Host; @@ -369,6 +370,7 @@ Values {"Unknown", "Directory, File System, Network File System, " "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; + uint16 Autostart; string Path; string DevicePaths[]; string Host; @@ -388,6 +390,7 @@ Values {"Unknown", "Directory, File System, Network File System, " "Disk, ISCSI, Logical, SCSI Host Bus Adapter"}] uint16 Type; + uint16 Autostart; string Path; string DevicePaths[]; string Host; diff -r a521a11eeec4 -r b1695aa08185 src/Virt_DevicePool.c --- a/src/Virt_DevicePool.c Wed Mar 23 09:32:46 2011 -0700 +++ b/src/Virt_DevicePool.c Wed Apr 13 12:27:33 2011 -0700 @@ -101,6 +101,8 @@ if (xml == NULL) return 0;
+ CU_DEBUG("pool xml is %s", xml); + *pool = malloc(sizeof(**pool)); if (*pool == NULL) { ret = 0; @@ -175,6 +177,8 @@ uint16_t type; struct virt_pool *pool_vals = NULL; const char *pool_str = NULL; + uint16_t autostart; + int start;
pool = virStoragePoolLookupByName(conn, _pool->tag); if (pool == NULL) { @@ -215,6 +219,17 @@ CMPI_chars); }
+ if (virStoragePoolGetAutostart(pool,&start) == -1) { + CU_DEBUG("Failed to read if %s StoragePool is set for " + "Autostart", _pool->tag); + goto out; + } + + autostart = start; + + CMSetProperty(inst, "Autostart", + (CMPIValue *)&autostart, CMPI_uint16); + result = true; out: virStoragePoolFree(pool); diff -r a521a11eeec4 -r b1695aa08185 src/Virt_ResourcePoolConfigurationService.c --- a/src/Virt_ResourcePoolConfigurationService.c Wed Mar 23 09:32:46 2011 -0700 +++ b/src/Virt_ResourcePoolConfigurationService.c Wed Apr 13 12:27:33 2011 -0700 @@ -150,6 +150,7 @@ pool->pool_info.disk.adapter = NULL; pool->pool_info.disk.port_name = NULL; pool->pool_info.disk.node_name = NULL; + pool->pool_info.disk.autostart = 0; }
static char *get_dev_paths(CMPIInstance *inst, @@ -289,6 +290,7 @@ const char *val = NULL; const char *msg = NULL; uint16_t type; + uint16_t autostart;
if (cu_get_u16_prop(inst, "Type",&type) != CMPI_RC_OK) return "Missing `Type' property"; @@ -326,6 +328,14 @@
pool->pool_info.disk.path = strdup(val);
+ if (cu_get_u16_prop(inst, "Autostart",&autostart) != CMPI_RC_OK) { + CU_DEBUG("Failed to get Autostart, defaulting " + "to no autostart"); + autostart = 0; + } + + pool->pool_info.disk.autostart = autostart; + out: return msg;
@@ -440,7 +450,7 @@ static CMPIInstance *connect_and_create(char *xml, const CMPIObjectPath *ref, const char *id, - int res_type, + struct virt_pool *pool, CMPIStatus *s) { virConnectPtr conn; @@ -452,7 +462,7 @@ return NULL; }
- if (define_pool(conn, xml, res_type) == 0) { + if (define_pool(conn, xml, pool) == 0) { virt_set_status(_BROKER, s, CMPI_RC_ERR_FAILED, conn, @@ -544,7 +554,7 @@
CU_DEBUG("Pool XML:\n%s", xml);
- inst = connect_and_create(xml, reference, full_id, pool->type,&s); + inst = connect_and_create(xml, reference, full_id, pool,&s); if (s.rc != CMPI_RC_OK) goto out;
diff -r a521a11eeec4 -r b1695aa08185 src/Virt_SettingsDefineCapabilities.c --- a/src/Virt_SettingsDefineCapabilities.c Wed Mar 23 09:32:46 2011 -0700 +++ b/src/Virt_SettingsDefineCapabilities.c Wed Apr 13 12:27:33 2011 -0700 @@ -1521,19 +1521,24 @@ DISK_POOL_SCSI}; int pool_types = 7; int i; + uint16_t autostart;
switch (template_type) { case SDC_RASD_MIN: id = "Minimum"; + autostart = 0; break; case SDC_RASD_MAX: id = "Maximum"; + autostart = 1; break; case SDC_RASD_INC: id = "Increment"; + autostart = 1; break; case SDC_RASD_DEF: id = "Default"; + autostart = 0; break; default: cu_statusf(_BROKER,&s, @@ -1633,6 +1638,8 @@
CMSetProperty(inst, "Type", (CMPIValue *)&type[i], CMPI_uint16); CMSetProperty(inst, "Path", (CMPIValue *)path, CMPI_chars); + CMSetProperty(inst, "Autostart", (CMPIValue *)&autostart, + CMPI_uint16);
inst_list_add(list, inst); }
_______________________________________________ Libvirt-cim mailing list Libvirt-cim@redhat.com https://www.redhat.com/mailman/listinfo/libvirt-cim
-- Chip Vincent Open Virtualization IBM Linux Technology Center cvincent@linux.vnet.ibm.com