From 8b8cf7c5ad02ca2350c3e9efe3b5b197093344c9 Mon Sep 17 00:00:00 2001 From: David Howells Date: Sat, 12 Apr 2014 20:50:10 +0100 Subject: [PATCH] Implement "bos {startup,shutdown}" Signed-off-by: David Howells --- suite/commands/bos/shutdown.py | 64 ++++++++++++++++++++++++++++++++++ suite/commands/bos/startup.py | 60 +++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 suite/commands/bos/shutdown.py create mode 100644 suite/commands/bos/startup.py diff --git a/suite/commands/bos/shutdown.py b/suite/commands/bos/shutdown.py new file mode 100644 index 0000000..062d388 --- /dev/null +++ b/suite/commands/bos/shutdown.py @@ -0,0 +1,64 @@ +# +# 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 without changing its status flag" + +command_arguments = [ + [ "server", get_bosserver, "rs", "" ], + [ "instance", get_file_names, "om", "+" ], + [ "wait", get_auth, "fn" ], + [ "cell", get_cell, "os", "" ], + [ "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 without changing its status flag +""" + +def main(params): + cell = params["cell"] + bos_conn = cell.open_bos_server(params["server"], params) + + if "instance" in params: + for i in params["instance"]: + try: + ret = kafs.BOZO_SetTStatus(bos_conn, i, kafs.BSTAT_SHUTDOWN) + except kafs.AbortBZNOENT: + raise AFSException("failed to shutdown instance '" + i + "' (no such entity)") + else: + ret = kafs.BOZO_ShutdownAll(bos_conn) + + if "wait" in params: + ret = kafs.BOZO_WaitAll(bos_conn) diff --git a/suite/commands/bos/startup.py b/suite/commands/bos/startup.py new file mode 100644 index 0000000..db9fb74 --- /dev/null +++ b/suite/commands/bos/startup.py @@ -0,0 +1,60 @@ +# +# 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 without changing its status flag" + +command_arguments = [ + [ "server", get_bosserver, "rs", "" ], + [ "instance", get_file_names, "om", "+" ], + [ "cell", get_cell, "os", "" ], + [ "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 without changing its status flag +""" + +def main(params): + cell = params["cell"] + bos_conn = cell.open_bos_server(params["server"], params) + + if "instance" in params: + for i in params["instance"]: + try: + ret = kafs.BOZO_SetTStatus(bos_conn, i, kafs.BSTAT_NORMAL) + except kafs.AbortBZNOENT: + raise AFSException("failed to start instance '" + i + "' (no such entity)") + else: + ret = kafs.BOZO_StartupAll(bos_conn) -- 2.50.1