From: David Howells <dhowells@redhat.com> Date: Sat, 12 Apr 2014 16:47:54 +0000 (+0100) Subject: Implement "bos {start,stop}" and make "bos delete" handle multiple instances X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=3e37675fa86d573c00f407912d4affb0cab36c4f;p=users%2Fdhowells%2Fkafs-utils.git Implement "bos {start,stop}" and make "bos delete" handle multiple instances Signed-off-by: David Howells <dhowells@redhat.com> --- diff --git a/suite/commands/bos/delete.py b/suite/commands/bos/delete.py index b0991b7..b73965b 100644 --- a/suite/commands/bos/delete.py +++ b/suite/commands/bos/delete.py @@ -29,7 +29,7 @@ help = "Delete a server process from the BosConfig file" command_arguments = [ [ "server", get_bosserver, "rs", "<machine name>" ], - [ "instance", get_file_name, "rs", "<server process name>" ], + [ "instance", get_file_names, "rs", "<server process name>+" ], [ "cell", get_cell, "os", "<cell name>" ], [ "noauth", get_auth, "fn" ], [ "localauth", get_auth, "fn" ], @@ -50,7 +50,8 @@ def main(params): cell = params["cell"] bos_conn = cell.open_bos_server(params["server"], params) - try: - ret = kafs.BOZO_DeleteBnode(bos_conn, params["instance"]) - except kafs.AbortBZBUSY: - raise AFSException("can't delete running instance '" + params["instance"] + "'") + for i in params["instance"]: + try: + ret = kafs.BOZO_DeleteBnode(bos_conn, i) + except kafs.AbortBZBUSY: + raise AFSException("can't delete running instance '" + i + "'") diff --git a/suite/commands/bos/start.py b/suite/commands/bos/start.py new file mode 100644 index 0000000..8a775bc --- /dev/null +++ b/suite/commands/bos/start.py @@ -0,0 +1,57 @@ +# +# AFS Server management toolkit: Start server instances +# -*- coding: utf-8 -*- +# + +__copyright__ = """ +Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. +Written by David Howells (dhowells@redhat.com) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public Licence version 2 as +published by the Free Software Foundation. + +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 Licence for more details. + +You should have received a copy of the GNU General Public Licence +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from afs.exception import AFSException +from afs.argparse import * +import kafs + +help = "Start a process after setting its status flag" + +command_arguments = [ + [ "server", get_bosserver, "rs", "<machine name>" ], + [ "instance", get_file_names, "rm", "<server process name>+" ], + [ "cell", get_cell, "os", "<cell name>" ], + [ "noauth", get_auth, "fn" ], + [ "localauth", get_auth, "fn" ], + [ "verbose", get_dummy, "fn" ], + [ "encrypt", get_dummy, "fn" ], +] + +cant_combine_arguments = [ + ( "cell", "localauth" ), + ( "noauth", "localauth" ), +] + +description = r""" +Start a process after setting its status flag +""" + +def main(params): + cell = params["cell"] + bos_conn = cell.open_bos_server(params["server"], params) + + for i in params["instance"]: + try: + ret = kafs.BOZO_SetStatus(bos_conn, i, kafs.BSTAT_NORMAL) + except kafs.AbortBZNOENT: + raise AFSException("failed to start instance '" + i + "' (no such entity)") diff --git a/suite/commands/bos/stop.py b/suite/commands/bos/stop.py new file mode 100644 index 0000000..e501f36 --- /dev/null +++ b/suite/commands/bos/stop.py @@ -0,0 +1,61 @@ +# +# AFS Server management toolkit: Stop server instances +# -*- coding: utf-8 -*- +# + +__copyright__ = """ +Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. +Written by David Howells (dhowells@redhat.com) + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public Licence version 2 as +published by the Free Software Foundation. + +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 Licence for more details. + +You should have received a copy of the GNU General Public Licence +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" + +from afs.exception import AFSException +from afs.argparse import * +import kafs + +help = "Stop a process after changing its status flag" + +command_arguments = [ + [ "server", get_bosserver, "rs", "<machine name>" ], + [ "instance", get_file_names, "rm", "<server process name>+" ], + [ "wait", get_auth, "fn" ], + [ "cell", get_cell, "os", "<cell name>" ], + [ "noauth", get_auth, "fn" ], + [ "localauth", get_auth, "fn" ], + [ "verbose", get_dummy, "fn" ], + [ "encrypt", get_dummy, "fn" ], +] + +cant_combine_arguments = [ + ( "cell", "localauth" ), + ( "noauth", "localauth" ), +] + +description = r""" +Stop a process after changing its status flag +""" + +def main(params): + cell = params["cell"] + bos_conn = cell.open_bos_server(params["server"], params) + + for i in params["instance"]: + try: + ret = kafs.BOZO_SetStatus(bos_conn, i, kafs.BSTAT_SHUTDOWN) + except kafs.AbortBZNOENT: + raise AFSException("failed to change stop instance '" + i + "' (no such entity)") + + if "wait" in params: + ret = kafs.BOZO_WaitAll(bos_conn)