2 # -*- coding: utf-8 -*-
4 # This file is part of Karesansui.
6 # Copyright (C) 2009-2010 HDE, Inc.
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public License
10 # as published by the Free Software Foundation; either version 2
11 # of the License, or (at your option) any later version.
17 from optparse import OptionParser
19 from ksscommand import KssCommand, KssCommandOptException
25 from karesansui import __version__
26 from karesansui.lib.virt.virt import KaresansuiVirtConnection
27 from karesansui.lib.utils import load_locale
29 print >>sys.stderr, "[Error] karesansui package was not found."
34 usage = '%prog [options]'
37 optp = OptionParser(usage=usage, version=__version__)
38 optp.add_option('-n', '--name', dest='name', help=_('Domain name'))
39 optp.add_option('-d', '--disk', dest='disk', help=_('Disk image file'))
40 optp.add_option('-t', '--target', dest='target', help=_('Device target'), default=None)
41 return optp.parse_args()
45 raise KssCommandOptException('ERROR: %s option is required.' % '-n or --name')
46 if not opts.disk or not os.path.exists(opts.disk):
47 raise KssCommandOptException('ERROR: disk image not found.')
52 class AppendDisk(KssCommand):
55 (opts, args) = getopts()
59 conn = KaresansuiVirtConnection(readonly=False)
61 conn.set_domain_name(opts.name)
65 opts.target = conn.guest.next_disk_target()
67 conn.guest.append_disk(opts.disk,opts.target)
72 self.logger.info('Appended disk device. - dom=%s target=%s path=%s' \
73 % (opts.name, opts.target, opts.disk))
74 print >>sys.stdout, _('Appended disk device. - dom=%s target=%s path=%s') \
75 % (opts.name,opts.target,opts.disk)
78 if __name__ == "__main__":
80 sys.exit(target.run())