#!/usr/bin/python3 # # Copyright (C) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser 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 # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library. If not, see # . # # Authors: # Jim Fehlig # # Read native Xen configuration format, convert to libvirt domXML, and # import (virsh define ) into libvirt. import sys import os import argparse import re from xml.etree import ElementTree try: import libvirt except ImportError: print('Unable to import the libvirt module. Is libvirt-python installed?') sys.exit(1) parser = argparse.ArgumentParser(description='Import Xen domain configuration into libvirt') parser.add_argument('-c', '--convert-only', help='Convert Xen domain configuration into libvirt domXML, but do not import into libvirt', action='store_true', dest='convert_only') parser.add_argument('-r', '--recursive', help='Operate recursivelly on all Xen domain configuration rooted at path', action='store_true') parser.add_argument('-f', '--format', help='Format of Xen domain configuration. Supported formats are xm and sexpr', choices=['xm', 'sexpr'], default=None) parser.add_argument('-v', '--verbose', help='Print information about the import process', action='store_true') parser.add_argument('path', help='Path to Xen domain configuration') def print_verbose(msg): if args.verbose: print(msg) def check_config(path, config): isbinary = os.system('file -b ' + path + ' | grep text > /dev/null') if isbinary: print('Skipping %s (not a valid Xen configuration file)' % path) return 'unknown' for line in config.splitlines(): if len(line) == 0 or line.startswith('#'): continue if line.startswith('