--- /dev/null
+#!/usr/bin/python
+# mclu (mini cluster)
+# Copyright (C) 2014 Red Hat Inc.
+#
+# 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.
+
+import argparse
+import fnmatch
+import libvirt
+
+import lib
+
+def cmdline (subparsers):
+ p = subparsers.add_parser (
+ 'reboot',
+ help='reboot virtual machine(s)',
+ )
+ p.add_argument (
+ '--force', action='store_const', const=True,
+ help='reset the virtual machine(s) forcibly'
+ )
+ p.add_argument (
+ 'wildcards', nargs='+',
+ help='virtual machine(s) to be rebooted'
+ )
+ p.set_defaults (run=run)
+
+def run (c, args, nodes):
+ running, _ = lib.get_all_guests (c, nodes.values ())
+
+ for vm in running.values():
+ node = vm['node']
+ dom = vm['dom']
+ # Form the name of this VM (eg. "ham0:vm") so we can match it
+ # against the wildcards (eg. "ham0:*")
+ name = node.name + ":" + dom.name()
+ for wc in args.wildcards:
+ if fnmatch.fnmatch (name, wc) or fnmatch.fnmatch (dom.name(), wc):
+ if args.force:
+ dom.reset(0)
+ else:
+ dom.reboot(0)