mirror of
https://github.com/virt-manager/virt-manager.git
synced 2024-10-27 01:55:20 +03:00
virtinst: Add DomainSnapshot object and some plumbing
Just for parsing domainsnapshot XML and performing some support checks
This commit is contained in:
parent
3b9c397d11
commit
9d11c7eae3
37
tests/xmlparse-xml/change-snapshot-in.xml
Normal file
37
tests/xmlparse-xml/change-snapshot-in.xml
Normal file
@ -0,0 +1,37 @@
|
||||
<domainsnapshot>
|
||||
<name>offline-root-child1</name>
|
||||
<state>shutoff</state>
|
||||
<description>offline desk</description>
|
||||
<parent>
|
||||
<name>offline-root</name>
|
||||
</parent>
|
||||
<creationTime>1375905916</creationTime>
|
||||
<memory snapshot='no'/>
|
||||
<disks>
|
||||
<disk name='hda' snapshot='internal'/>
|
||||
</disks>
|
||||
<domain type='test'>
|
||||
<name>test-internal-snapshots</name>
|
||||
<uuid>12345678-1234-fddf-1234-12345678ffff</uuid>
|
||||
<memory unit='KiB'>409600</memory>
|
||||
<currentMemory unit='KiB'>409600</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<bootloader>/tmp/bootfoo</bootloader>
|
||||
<os>
|
||||
<type arch='i686'>xen</type>
|
||||
</os>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<disk type='file' device='disk'>
|
||||
<source file='/dev/default-pool/test-clone-simple.img'/>
|
||||
<target dev='hda' bus='ide'/>
|
||||
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
|
||||
</disk>
|
||||
<controller type='ide' index='0'/>
|
||||
</devices>
|
||||
</domain>
|
||||
<active>0</active>
|
||||
</domainsnapshot>
|
39
tests/xmlparse-xml/change-snapshot-out.xml
Normal file
39
tests/xmlparse-xml/change-snapshot-out.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<domainsnapshot>
|
||||
<name>name-foo</name>
|
||||
<state>somestate</state>
|
||||
<description>foo
|
||||
newline
|
||||
indent</description>
|
||||
<parent>
|
||||
<name>newparent</name>
|
||||
</parent>
|
||||
<creationTime>1234</creationTime>
|
||||
<memory snapshot="no"/>
|
||||
<disks>
|
||||
<disk name="hda" snapshot="internal"/>
|
||||
</disks>
|
||||
<domain type="test">
|
||||
<name>test-internal-snapshots</name>
|
||||
<uuid>12345678-1234-fddf-1234-12345678ffff</uuid>
|
||||
<memory unit="KiB">409600</memory>
|
||||
<currentMemory unit="KiB">409600</currentMemory>
|
||||
<vcpu placement="static">1</vcpu>
|
||||
<bootloader>/tmp/bootfoo</bootloader>
|
||||
<os>
|
||||
<type arch="i686">xen</type>
|
||||
</os>
|
||||
<clock offset="utc"/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<disk type="file" device="disk">
|
||||
<source file="/dev/default-pool/test-clone-simple.img"/>
|
||||
<target dev="hda" bus="ide"/>
|
||||
<address type="drive" controller="0" bus="0" target="0" unit="0"/>
|
||||
</disk>
|
||||
<controller type="ide" index="0"/>
|
||||
</devices>
|
||||
</domain>
|
||||
<active>0</active>
|
||||
</domainsnapshot>
|
@ -787,6 +787,20 @@ class XMLParseTest(unittest.TestCase):
|
||||
|
||||
self._alter_compare(guest.get_xml_config(), outfile)
|
||||
|
||||
def testChangeSnapshot(self):
|
||||
basename = "change-snapshot"
|
||||
infile = "tests/xmlparse-xml/%s-in.xml" % basename
|
||||
outfile = "tests/xmlparse-xml/%s-out.xml" % basename
|
||||
snap = virtinst.DomainSnapshot(conn, parsexml=file(infile).read())
|
||||
|
||||
check = self._make_checker(snap)
|
||||
check("name", "offline-root-child1", "name-foo")
|
||||
check("state", "shutoff", "somestate")
|
||||
check("description", "offline desk", "foo\nnewline\n indent")
|
||||
check("parent", "offline-root", "newparent")
|
||||
check("creationTime", 1375905916, 1234)
|
||||
|
||||
utils.diff_compare(snap.get_xml_config(), outfile)
|
||||
|
||||
def testzzzzCheckProps(self):
|
||||
# pylint: disable=W0212
|
||||
|
@ -61,5 +61,6 @@ from virtinst.distroinstaller import DistroInstaller
|
||||
|
||||
from virtinst.guest import Guest
|
||||
from virtinst.cloner import Cloner
|
||||
from virtinst.snapshot import DomainSnapshot
|
||||
|
||||
from virtinst.connection import VirtualConnection
|
||||
|
37
virtinst/snapshot.py
Normal file
37
virtinst/snapshot.py
Normal file
@ -0,0 +1,37 @@
|
||||
#
|
||||
# Copyright 2013 Red Hat, Inc.
|
||||
# Cole Robinson <crobinso@redhat.com>
|
||||
#
|
||||
# This program 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 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program 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 program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
# MA 02110-1301 USA.
|
||||
|
||||
from virtinst.xmlbuilder import XMLBuilder, XMLProperty
|
||||
|
||||
|
||||
class DomainSnapshot(XMLBuilder):
|
||||
_XML_ROOT_XPATH = "/domainsnapshot"
|
||||
_XML_PROP_ORDER = ["name", "description", "creationTime"]
|
||||
|
||||
name = XMLProperty(xpath="./name")
|
||||
description = XMLProperty(xpath="./description")
|
||||
state = XMLProperty(xpath="./state")
|
||||
creationTime = XMLProperty(xpath="./creationTime", is_int=True)
|
||||
parent = XMLProperty(xpath="./parent/name")
|
||||
|
||||
# Missing bits:
|
||||
# <memory> @type and @file
|
||||
# <disks> block which has a psuedo VM disk device
|
||||
# <domain> block which tracks the snapshot guest XML
|
||||
# <active> which should list active status for an internal snapshot
|
@ -342,6 +342,9 @@ SUPPORT_DOMAIN_JOB_INFO = _make(function="virDomain.jobInfo", args=())
|
||||
SUPPORT_DOMAIN_CONSOLE_STREAM = _make(version=9003)
|
||||
SUPPORT_DOMAIN_SET_METADATA = _make(version=9010)
|
||||
SUPPORT_DOMAIN_CPU_HOST_MODEL = _make(version=9010)
|
||||
SUPPORT_DOMAIN_LIST_SNAPSHOTS = _make(function="virDomain.listAllSnapshots",
|
||||
args=())
|
||||
|
||||
|
||||
# Pool checks
|
||||
# This can't ever require a pool object for back compat reasons
|
||||
|
Loading…
Reference in New Issue
Block a user