repos/domain/define.py repos/domain/xmls/kvm_guest_define.xml: the define.py will use the kvm_guest_define.xml by default. it also support a file given by user. --- repos/domain/define.py | 50 ++++++++++++++----------------- repos/domain/xmls/kvm_guest_define.xml | 47 ++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 repos/domain/xmls/kvm_guest_define.xml diff --git a/repos/domain/define.py b/repos/domain/define.py index c8fe20e..18e87ac 100644 --- a/repos/domain/define.py +++ b/repos/domain/define.py @@ -14,21 +14,21 @@ from src import sharedmod from utils import utils from utils import xmlbuilder -required_params = ('guestname', 'guesttype',) -optional_params = ('uuid', - 'memory', - 'vcpu', - 'disksize', - 'fullimagepath', - 'imagetype', - 'hdmodel', - 'nicmodel', - 'macaddr', - 'ifacetype', - 'source',) +required_params = ('guestname', 'diskpath',) +optional_params = {'memory': 1048576, + 'vcpu': 1, + 'hddriver' : 'virtio', + 'nicdriver': 'virtio', + 'macaddr': '52:54:00:97:e4:28', + 'uuid' : '05867c1a-afeb-300e-e55e-2673391ae080', + 'username': None, + 'password': None, + 'guesttype': 'kvm', + 'xml': 'xmls/kvm_guest_define.xml' + } def check_define_domain(guestname, guesttype, hostname, username, \ - password, util, logger): + password, logger): """Check define domain result, if define domain is successful, guestname.xml will exist under /etc/libvirt/qemu/ and can use virt-xml-validate tool to check the file validity @@ -59,29 +59,25 @@ def define(params): """Define a domain from xml""" logger = params['logger'] guestname = params['guestname'] - guesttype = params['guesttype'] + + xmlstr = params['xml'] + logger.debug("domain xml:\n%s" % xmlstr) + conn = sharedmod.libvirtobj['conn'] uri = conn.getURI() - hostname = utils.parser_uri(uri)[1] + hostname = utils.parse_uri(uri)[1] + username = params.get('username', '') + password = params.get('password', '') + guesttype = params.get('guesttype', 'kvm') - username = params['username'] - password = params['password'] logger.info("define domain on %s" % uri) - # Generate damain xml - xml_obj = xmlbuilder.XmlBuilder() - domain = xml_obj.add_domain(params) - xml_obj.add_disk(params, domain) - xml_obj.add_interface(params, domain) - dom_xml = xml_obj.build_domain(domain) - logger.debug("domain xml:\n%s" %dom_xml) - # Define domain from xml try: - conn.defineXML(dom_xml) + conn.defineXML(xmlstr) if check_define_domain(guestname, guesttype, hostname, \ - username, password, util, logger): + username, password, logger): logger.info("define a domain form xml is successful") else: logger.error("fail to check define domain") diff --git a/repos/domain/xmls/kvm_guest_define.xml b/repos/domain/xmls/kvm_guest_define.xml new file mode 100644 index 0000000..385ec66 --- /dev/null +++ b/repos/domain/xmls/kvm_guest_define.xml @@ -0,0 +1,47 @@ +<domain type='kvm'> + <name>GUESTNAME</name> + <uuid>UUID</uuid> + <memory unit='KiB'>MEMORY</memory> + <currentMemory unit='KiB'>MEMORY</currentMemory> + <vcpu>VCPU</vcpu> + <os> + <type arch='x86_64' machine='pc-0.14'>hvm</type> + <boot dev='hd'/> + </os> + <features> + <acpi/> + <apic/> + <pae/> + </features> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <disk type='file' device='disk'> + <driver name='qemu' type='qcow2'/> + <source file='DISKPATH'/> + <target dev='vda' bus='HDDRIVER'/> + </disk> + <interface type='network'> + <mac address='MACADDR'/> + <model type='NICDRIVER'/> + <source network='default'/> + </interface> + <serial type='pty'> + <target port='0'/> + </serial> + <console type='pty'> + <target type='serial' port='0'/> + </console> + <input type='mouse' bus='ps2'/> + <graphics type='vnc' port='-1' autoport='yes'/> + <sound model='ich6'> + </sound> + <video> + <model type='cirrus' vram='9216' heads='1'/> + </video> + <memballoon model='virtio'> + </memballoon> + </devices> +</domain> -- 1.7.7.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list