X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=mclu_on.py;fp=mclu_on.py;h=31ff86ce9d41c7d42a103f3381aa29d1c862cacc;hb=290cf66cb7a5a6568bd090431793a2639ef4c4b9;hp=0000000000000000000000000000000000000000;hpb=d406a1d14b7ab17cced29df9f2f62a01336eeef0;p=mclu.git diff --git a/mclu_on.py b/mclu_on.py new file mode 100644 index 0000000..31ff86c --- /dev/null +++ b/mclu_on.py @@ -0,0 +1,62 @@ +#!/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 sys +import os +import subprocess + +import argparse +import lib + +def cmdline (subparsers): + p = subparsers.add_parser ( + 'on', + help='power on a node (or nodes)' + ) + p.add_argument ( + '--all', action='store_const', const=True, + help='wake up all nodes' + ) + p.add_argument ( + 'nodes', nargs='*', + help='node name to be woken up' + ) + p.set_defaults (run=run) + +def run (c, args, all_nodes): + nodes = lib.get_nodes_by_name (all_nodes, args.nodes, args.all) + + # Wake them up. + up = 0 + for node in nodes: + if node.ping (force=True): + up += 1 + else: + node.wake() + + # Wait for them to come up. + pings = 30 + while pings > 0 and up < len (nodes): + for node in nodes: + if not node.up: + if node.ping (force=True): + up += 1 + pings -= 1 + + if pings == 0: + sys.exit ('warning: some nodes did not wake up')