Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 112 lines (94 sloc) 3.552 kb
#!/usr/bin/env python
# Copyright (C) 2010,2011 Chris Lalancette <clalance@redhat.com>
# Copyright (C) 2012 Chris Lalancette <clalancette@gmail.com>
# 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;
# version 2.1 of the License.
# 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, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import sys
import getopt
import os
import logging
import stat
import oz.TDL
import oz.GuestFactory
import oz.ozutil
def usage():
print("Usage: oz-customize [OPTIONS] <tdl> <libvirt_xml_file>")
print(" OPTIONS:")
print(" -c <config>\tGet config from <config> (default is /etc/oz/oz.cfg)")
print(" -d <level>\tTurn up logging level. The levels are:")
print("\t\t\t0 - errors only (this is the default)")
print("\t\t\t1 - errors and warnings")
print("\t\t\t2 - errors, warnings, and information")
print("\t\t\t3 - all messages")
print("\t\t\t4 - all messages, prepended with the level and classname")
print(" -h\t\tPrint this help message")
print(" Currently supported architectures are:")
print(" i386, x86_64")
print(" Currently supported distros are:")
oz.GuestFactory.distrolist()
sys.exit(1)
try:
opts, args = getopt.gnu_getopt(sys.argv[1:], 'c:d:h', ['config', 'debug',
'help'])
except getopt.GetoptError as err:
print(str(err))
usage()
loglevel = logging.ERROR
logformat = "%(message)s"
config_file = None
for o, a in opts:
if o in ("-c", "--config"):
config_file = a
elif o in ("-d", "--debug"):
try:
d_int = int(a)
except ValueError:
usage()
if d_int == 0:
loglevel = logging.ERROR
elif d_int == 1:
loglevel = logging.WARNING
elif d_int == 2:
loglevel = logging.INFO
elif d_int == 3:
loglevel = logging.DEBUG
elif d_int >= 4:
loglevel = logging.DEBUG
logformat = logging.BASIC_FORMAT
elif o in ("-h", "--help"):
usage()
else:
assert False, "unhandled option"
if len(args) != 2:
usage()
try:
config = oz.ozutil.parse_config(config_file)
tdlfile = args[0]
libvirt_xml_file = args[1]
logging.basicConfig(level=loglevel, format=logformat)
tdl = oz.TDL.TDL(open(tdlfile, 'r').read())
guest = oz.GuestFactory.guest_factory(tdl, config, None)
# Arbitrarily limit the size of the XML file that we will support to 5MB.
# this should be plenty for a normal libvirt XML, and this should prevent us
# from causing OOMs on bogus files
if os.stat(libvirt_xml_file)[stat.ST_SIZE] > (5 * 1024 * 1024):
raise Exception("libvirt XML file is too big!")
guest.customize(open(libvirt_xml_file, 'r').read())
except Exception as exc:
if loglevel > logging.DEBUG:
print("")
print("ERROR: %s" % (str(exc)))
print("")
print("(use -d3 to get the full backtrace)")
print("")
else:
raise
Jump to Line
Something went wrong with that request. Please try again.