[Libvirt-cim] [PATCH 2 of 2] Add VSSS 03_create_snapshot.py
Deepti B Kalakeri
deeptik at linux.vnet.ibm.com
Thu May 14 08:59:55 UTC 2009
Just minor comments...
Kaitlin Rupert wrote:
> # HG changeset patch
> # User Kaitlin Rupert <karupert at us.ibm.com>
> # Date 1242082293 25200
> # Node ID 3c03fd52e4400d1117203c47a50ca1b8e75bf5f3
> # Parent 61d1a7aa49471be6604552efc2dba8491ccd0ad7
> Add VSSS 03_create_snapshot.py
>
> This test case attempts a guest snapshot and verifies the results.
>
> Signed-off-by: Kaitlin Rupert <karupert at us.ibm.com>
>
> diff -r 61d1a7aa4947 -r 3c03fd52e440 suites/libvirt-cim/cimtest/VirtualSystemSnapshotService/03_create_snapshot.py
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/suites/libvirt-cim/cimtest/VirtualSystemSnapshotService/03_create_snapshot.py Mon May 11 15:51:33 2009 -0700
> @@ -0,0 +1,140 @@
> +#!/usr/bin/python
> +#
> +# Copyright 2009 IBM Corp.
> +#
> +# Authors:
> +# Kaitlin Rupert <karupert at us.ibm.com>
> +#
> +# This library is free software; you can redistribute it and/or
> +# modify it under the terms of the GNU General Public
> +# License as published by the Free Software Foundation; either
> +# version 2.1 of the License, or (at your option) any later version.
> +#
> +# This library is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> +# General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public
> +# License along with this library; if not, write to the Free Software
> +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> +#
>
A one line desc of the test case would be good.
> +
> +import sys
> +from pywbem import CIM_ERR_FAILED, cim_types
>
CIM_ERR_FAILED is not needed.
> +from CimTest.Globals import logger
> +from CimTest.ReturnCodes import PASS, FAIL
> +from XenKvmLib.const import do_main
> +from XenKvmLib.vxml import get_class
> +from XenKvmLib.classes import get_typed_class, inst_to_mof
> +from XenKvmLib.enumclass import EnumNames, EnumInstances, GetInstance
> +from XenKvmLib.vsss import remove_snapshot
> +
> +sup_types = ['Xen', 'KVM', 'XenFV', 'LXC']
> +
> +SNAPSHOT = cim_types.Uint16(32769)
> +test_dom = "snapshot_vm"
> +
> +def get_cs_ref(virt, ip):
> + cs_cn = get_typed_class(virt, "ComputerSystem")
> +
> + cs_refs = EnumNames(ip, cs_cn)
> + if cs_refs is None or len(cs_refs) < 1:
> + logger.error("Exp at least one domain defined on the system")
> + return FAIL, None
> +
> + cs_ref = None
> + for ref in cs_refs:
> + if ref['Name'] == test_dom:
> + cs_ref = ref
> + break
> +
> + if cs_ref is None:
> + logger.error("Enum of %s didn't return %s", cs_cn, test_dom)
> + return FAIL, None
> +
> + return PASS, cs_ref
> +
> +def get_vsssc_inst(virt, ip):
> + vsssc_cn = get_typed_class(virt, "VirtualSystemSnapshotServiceCapabilities")
> +
> + vsssc_insts = EnumInstances(ip, vsssc_cn, ret_cim_inst=True)
> + if vsssc_insts is None or len(vsssc_insts) < 1:
> + logger.error("Exp at least one %s", vsssc_cn)
> + return FAIL, None
> +
> + vsssc = vsssc_insts[0]
> +
> + #Override the additional instance values. We only care about the key
> + #values (eventhough CreateSnapshot takes a instance)
> + vsssc['SynchronousMethodsSupported'] = ""
> + vsssc['SnapshotTypesSupported'] = ""
> +
> + vsssc = inst_to_mof(vsssc)
> +
> + return PASS, vsssc
> +
> + at do_main(sup_types)
> +def main():
> + options = main.options
> +
> + cxml = get_class(options.virt)(test_dom)
> +
> + try:
> + ret = cxml.cim_define(options.ip)
> + if not ret:
> + raise Exception("Unable to define %s", test_dom)
> +
> + status = cxml.cim_start(options.ip)
> + if status != PASS:
> + raise Exception("Failed to start the defined domain: %s" % test_dom)
> +
> + status, cs_ref = get_cs_ref(options.virt, options.ip)
> + if status != PASS:
> + raise Exception("Unable to get reference for %s" % test_dom)
> +
> + status, vsssc = get_vsssc_inst(options.virt, options.ip)
> + if status != PASS:
> + raise Exception("Unable to get VSSSC instance")
> +
> + vsss_cn = get_typed_class(options.virt, "VirtualSystemSnapshotService")
> + vsss_refs = EnumNames(options.ip, vsss_cn)
> + if vsss_refs is None or len(vsss_refs) < 1:
> + raise Exception("Exp at least one %s" % vsss_cn)
> +
> + service = vsss_refs[0]
> + keys = { 'Name' : service['Name'],
> + 'CreationClassName' : service['CreationClassName'],
> + 'SystemCreationClassName' : service['SystemCreationClassName'],
> + 'SystemName' : service['SystemName']
> + }
> + service = GetInstance(options.ip, vsss_cn, keys)
> +
> + output = service.CreateSnapshot(AffectedSystem=cs_ref,
> + SnapshotSettings=vsssc,
> + SnapshotType=SNAPSHOT)
> +
> + ret = output[0]
> + if ret != 0:
> + raise Exception("Snapshot of %s failed!" % test_dom)
> +
> + if output[1]['Job'] is None:
> + raise Exception("CreateSnapshot failed to return a CIM job inst")
> +
> + if output[1]['ResultingSnapshot'] is None:
> + raise Exception("CreateSnapshot failed to return ResultingSnapshot")
> +
> + except Exception, detail:
> + logger.error("Exception: %s", detail)
> + status = FAIL
> +
> + cxml.cim_destroy(options.ip)
> + cxml.undefine(options.ip)
> +
> + remove_snapshot(options.ip, test_dom)
> +
> + return status
> +
> +if __name__ == "__main__":
> + sys.exit(main())
> +
>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
>
--
Thanks and Regards,
Deepti B. Kalakeri
IBM Linux Technology Center
deeptik at linux.vnet.ibm.com
More information about the Libvirt-cim
mailing list