]> www.infradead.org Git - users/dhowells/kafs-utils.git/commitdiff
setup: Sort out the Python setup so that it can build an RPM
authorDavid Howells <dhowells@redhat.com>
Wed, 23 Sep 2015 10:41:44 +0000 (11:41 +0100)
committerDavid Howells <dhowells@redhat.com>
Wed, 23 Sep 2015 10:41:44 +0000 (11:41 +0100)
This does the following steps:

 (1) Adds a new command class to handle rxgen in the setup script so that the
     Python builder runs the XDR routine generation rather than needing a
     separate make step.

 (2) Moves everything that needs installing under kafs - which will be the
     name of the module.

 (3) Renames the module produced by the various C components to kafs.rpc and
     accesses it from python scripts with "import kafs.rpc as rpc" and then
     uses "rpc." instead of "kafs." to qualify accesses to the module.

Signed-off-by: David Howells <dhowells@redhat.com>
122 files changed:
MANIFEST.in [new file with mode: 0644]
Makefile
afs [moved from suite/afs with 98% similarity]
kafs/README.txt [new file with mode: 0644]
kafs/__init__.py [new file with mode: 0644]
kafs/af_rxrpc.c [moved from af_rxrpc.c with 100% similarity]
kafs/af_rxrpc.h [moved from af_rxrpc.h with 100% similarity]
kafs/apropos.py [moved from suite/apropos.py with 92% similarity]
kafs/argparse.py [moved from suite/argparse.py with 96% similarity]
kafs/bash-comp-helper.py [moved from suite/bash-comp-helper.py with 97% similarity]
kafs/commands/__init__.py [moved from suite/commands/__init__.py with 100% similarity]
kafs/commands/bos/__init__.py [moved from suite/commands/bos/__init__.py with 100% similarity]
kafs/commands/bos/addhost.py [moved from suite/commands/bos/addhost.py with 91% similarity]
kafs/commands/bos/addkey.py [moved from suite/commands/bos/addkey.py with 87% similarity]
kafs/commands/bos/adduser.py [moved from suite/commands/bos/adduser.py with 90% similarity]
kafs/commands/bos/create.py [moved from suite/commands/bos/create.py with 86% similarity]
kafs/commands/bos/delete.py [moved from suite/commands/bos/delete.py with 88% similarity]
kafs/commands/bos/exec.py [moved from suite/commands/bos/exec.py with 89% similarity]
kafs/commands/bos/getcell.py [moved from suite/commands/bos/getcell.py with 100% similarity]
kafs/commands/bos/getdate.py [moved from suite/commands/bos/getdate.py with 91% similarity]
kafs/commands/bos/getlog.py [moved from suite/commands/bos/getlog.py with 94% similarity]
kafs/commands/bos/getrestart.py [moved from suite/commands/bos/getrestart.py with 81% similarity]
kafs/commands/bos/getrestricted.py [moved from suite/commands/bos/getrestricted.py with 93% similarity]
kafs/commands/bos/install.py [moved from suite/commands/bos/install.py with 91% similarity]
kafs/commands/bos/listhosts.py [moved from suite/commands/bos/listhosts.py with 89% similarity]
kafs/commands/bos/listkeys.py [moved from suite/commands/bos/listkeys.py with 90% similarity]
kafs/commands/bos/listusers.py [moved from suite/commands/bos/listusers.py with 91% similarity]
kafs/commands/bos/prune.py [moved from suite/commands/bos/prune.py with 87% similarity]
kafs/commands/bos/removehost.py [moved from suite/commands/bos/removehost.py with 91% similarity]
kafs/commands/bos/removekey.py [moved from suite/commands/bos/removekey.py with 88% similarity]
kafs/commands/bos/removeuser.py [moved from suite/commands/bos/removeuser.py with 90% similarity]
kafs/commands/bos/restart.py [moved from suite/commands/bos/restart.py with 86% similarity]
kafs/commands/bos/setauth.py [moved from suite/commands/bos/setauth.py with 90% similarity]
kafs/commands/bos/setcellname.py [moved from suite/commands/bos/setcellname.py with 90% similarity]
kafs/commands/bos/setrestart.py [moved from suite/commands/bos/setrestart.py with 86% similarity]
kafs/commands/bos/setrestricted.py [moved from suite/commands/bos/setrestricted.py with 91% similarity]
kafs/commands/bos/shutdown.py [moved from suite/commands/bos/shutdown.py with 85% similarity]
kafs/commands/bos/start.py [moved from suite/commands/bos/start.py with 87% similarity]
kafs/commands/bos/startup.py [moved from suite/commands/bos/startup.py with 85% similarity]
kafs/commands/bos/status.py [moved from suite/commands/bos/status.py with 83% similarity]
kafs/commands/bos/stop.py [moved from suite/commands/bos/stop.py with 86% similarity]
kafs/commands/bos/uninstall.py [moved from suite/commands/bos/uninstall.py with 88% similarity]
kafs/commands/pts/__init__.py [moved from suite/commands/pts/__init__.py with 100% similarity]
kafs/commands/pts/adduser.py [moved from suite/commands/pts/adduser.py with 91% similarity]
kafs/commands/pts/cg.py [moved from suite/commands/pts/cg.py with 100% similarity]
kafs/commands/pts/check.py [moved from suite/commands/pts/check.py with 100% similarity]
kafs/commands/pts/chown.py [moved from suite/commands/pts/chown.py with 89% similarity]
kafs/commands/pts/creategroup.py [moved from suite/commands/pts/creategroup.py with 88% similarity]
kafs/commands/pts/createuser.py [moved from suite/commands/pts/createuser.py with 87% similarity]
kafs/commands/pts/cu.py [moved from suite/commands/pts/cu.py with 100% similarity]
kafs/commands/pts/d.py [moved from suite/commands/pts/d.py with 100% similarity]
kafs/commands/pts/delete.py [moved from suite/commands/pts/delete.py with 90% similarity]
kafs/commands/pts/e.py [moved from suite/commands/pts/e.py with 100% similarity]
kafs/commands/pts/examine.py [moved from suite/commands/pts/examine.py with 85% similarity]
kafs/commands/pts/g.py [moved from suite/commands/pts/g.py with 100% similarity]
kafs/commands/pts/groups.py [moved from suite/commands/pts/groups.py with 100% similarity]
kafs/commands/pts/listentries.py [moved from suite/commands/pts/listentries.py with 87% similarity]
kafs/commands/pts/listmax.py [moved from suite/commands/pts/listmax.py with 92% similarity]
kafs/commands/pts/listowned.py [moved from suite/commands/pts/listowned.py with 91% similarity]
kafs/commands/pts/m.py [moved from suite/commands/pts/m.py with 100% similarity]
kafs/commands/pts/membership.py [moved from suite/commands/pts/membership.py with 93% similarity]
kafs/commands/pts/removeuser.py [moved from suite/commands/pts/removeuser.py with 91% similarity]
kafs/commands/pts/rename.py [moved from suite/commands/pts/rename.py with 88% similarity]
kafs/commands/pts/setfields.py [moved from suite/commands/pts/setfields.py with 83% similarity]
kafs/commands/pts/setmax.py [moved from suite/commands/pts/setmax.py with 87% similarity]
kafs/commands/vos/__init__.py [moved from suite/commands/vos/__init__.py with 100% similarity]
kafs/commands/vos/create.py [moved from suite/commands/vos/create.py with 75% similarity]
kafs/commands/vos/examine.py [moved from suite/commands/vos/examine.py with 70% similarity]
kafs/commands/vos/listaddrs.py [moved from suite/commands/vos/listaddrs.py with 83% similarity]
kafs/commands/vos/listpart.py [moved from suite/commands/vos/listpart.py with 92% similarity]
kafs/commands/vos/listvldb.py [moved from suite/commands/vos/listvldb.py with 82% similarity]
kafs/commands/vos/listvol.py [moved from suite/commands/vos/listvol.py with 92% similarity]
kafs/commands/vos/partinfo.py [moved from suite/commands/vos/partinfo.py with 88% similarity]
kafs/commands/vos/status.py [moved from suite/commands/vos/status.py with 88% similarity]
kafs/exception.py [moved from suite/exception.py with 100% similarity]
kafs/help.py [moved from suite/help.py with 96% similarity]
kafs/kafs.c [moved from kafs.c with 91% similarity]
kafs/kafs.h [moved from kafs.h with 100% similarity]
kafs/lib/__init__.py [new file with mode: 0644]
kafs/lib/addrcache.py [moved from suite/lib/addrcache.py with 90% similarity]
kafs/lib/bosserver.py [moved from suite/lib/bosserver.py with 92% similarity]
kafs/lib/cell.py [moved from suite/lib/cell.py with 86% similarity]
kafs/lib/fileserver.py [moved from suite/lib/fileserver.py with 92% similarity]
kafs/lib/output.py [moved from suite/lib/output.py with 100% similarity]
kafs/lib/parse_setrestart_time.py [moved from suite/lib/parse_setrestart_time.py with 92% similarity]
kafs/lib/partition.py [moved from suite/lib/partition.py with 97% similarity]
kafs/lib/prcache.py [moved from suite/lib/prcache.py with 96% similarity]
kafs/lib/server.py [moved from suite/lib/server.py with 94% similarity]
kafs/lib/time.py [moved from suite/lib/time.py with 100% similarity]
kafs/lib/uuid.py [moved from suite/lib/uuid.py with 98% similarity]
kafs/lib/vlserver.py [moved from suite/lib/vlserver.py with 92% similarity]
kafs/lib/voldisplay.py [moved from suite/lib/voldisplay.py with 94% similarity]
kafs/lib/volserver.py [moved from suite/lib/volserver.py with 92% similarity]
kafs/main.py [moved from suite/main.py with 89% similarity]
kafs/py_passwd.c [moved from py_passwd.c with 100% similarity]
kafs/py_rxconn.c [moved from py_rxconn.c with 100% similarity]
kafs/py_rxgen.c [moved from py_rxgen.c with 99% similarity]
kafs/py_rxgen.h [moved from py_rxgen.h with 100% similarity]
kafs/py_rxsplit.c [moved from py_rxsplit.c with 99% similarity]
kafs/rpc-api/__init__.py [new file with mode: 0644]
kafs/rpc-api/afsuuid.h [moved from rpc-api/afsuuid.h with 100% similarity]
kafs/rpc-api/bos.xg [moved from rpc-api/bos.xg with 100% similarity]
kafs/rpc-api/cb.xg [moved from rpc-api/cb.xg with 100% similarity]
kafs/rpc-api/common.h [moved from rpc-api/common.h with 100% similarity]
kafs/rpc-api/fs.xg [moved from rpc-api/fs.xg with 100% similarity]
kafs/rpc-api/ka.xg [moved from rpc-api/ka.xg with 100% similarity]
kafs/rpc-api/pts.xg [moved from rpc-api/pts.xg with 100% similarity]
kafs/rpc-api/rxgen.xg [moved from rpc-api/rxgen.xg with 100% similarity]
kafs/rpc-api/rxkad.xg [moved from rpc-api/rxkad.xg with 100% similarity]
kafs/rpc-api/ubik.xg [moved from rpc-api/ubik.xg with 100% similarity]
kafs/rpc-api/vldb.xg [moved from rpc-api/vldb.xg with 100% similarity]
kafs/rpc-api/volumeserver.xg [moved from rpc-api/volumeserver.xg with 100% similarity]
kafs/rxgen.h [moved from rxgen.h with 100% similarity]
rxgen/emit_c_struct.py
rxgen/emit_c_sync_funcs.py
rxgen/emit_py_module.py
rxgen/emit_py_sync_funcs.py
rxgen/emit_py_types.py
rxgen/rxgen.py
rxgen/rxgen_bits.py
setup.py
vl-test.py

diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644 (file)
index 0000000..0fa6d12
--- /dev/null
@@ -0,0 +1,6 @@
+include setup.py
+include kafs/*.c
+include kafs/*.h
+include rxgen/*.py
+include kafs/rpc-api/*.h
+include kafs/rpc-api/*.xg
index de6c5061c1c7196b07ffeae862b410eb3313297f..d66a84d2368ade8dcb8d29d13e332d8eeb1a54c6 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,13 @@
-CFLAGS := $(shell python3-config --cflags)
-
-RXGEN  := ./rxgen/rxgen.py $(wildcard ./rxgen/*.py)
-
-GENERATED := afs_xg.c afs_xg.h afs_py.c afs_py.h
-
-pykafs.so: $(GENERATED)
+build:
        python3 setup.py build
 
-#AFS_API       := rpc-api/afsuuid.h rpc-api/vldb.xg
-AFS_API        := $(sort $(wildcard rpc-api/*.h)) $(sort $(wildcard rpc-api/*.xg))
+rpm:
+       python3 setup.py bdist_rpm
 
-.rxgen.check $(GENERATED): $(AFS_API) $(RXGEN)
-       ./rxgen/rxgen.py $(AFS_API)
-       touch .rxgen.check
+source_tarball:
+       python3 setup.py sdist
 
 clean:
        find \( -name "*~" -o -name "*.o" -o -name "*.so" \) -delete
-       rm -rf build/
-       rm -f $(GENERATED) .rxgen.check
+       rm -rf build/ dist/
+       rm -rf $(GENERATED) .rxgen.check
diff --git a/suite/afs b/afs
similarity index 98%
rename from suite/afs
rename to afs
index 7699e4c67cb40412aaec45a4f24cd714a7c28307..ed33c71f16bbd4d2a58fe68f9ef547dd53b1c6d9 100755 (executable)
--- a/suite/afs
+++ b/afs
@@ -42,7 +42,7 @@ if bin == 'bin' and prefix != sys.prefix:
                                'site-packages')]
     sys.path = local_path + sys.path
 
-from afs.main import main
+from kafs.main import main
 
 if __name__ == '__main__':
     main()
diff --git a/kafs/README.txt b/kafs/README.txt
new file mode 100644 (file)
index 0000000..33008e5
--- /dev/null
@@ -0,0 +1 @@
+These are the kAFS command line utilities.
diff --git a/kafs/__init__.py b/kafs/__init__.py
new file mode 100644 (file)
index 0000000..34ec353
--- /dev/null
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+__copyright__ = """
+Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
+Written by David Howells (dhowells@redhat.com)
+
+Derived from StGIT:
+
+Copyright (C) 2005, Catalin Marinas <catalin.marinas@gmail.com>
+Copyright (C) 2008, Karl Hasselström <kha@treskal.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
+"""
similarity index 100%
rename from af_rxrpc.c
rename to kafs/af_rxrpc.c
similarity index 100%
rename from af_rxrpc.h
rename to kafs/af_rxrpc.h
similarity index 92%
rename from suite/apropos.py
rename to kafs/apropos.py
index 04d11981e1265652a98bc963ac491329b588990b..0bec57cad4748aaa96c7c65bdc4fef00ee5ef186 100644 (file)
@@ -21,9 +21,9 @@ 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 *
-from afs.lib.output import *
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
 
 help = "Search by help text"
 
@@ -39,7 +39,7 @@ def search_help(prog, cmdsetmod, commands, topic):
     matches = dict()
     for i in commands:
         if i == "help":
-            command = __import__("afs.help", globals(), locals(), ['*'])
+            command = __import__("kafs.help", globals(), locals(), ['*'])
             if topic in command.help.casefold():
                 matches["help"] = command.help
             continue
similarity index 96%
rename from suite/argparse.py
rename to kafs/argparse.py
index 72580421afef2643185696056cf06a1a44fd69a7..be6f350ddf0f402c977e3a29f1e8e359aaf248e5 100644 (file)
@@ -13,27 +13,27 @@ as published by the Free Software Foundation; either version
 2 of the Licence, or (at your option) any later version.
 """
 
-from exception import AFSArgumentError, AFSHelpFlag
-from afs.lib.output import set_verbosity
+from kafs.exception import AFSArgumentError, AFSHelpFlag
+from kafs.lib.output import set_verbosity
 
 def get_cell(switch, params):
-    from afs.lib.cell import cell
+    from kafs.lib.cell import cell
     return cell(params[0])
 
 def get_bosserver(switch, params):
-    from afs.lib.bosserver import bosserver
+    from kafs.lib.bosserver import bosserver
     return bosserver(params[0])
 
 def get_fileserver(switch, params):
-    from afs.lib.fileserver import fileserver
+    from kafs.lib.fileserver import fileserver
     return fileserver(params[0])
 
 def get_volserver(switch, params):
-    from afs.lib.volserver import volserver
+    from kafs.lib.volserver import volserver
     return volserver(params[0])
 
 def get_vlservers(switch, params):
-    from afs.lib.vlserver import vlserver
+    from kafs.lib.vlserver import vlserver
     servers = []
     for i in params:
         servers.append(vlserver(params[0]))
@@ -64,14 +64,14 @@ def get_file_names(switch, params):
     return params
 
 def get_partition_id(switch, params):
-    from afs.lib.partition import part2id
+    from kafs.lib.partition import part2id
     return part2id(params[0])
 
 def get_auth(switch, params):
     return params
 
 def get_uuid(switch, params):
-    from afs.lib.uuid import str2uuid
+    from kafs.lib.uuid import str2uuid
     return str2uuid(params[0])
 
 def get_string(switch, params):
similarity index 97%
rename from suite/bash-comp-helper.py
rename to kafs/bash-comp-helper.py
index aef5986e1c20d04042c458e8bd0e66bd4db6fded..3725aa5935ebffb6fbe301aedb3a2a9ff7930e2d 100755 (executable)
@@ -23,9 +23,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 import sys, os
 
-import afs.commands
-from afs.argparse import *
-from afs.lib.output import *
+import kafs.commands
+from kafs.argparse import *
+from kafs.lib.output import *
 
 logfile = None
 
@@ -99,7 +99,7 @@ def main():
     del s
 
     # If we're starting from the "afs" program, we need to select the command set
-    cmdsets = afs.commands.get_command_sets()
+    cmdsets = kafs.commands.get_command_sets()
     #log("Command sets ", cmdsets, "\n")
     if cmdset == "afs":
         set_program_name("afs")
@@ -122,7 +122,7 @@ def main():
         error("Unknown command set '", cmdset, "'\n")
         sys.exit(1)
 
-    cmdsetmod = afs.commands.import_command_set(cmdset)
+    cmdsetmod = kafs.commands.import_command_set(cmdset)
     commands = cmdsetmod.get_command_list()
     commands.append("help")
     commands.append("apropos")
@@ -149,9 +149,9 @@ def main():
 
     # Load the command
     if cmd == "help":
-        command = __import__("afs.help", globals(), locals(), ['*'])
+        command = __import__("kafs.help", globals(), locals(), ['*'])
     elif cmd == "apropos":
-        command = __import__("afs.apropos", globals(), locals(), ['*'])
+        command = __import__("kafs.apropos", globals(), locals(), ['*'])
     else:
         command = cmdsetmod.get_command(cmd)
         # If it's an alias, then switch to the real module
similarity index 91%
rename from suite/commands/bos/addhost.py
rename to kafs/commands/bos/addhost.py
index 8a8ded0a253eb9ac4b5f7949577ba11b1264bb95..8923565aa82f8f74cc7599f72ed1ccd3852fb1d5 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Add a database server machine to the CellServDB file"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "host"              : kafs.BOZO_BSSIZE,
+    "host"              : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -60,4 +60,4 @@ def main(params):
         if "clone" in params:
             name = "[" + name + "]"
         verbose("Adding host ", name, "\n")
-        ret = kafs.BOZO_AddCellHost(bos_conn, name)
+        ret = rpc.BOZO_AddCellHost(bos_conn, name)
similarity index 87%
rename from suite/commands/bos/addkey.py
rename to kafs/commands/bos/addkey.py
index b18e3231124256cbd2ed3729304f371c4978d262..12654fc794c677e9627d569d316d9dd0e42a8bfc 100644 (file)
@@ -21,11 +21,11 @@ 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 *
-from afs.lib.output import *
-from afs.lib.time import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.time import *
+import kafs.rpc as rpc
 from getpass import getpass
 
 help = "Add a new server encryption key to the KeyFile file"
@@ -62,8 +62,8 @@ def main(params):
         if passwd != passwd2:
             raise RuntimeError("Input key mismatch")
 
-    salted_passwd = kafs.afs_string_to_key(passwd, str(cell))
-    key = kafs.bozo_key()
+    salted_passwd = rpc.afs_string_to_key(passwd, str(cell))
+    key = rpc.bozo_key()
     key.data = salted_passwd
 
     a = ""
@@ -72,6 +72,6 @@ def main(params):
     verbose("Key: {:d}: ".format(len(key.data)), a, "\n")
 
     try:
-        ret = kafs.BOZO_AddKey(bos_conn, int(params["kvno"]), key)
-    except kafs.AbortBZKVNOINUSE:
+        ret = rpc.BOZO_AddKey(bos_conn, int(params["kvno"]), key)
+    except rpc.AbortBZKVNOINUSE:
         errorf("failed to set key {:s} (kvno already used - have to remove existing kvno's before reuse)\n", params["kvno"])
similarity index 90%
rename from suite/commands/bos/adduser.py
rename to kafs/commands/bos/adduser.py
index 228e12e1a8c42e07007a790d85aad80cbbb6e23b..ea05f7406a9da17bd597091e030115ffc76f0399 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Add a privileged user to the UserList file"
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "user"              : kafs.BOZO_BSSIZE,
+    "user"              : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -59,8 +59,8 @@ def main(params):
     for i in params["user"]:
         try:
             verbose("Adding user ", i, "\n")
-            ret = kafs.BOZO_AddSUser(bos_conn, i)
-        except kafs.RemoteAbort as e:
+            ret = rpc.BOZO_AddSUser(bos_conn, i)
+        except rpc.RemoteAbort as e:
             if str(e) == "Aborted 17":
                 error("failed to add user ", i, " (File exists)\n")
                 exitcode = 1
similarity index 86%
rename from suite/commands/bos/create.py
rename to kafs/commands/bos/create.py
index 5461def09d553cee11c1dc8cdf39bb2865efc85d..7a5a494a37f185e1547eb5b5bbca220fd86b22cd 100644 (file)
@@ -21,10 +21,10 @@ 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, AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException, AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Define a new process in the BosConfig file and start it"
 
@@ -47,10 +47,10 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
-    "type"              : kafs.BOZO_BSSIZE,
-    "cmd"               : kafs.BOZO_BSSIZE,
-    "notifier"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
+    "type"              : rpc.BOZO_BSSIZE,
+    "cmd"               : rpc.BOZO_BSSIZE,
+    "notifier"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -78,8 +78,8 @@ def main(params):
     bos_conn = cell.open_bos_server(params["server"], params)
 
     try:
-        ret = kafs.BOZO_CreateBnode(bos_conn, type, instance,
+        ret = rpc.BOZO_CreateBnode(bos_conn, type, instance,
                                     cmd[0], cmd[1], cmd[2], cmd[3], cmd[4], cmd[5])
-    except kafs.AbortBZEXISTS:
+    except rpc.AbortBZEXISTS:
         error("failed to create new server instance ", instance,
               " of type '", type, "' (entity already exists)\n")
similarity index 88%
rename from suite/commands/bos/delete.py
rename to kafs/commands/bos/delete.py
index 2796296fef30eb6f93718f823bce73b2840b44d4..23109326e10cab8bfd65c0a51b01a7cd71bede98 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Delete a server process from the BosConfig file"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -58,6 +58,6 @@ def main(params):
     for i in params["instance"]:
         verbose("Deleting instance ", i, "\n")
         try:
-            ret = kafs.BOZO_DeleteBnode(bos_conn, i)
-        except kafs.AbortBZBUSY:
+            ret = rpc.BOZO_DeleteBnode(bos_conn, i)
+        except rpc.AbortBZBUSY:
             error("can't delete running instance '", i, "'\n")
similarity index 89%
rename from suite/commands/bos/exec.py
rename to kafs/commands/bos/exec.py
index 2b2fd12343a2b45ee1b2929e9e81f39b71892ec5..77663111b36cd0955f268398571494d55eb5e553 100644 (file)
@@ -21,10 +21,10 @@ 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 AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Execute a command on a remote server machine"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "cmd"               : kafs.BOZO_BSSIZE,
+    "cmd"               : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -56,8 +56,8 @@ def main(params):
     bos_conn = cell.open_bos_server(params["server"], params)
 
     try:
-        ret = kafs.BOZO_Exec(bos_conn, params["cmd"])
-    except kafs.RemoteAbort as e:
+        ret = rpc.BOZO_Exec(bos_conn, params["cmd"])
+    except rpc.RemoteAbort as e:
         # If the command terminates with anything other than exit(0), the
         # server aborts with the wait() status.
         status = int(str(e)[8:])
similarity index 91%
rename from suite/commands/bos/getdate.py
rename to kafs/commands/bos/getdate.py
index 662dfd476e22cf40e63f2f4c5a9b73bdc9c38ac0..6747353038712f06b4300354b92e500aaa194f7b 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.lib.output import *
-from afs.lib.time import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 help = "Display the time stamps on an AFS binary file"
 
@@ -45,8 +45,8 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "file"              : kafs.BOZO_BSSIZE,
-    "dir"               : kafs.BOZO_BSSIZE,
+    "file"              : rpc.BOZO_BSSIZE,
+    "dir"               : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -69,7 +69,7 @@ def main(params):
         f = d + "/" + f
 
         verbose("Asking about ", f, "\n")
-        ret = kafs.BOZO_GetDates(bos_conn, f)
+        ret = rpc.BOZO_GetDates(bos_conn, f)
 
         if ret.newtime == 0:
             s = "File " + f + "does not exist, "
similarity index 94%
rename from suite/commands/bos/getlog.py
rename to kafs/commands/bos/getlog.py
index 8abf1159bd3d57c7fa58e8bc02200c4040445ecc..cb0d8e46435783a14319e6b600dfffef443c28be 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import os
 
 help = "Print a server process's log file"
@@ -45,7 +45,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "file"              : kafs.BOZO_BSSIZE,
+    "file"              : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -118,4 +118,4 @@ def main(params):
 
     output("Fetching log file '", params["file"], "'...\n")
     output_flush()
-    ret = kafs.BOZO_GetLog(bos_conn, params["file"], split)
+    ret = rpc.BOZO_GetLog(bos_conn, params["file"], split)
similarity index 81%
rename from suite/commands/bos/getrestart.py
rename to kafs/commands/bos/getrestart.py
index 56131bd8cf392b0f0d4b0ee0273e7cc8a1a9c659..c49ed792b79377d68ab997bae08ad38a928a7cc6 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Display the automatic restart times for server processes"
 
@@ -48,22 +48,22 @@ Display the automatic restart times for server processes
 restart_days = [ "sun", "mon", "tue", "wed", "thu", "fri", "sat" ]
 
 def display_restart_time(params, desc, time):
-    if time.mask & kafs.KTIME_NEVER:
+    if time.mask & rpc.KTIME_NEVER:
         t = "never"
-    elif time.mask & kafs.KTIME_NOW:
+    elif time.mask & rpc.KTIME_NOW:
         t = "never"
-    elif time.mask & (kafs.KTIME_DAY | kafs.KTIME_TIME) == 0:
+    elif time.mask & (rpc.KTIME_DAY | rpc.KTIME_TIME) == 0:
         t = "[unspecified time]"
     else:
         t = "[unspecified time]"
-        if time.mask & kafs.KTIME_DAY:
+        if time.mask & rpc.KTIME_DAY:
             t = restart_days[time.day] + " ";
         else:
             t = ""
-        if time.mask & kafs.KTIME_TIME:
-            if not (time.mask & kafs.KTIME_MIN):
+        if time.mask & rpc.KTIME_TIME:
+            if not (time.mask & rpc.KTIME_MIN):
                 time.min = 0
-            if time.mask & kafs.KTIME_HOUR:
+            if time.mask & rpc.KTIME_HOUR:
                 h = time.hour
                 if h > 12:
                     h -= 12
@@ -72,9 +72,9 @@ def display_restart_time(params, desc, time):
                 t += "{:d}:{:02d}".format(h, time.min)
             else:
                 t += "xx:{:02d}".format(time.min)
-            if time.mask & kafs.KTIME_SEC:
+            if time.mask & rpc.KTIME_SEC:
                 t += ":{:02d}".format(time.sec)
-            if time.mask & kafs.KTIME_HOUR:
+            if time.mask & rpc.KTIME_HOUR:
                 if time.hour < 12:
                     t += " am"
                 else:
@@ -88,8 +88,8 @@ def main(params):
     cell = params["cell"]
     bos_conn = cell.open_bos_server(params["server"], params)
 
-    gen = kafs.BOZO_GetRestartTime(bos_conn, kafs.BOZO_RESTARTTIME_GENERAL)
-    newbin = kafs.BOZO_GetRestartTime(bos_conn, kafs.BOZO_RESTARTTIME_NEWBIN)
+    gen = rpc.BOZO_GetRestartTime(bos_conn, rpc.BOZO_RESTARTTIME_GENERAL)
+    newbin = rpc.BOZO_GetRestartTime(bos_conn, rpc.BOZO_RESTARTTIME_NEWBIN)
 
     s = "Server " + params["server"].name() + " restarts "
     display_restart_time(params, s + "at ", gen.restartTime)
similarity index 93%
rename from suite/commands/bos/getrestricted.py
rename to kafs/commands/bos/getrestricted.py
index 98382eaf7911eff6378f79bb57f42929d926af2e..fec02b03043e90051542e3e8e1fac56cf6599dbc 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Display whether a bos server is restricted or not"
 
@@ -49,7 +49,7 @@ def main(params):
     cell = params["cell"]
     bos_conn = cell.open_bos_server(params["server"], params)
 
-    ret = kafs.BOZO_GetRestricted(bos_conn)
+    ret = rpc.BOZO_GetRestricted(bos_conn)
     if ret.isrestricted:
         output("Restricted mode is on\n")
     else:
similarity index 91%
rename from suite/commands/bos/install.py
rename to kafs/commands/bos/install.py
index 0de39f0f6503599afe6f5abf1009bfe821f174cc..fc5ca5b3ebd8b571ead62f35b08773d0229b61a9 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import os
 
 help = "Revert to the former version of a process's binary file"
@@ -46,8 +46,8 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "file"              : kafs.BOZO_BSSIZE,
-    "dir"               : kafs.BOZO_BSSIZE,
+    "file"              : rpc.BOZO_BSSIZE,
+    "dir"               : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -98,6 +98,6 @@ def main(params):
         remote_file = d + "/" + f
 
         verbose("Installing file ", remote_file, "\n")
-        ret = kafs.BOZO_Install(bos_conn, remote_file, stat.st_size, 0,
+        ret = rpc.BOZO_Install(bos_conn, remote_file, stat.st_size, 0,
                                 int(stat.st_mtime), split)
         output(program_name, ": installed file ", f, "\n");
similarity index 89%
rename from suite/commands/bos/listhosts.py
rename to kafs/commands/bos/listhosts.py
index e6d8b36b968013dfd82e630329d36d9f0f0fdf63..16306612b5bfc037567698a854e121b9c3022595 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Display the contents of the CellServDB file"
 
@@ -49,15 +49,15 @@ def main(params):
     cell = params["cell"]
     bos_conn = cell.open_bos_server(params["server"], params)
 
-    ret = kafs.BOZO_GetCellName(bos_conn)
+    ret = rpc.BOZO_GetCellName(bos_conn)
     cellname = ret.name
     output("Cell name is ", cellname, "\n")
 
     try:
         i = 0
         while True:
-            ret = kafs.BOZO_GetCellHost(bos_conn, i)
+            ret = rpc.BOZO_GetCellHost(bos_conn, i)
             i += 1
             output("Host ", i, " is ", ret.name, "\n")
-    except kafs.AbortBZDOM:
+    except rpc.AbortBZDOM:
         pass
similarity index 90%
rename from suite/commands/bos/listkeys.py
rename to kafs/commands/bos/listkeys.py
index f27db5519fa5fdbf400980ba21cef00fd8cb2995..b9dac774782b4bae5834f856b27c9f696dcd8fb4 100644 (file)
@@ -21,11 +21,11 @@ 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 *
-from afs.lib.output import *
-from afs.lib.time import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 help = "Display the server encryption keys from the KeyFile file"
 
@@ -56,7 +56,7 @@ def main(params):
     try:
         i = 0
         while True:
-            ret = kafs.BOZO_ListKeys(bos_conn, i)
+            ret = rpc.BOZO_ListKeys(bos_conn, i)
             i += 1
             if mod_sec < ret.keinfo.mod_sec:
                 mod_sec = ret.keinfo.mod_sec
@@ -70,7 +70,7 @@ def main(params):
             else:
                 output(" has cksum ", ret.keinfo.keyCheckSum, "\n")
 
-    except kafs.AbortBZDOM:
+    except rpc.AbortBZDOM:
         pass
 
     output("Keys last changed on ", time2str(mod_sec), ".\n")
similarity index 91%
rename from suite/commands/bos/listusers.py
rename to kafs/commands/bos/listusers.py
index 089a76512224718dfee0413b4c6215dba0be7bb0..4038966346b27dff231e0527f00c34346b171f83 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "List the privileged users from the UserList file"
 
@@ -53,10 +53,10 @@ def main(params):
     try:
         i = 0
         while True:
-            ret = kafs.BOZO_ListSUsers(bos_conn, i)
+            ret = rpc.BOZO_ListSUsers(bos_conn, i)
             i += 1
             users += " " + ret.name
-    except kafs.RemoteAbort as msg:
+    except rpc.RemoteAbort as msg:
         if str(msg) == "Aborted 1":
             pass
         else:
similarity index 87%
rename from suite/commands/bos/prune.py
rename to kafs/commands/bos/prune.py
index 098847a2c9a8d460db7d1770d3cd1a01c28862cd..c222691b781160e2b3e4c7c1bfcadd23b3fe7a4a 100644 (file)
@@ -21,10 +21,10 @@ 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 AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Remove obsolete files from /usr/afs/bin and /usr/afs/logs"
 
@@ -62,9 +62,9 @@ def main(params):
     else:
         flags = 0
         if "bak" in params:
-            flags |= kafs.BOZO_PRUNEBAK
+            flags |= rpc.BOZO_PRUNEBAK
         if "old" in params:
-            flags |= kafs.BOZO_PRUNEOLD
+            flags |= rpc.BOZO_PRUNEOLD
         if "core" in params:
-            flags |= kafs.BOZO_PRUNECORE
-    ret = kafs.BOZO_Prune(bos_conn, flags)
+            flags |= rpc.BOZO_PRUNECORE
+    ret = rpc.BOZO_Prune(bos_conn, flags)
similarity index 91%
rename from suite/commands/bos/removehost.py
rename to kafs/commands/bos/removehost.py
index b65a6341b36ab459dd6075c8a3de7fb3475e8682..e40504e450a8bd20ff1e7515f8b295097cce90cb 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Remove a database server machine from the CellServDB file"
@@ -54,6 +54,6 @@ def main(params):
     for i in params["host"]:
         try:
             verbose("Deleting host ", i.name(), "\n")
-            ret = kafs.BOZO_DeleteCellHost(bos_conn, i.name())
-        except kafs.AbortBZNOENT:
+            ret = rpc.BOZO_DeleteCellHost(bos_conn, i.name())
+        except rpc.AbortBZNOENT:
             error("failed to delete host ", i.name(), " (no such entity)\n")
similarity index 88%
rename from suite/commands/bos/removekey.py
rename to kafs/commands/bos/removekey.py
index bea0622a4591a22604db1ed3bc941979abca2cbb..a0d49338fe3c934743f7faa0b62af22a9dcb265c 100644 (file)
@@ -21,11 +21,11 @@ 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 *
-from afs.lib.output import *
-from afs.lib.time import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 help = "Remove server encryption keys from the KeyFile file"
 
@@ -56,8 +56,8 @@ def main(params):
     try:
         for i in params["kvno"]:
             trying = i
-            ret = kafs.BOZO_DeleteKey(bos_conn, int(i))
-    except kafs.RemoteAbort as e:
+            ret = rpc.BOZO_DeleteKey(bos_conn, int(i))
+    except rpc.RemoteAbort as e:
         if str(e) != "Aborted 70354689":
             raise
         errorf("failed to delete key {:s} (could not find entry)\n", trying)
similarity index 90%
rename from suite/commands/bos/removeuser.py
rename to kafs/commands/bos/removeuser.py
index bd1149571cb04c26773d06cba89ec4d9d9817806..b196d7102de16763bc028509af3543614c31d4e9 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Remove a privileged user from the UserList file"
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "user"              : kafs.BOZO_BSSIZE,
+    "user"              : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -58,8 +58,8 @@ def main(params):
     for i in params["user"]:
         try:
             verbose("Deleting suser ", i, "\n")
-            ret = kafs.BOZO_DeleteSUser(bos_conn, i)
-        except kafs.RemoteAbort as e:
+            ret = rpc.BOZO_DeleteSUser(bos_conn, i)
+        except rpc.RemoteAbort as e:
             if str(e) == "Aborted 2":
                 error("failed to delete user ", i, " (no such user)\n")
             else:
similarity index 86%
rename from suite/commands/bos/restart.py
rename to kafs/commands/bos/restart.py
index 5ffbf65654a8d0a16f405641809599479874b67d..462739b4ce12cead5dd37ca0d85252f307ffcb6e 100644 (file)
@@ -21,10 +21,10 @@ 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 AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Restart a server process"
 
@@ -49,7 +49,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -61,15 +61,15 @@ def main(params):
     bos_conn = cell.open_bos_server(params["server"], params)
 
     if "all" in params:
-        ret = kafs.BOZO_RestartAll(bos_conn)
+        ret = rpc.BOZO_RestartAll(bos_conn)
     elif "bosserver" in params:
-        ret = kafs.BOZO_ReBozo(bos_conn)
+        ret = rpc.BOZO_ReBozo(bos_conn)
     elif "instance" in params:
         for i in params["instance"]:
             try:
                 verbose("Restarting ", i, "\n")
-                ret = kafs.BOZO_Restart(bos_conn, i)
-            except kafs.AbortBZNOENT:
+                ret = rpc.BOZO_Restart(bos_conn, i)
+            except rpc.AbortBZNOENT:
                 error("failed to start instance '", i, "' (no such entity)\n")
     else:
         raise AFSArgumentError("One of -all, -bosserver or -instance must be supplied")
similarity index 90%
rename from suite/commands/bos/setauth.py
rename to kafs/commands/bos/setauth.py
index 47ff647f161dad38ad07c3c90c0806cbbf43b82f..8bd5956a74e76737d7a193e27c491c09b34cc398 100644 (file)
@@ -21,10 +21,10 @@ 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 AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Set authorization checking requirements for all server processes"
 
@@ -56,6 +56,6 @@ def main(params):
     bos_conn = cell.open_bos_server(params["server"], params)
 
     try:
-        ret = kafs.BOZO_SetNoAuthFlag(bos_conn, auth == "off")
-    except kafs.AbortBZACCESS:
+        ret = rpc.BOZO_SetNoAuthFlag(bos_conn, auth == "off")
+    except rpc.AbortBZACCESS:
         error("you are not authorized for this operation (failed to set authentication flag)\n")
similarity index 90%
rename from suite/commands/bos/setcellname.py
rename to kafs/commands/bos/setcellname.py
index f4c06eba54969cffdef4f85081baed1c2a5633bc..5f630b20109f67d4362ce74b184f93fd41a3078e 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Display whether a bos server is restricted or not"
 
@@ -43,7 +43,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.BOZO_BSSIZE,
+    "name"              : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -54,4 +54,4 @@ def main(params):
     cell = params["cell"]
     bos_conn = cell.open_bos_server(params["server"], params)
 
-    ret = kafs.BOZO_SetCellName(bos_conn, str(params["name"]))
+    ret = rpc.BOZO_SetCellName(bos_conn, str(params["name"]))
similarity index 86%
rename from suite/commands/bos/setrestart.py
rename to kafs/commands/bos/setrestart.py
index a3e39480f3e6aba05ec6eefe83a1db1934d99821..0065dfdaef7254df6ba1f097d047544f6fcd21d9 100644 (file)
@@ -21,11 +21,11 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from exception import AFSArgumentError
-from afs.argparse import *
-from afs.lib.output import *
-from afs.lib.parse_setrestart_time import *
-import kafs
+from kafs.exception import AFSArgumentError
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.parse_setrestart_time import *
+import kafs.rpc as rpc
 
 help = "Set when the BOS Server restarts processes"
 
@@ -57,8 +57,8 @@ def main(params):
 
     time = params["time"]
 
-    t = kafs.BOZO_RESTARTTIME_GENERAL
+    t = rpc.BOZO_RESTARTTIME_GENERAL
     if "newbinary" in params:
-        t = kafs.BOZO_RESTARTTIME_NEWBIN
+        t = rpc.BOZO_RESTARTTIME_NEWBIN
 
-    ret = kafs.BOZO_SetRestartTime(bos_conn, t, time)
+    ret = rpc.BOZO_SetRestartTime(bos_conn, t, time)
similarity index 91%
rename from suite/commands/bos/setrestricted.py
rename to kafs/commands/bos/setrestricted.py
index 54c71ffd17b84ab66d95d553c194200b989f2d7c..30c96a5d3912b1e0c75319655309ac04a9dfb9b3 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Place a server into restricted mode"
 
@@ -54,6 +54,6 @@ def main(params):
         raise AFSArgumentError("The -mode argument takes a numeric value")
 
     try:
-        ret = kafs.BOZO_SetRestricted(bos_conn, int(params["mode"]))
-    except kafs.AbortBZACCESS:
+        ret = rpc.BOZO_SetRestricted(bos_conn, int(params["mode"]))
+    except rpc.AbortBZACCESS:
         error("failed to set restricted mode (you are not authorized for this operation)\n")
similarity index 85%
rename from suite/commands/bos/shutdown.py
rename to kafs/commands/bos/shutdown.py
index c27ea1143a586b7a72ccb311030980c7b963ef91..6d72ae8cb982e9b4cfd20edcc3540f878e1c222d 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Stop a process without changing its status flag"
 
@@ -45,7 +45,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -61,13 +61,13 @@ def main(params):
         for i in params["instance"]:
             try:
                 verbose("Shutting down ", i, "\n");
-                ret = kafs.BOZO_SetTStatus(bos_conn, i, kafs.BSTAT_SHUTDOWN)
-            except kafs.AbortBZNOENT:
+                ret = rpc.BOZO_SetTStatus(bos_conn, i, rpc.BSTAT_SHUTDOWN)
+            except rpc.AbortBZNOENT:
                 error("failed to shutdown instance '", i, "' (no such entity)\n")
                 error_occurred = True
     else:
-        ret = kafs.BOZO_ShutdownAll(bos_conn)
+        ret = rpc.BOZO_ShutdownAll(bos_conn)
 
     if not error_occurred and "wait" in params:
         verbose("Waiting\n")
-        ret = kafs.BOZO_WaitAll(bos_conn)
+        ret = rpc.BOZO_WaitAll(bos_conn)
similarity index 87%
rename from suite/commands/bos/start.py
rename to kafs/commands/bos/start.py
index 972dea43dae8f998ee60a8a69c58ef30b64cd162..f011317fe7d9e78cb7cbe9ce59a111dd20c04c82 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Start a process after setting its status flag"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -58,6 +58,6 @@ def main(params):
     for i in params["instance"]:
         try:
             verbose("Starting ", i, "\n")
-            ret = kafs.BOZO_SetStatus(bos_conn, i, kafs.BSTAT_NORMAL)
-        except kafs.AbortBZNOENT:
+            ret = rpc.BOZO_SetStatus(bos_conn, i, rpc.BSTAT_NORMAL)
+        except rpc.AbortBZNOENT:
             error("failed to start instance '", i, "' (no such entity)\n")
similarity index 85%
rename from suite/commands/bos/startup.py
rename to kafs/commands/bos/startup.py
index b64bb8583bd2178e40e99d5283646000d2db7304..e58cf1a0e772961c3053cdfdc9876a6e9f4ef8ed 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Start a process without changing its status flag"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -59,8 +59,8 @@ def main(params):
         for i in params["instance"]:
             try:
                 verbose("Starting ", i, "\n")
-                ret = kafs.BOZO_SetTStatus(bos_conn, i, kafs.BSTAT_NORMAL)
-            except kafs.AbortBZNOENT:
+                ret = rpc.BOZO_SetTStatus(bos_conn, i, rpc.BSTAT_NORMAL)
+            except rpc.AbortBZNOENT:
                 error("failed to start instance '", i, "' (no such entity)\n")
     else:
-        ret = kafs.BOZO_StartupAll(bos_conn)
+        ret = rpc.BOZO_StartupAll(bos_conn)
similarity index 83%
rename from suite/commands/bos/status.py
rename to kafs/commands/bos/status.py
index 85377227f107ad756eef08c1ef53621215d51c1d..9ac3a80209a0b9bea744628b78c5d9a323d80b98 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.lib.output import *
-from afs.lib.time import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.time import *
+import kafs.rpc as rpc
 import sys
 import signal
 
@@ -47,7 +47,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -55,10 +55,10 @@ Display the status of server processes
 """
 
 def display_instance_normal(params, bos_conn, name):
-    info = kafs.BOZO_GetInstanceInfo(bos_conn, name)
-    status = kafs.BOZO_GetStatus(bos_conn, name)
+    info = rpc.BOZO_GetInstanceInfo(bos_conn, name)
+    status = rpc.BOZO_GetStatus(bos_conn, name)
 
-    if info.status.flags & kafs.BOZO_BADDIRACCESS:
+    if info.status.flags & rpc.BOZO_BADDIRACCESS:
         params["_baddiraccess"] = True
 
     s = "Instance " + name + ","
@@ -68,31 +68,31 @@ def display_instance_normal(params, bos_conn, name):
 
     # The instance's permanent state is shown by the goals returned by
     # GetInstanceInfo()
-    if info.status.fileGoal == kafs.BSTAT_SHUTDOWN:
-        if info.status.goal == kafs.BSTAT_SHUTDOWN:
+    if info.status.fileGoal == rpc.BSTAT_SHUTDOWN:
+        if info.status.goal == rpc.BSTAT_SHUTDOWN:
             s += " disabled,"
         else:
             s += " temporarily enabled,"
     else:
-        if info.status.goal == kafs.BSTAT_SHUTDOWN:
+        if info.status.goal == rpc.BSTAT_SHUTDOWN:
             s += " temporarily disabled,"
         else:
             pass
 
     # Supplementary data is found in the flags
-    if info.status.flags & kafs.BOZO_HASCORE:
+    if info.status.flags & rpc.BOZO_HASCORE:
         s += " has core file,"
-    if info.status.flags & kafs.BOZO_ERRORSTOP:
+    if info.status.flags & rpc.BOZO_ERRORSTOP:
         s += " stopped for too many errors,"
 
     # The instance's actual state is returned by GetStatus()
-    if status.inStat == kafs.BSTAT_SHUTDOWN:
+    if status.inStat == rpc.BSTAT_SHUTDOWN:
         s += " currently shut down."
-    elif status.inStat == kafs.BSTAT_NORMAL:
+    elif status.inStat == rpc.BSTAT_NORMAL:
         s += " currently running normally."
-    elif status.inStat == kafs.BSTAT_SHUTTINGDOWN:
+    elif status.inStat == rpc.BSTAT_SHUTTINGDOWN:
         s += " currently shutting down."
-    elif status.inStat == kafs.BSTAT_STARTINGUP:
+    elif status.inStat == rpc.BSTAT_STARTINGUP:
         s += " currently starting up."
     output(s, "\n")
     if status.statdescr != "":
@@ -117,7 +117,7 @@ def display_instance_long(params, bos_conn, name):
     if info.status.lastErrorExit != 0:
         output("    Last error exit ", info.status.lastErrorExit, "\n")
         s = "    Last error exit at " + time2str(info.status.lastErrorExit) + ","
-        istr = kafs.BOZO_GetInstanceStrings(bos_conn, name)
+        istr = rpc.BOZO_GetInstanceStrings(bos_conn, name)
         if istr.errorname != "":
             s += " by " + istr.errorname + ","
         if info.status.errorSignal == signal.SIGTERM:
@@ -131,10 +131,10 @@ def display_instance_long(params, bos_conn, name):
     try:
         i = 0
         while True:
-            ret = kafs.BOZO_GetInstanceParm(bos_conn, name, i)
+            ret = rpc.BOZO_GetInstanceParm(bos_conn, name, i)
             i += 1
             output("    Command ", i, " is '", ret.parm, "'\n")
-    except kafs.AbortBZDOM:
+    except rpc.AbortBZDOM:
         pass
 
     output("\n")
@@ -154,11 +154,11 @@ def main(params):
             i = 0
             while True:
                 verbose("Enum ", i, ": ")
-                ret = kafs.BOZO_EnumerateInstance(bos_conn, i)
+                ret = rpc.BOZO_EnumerateInstance(bos_conn, i)
                 i += 1
                 verbose_cont(ret.iname, "\n")
                 instances.append(ret.iname)
-        except kafs.AbortBZDOM:
+        except rpc.AbortBZDOM:
             verbose_cont("<empty slot>\n")
     else:
         instances = params["instance"]
@@ -170,7 +170,7 @@ def main(params):
                 display_instance_long(params, bos_conn, i)
             else:
                 display_instance_normal(params, bos_conn, i)
-        except kafs.AbortBZNOENT:
+        except rpc.AbortBZNOENT:
             error("failed to get instance info for '", i, "' (no such entity)\n")
 
     if "_baddiraccess" in params and "long" in params:
similarity index 86%
rename from suite/commands/bos/stop.py
rename to kafs/commands/bos/stop.py
index df2e074b0406c30dc4eea9c7b24457c8be145ea8..b4e12146eb46377bd4546e02bba10272743a0d78 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Stop a process after changing its status flag"
 
@@ -45,7 +45,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "instance"          : kafs.BOZO_BSSIZE,
+    "instance"          : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -60,11 +60,11 @@ def main(params):
     for i in params["instance"]:
         try:
             verbose("Stopping ", i, "\n")
-            ret = kafs.BOZO_SetStatus(bos_conn, i, kafs.BSTAT_SHUTDOWN)
-        except kafs.AbortBZNOENT:
+            ret = rpc.BOZO_SetStatus(bos_conn, i, rpc.BSTAT_SHUTDOWN)
+        except rpc.AbortBZNOENT:
             error("failed to change stop instance '", i, "' (no such entity)")
             error_occurred = True
 
     if not error_occurred and "wait" in params:
         verbose("Waiting\n")
-        ret = kafs.BOZO_WaitAll(bos_conn)
+        ret = rpc.BOZO_WaitAll(bos_conn)
similarity index 88%
rename from suite/commands/bos/uninstall.py
rename to kafs/commands/bos/uninstall.py
index 5ef0de70cc13c9b414bf7456786cf7d45f1d72bf..dc4dfab9e32eddd89982d5063f59d6716c153981 100644 (file)
@@ -21,10 +21,10 @@ 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 *
-from afs.lib.output import *
-import kafs
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Revert to the former version of a process's binary file"
 
@@ -45,8 +45,8 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "file"              : kafs.BOZO_BSSIZE,
-    "dir"               : kafs.BOZO_BSSIZE,
+    "file"              : rpc.BOZO_BSSIZE,
+    "dir"               : rpc.BOZO_BSSIZE,
 }
 
 description = r"""
@@ -70,6 +70,6 @@ def main(params):
 
         verbose("Reverting file ", f, "\n")
         try:
-            ret = kafs.BOZO_UnInstall(bos_conn, f)
-        except kafs.AbortBZBUSY:
+            ret = rpc.BOZO_UnInstall(bos_conn, f)
+        except rpc.AbortBZBUSY:
             error("can't revert running instance '", f, "'\n")
similarity index 91%
rename from suite/commands/pts/adduser.py
rename to kafs/commands/pts/adduser.py
index a8feb0c61ac2a45cb7087d1760c30ec0f59af8df..2866990776c8a5eaee26282820281c3fbf5e9801 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Add a user or machine to a Protection Database group"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.PR_MAXNAMELEN,
+    "name"              : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -79,9 +79,9 @@ def main(params):
                     continue
 
             try:
-                ret = cell.call_pt_server(params, kafs.PR_AddToGroup, uid, gid)
+                ret = cell.call_pt_server(params, rpc.PR_AddToGroup, uid, gid)
                 prcache.evict_groups()
-            except kafs.AbortPRIDEXIST:
+            except rpc.AbortPRIDEXIST:
                 error("Entry for id already exists ; unable to add user ", user, " to group ", group, ignored, "\n")
                 if "force" not in params:
                     return
similarity index 89%
rename from suite/commands/pts/chown.py
rename to kafs/commands/pts/chown.py
index 1d9138f1ceeb6e9b9227912e4e443f1a7eea9185..c7d7a1a44eaf8e25d8e993d1b0d86f52726be6de 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Change the owner of a Protection Database entry"
@@ -45,8 +45,8 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "oldname"           : kafs.PR_MAXNAMELEN,
-    "owner"             : kafs.PR_MAXNAMELEN,
+    "oldname"           : rpc.PR_MAXNAMELEN,
+    "owner"             : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -71,15 +71,15 @@ def main(params):
 
     try:
         verbose("Chowning ", gid, " to ", owner, "\n")
-        ret = cell.call_pt_server(params, kafs.PR_ChangeEntry, gid, "", owner, 0)
+        ret = cell.call_pt_server(params, rpc.PR_ChangeEntry, gid, "", owner, 0)
         # The name is changed by the act of chowning (group names are prefixed
         # by the owner user name and a colon, and the prefix gets changed)
         prcache.evict_id(gid)
         prcache.evict_groups()
-    except kafs.AbortPRNOENT:
+    except rpc.AbortPRNOENT:
         error("User or group doesn't exist ; unable to change name of ",
               prcache.id_to_name(gid), " to ", params["owner"], "\n")
-    except kafs.AbortPRPERM:
+    except rpc.AbortPRPERM:
         error("Permission denied ; unable to change name of ",
               prcache.id_to_name(gid), " to ", prcache.id_to_name(owner), "\n")
 
similarity index 88%
rename from suite/commands/pts/creategroup.py
rename to kafs/commands/pts/creategroup.py
index d0da8b85db6ffce83344c8d89e81555467fabd91..215e94a6bd1fa2d9d981465cd1674a4f51c01aff 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Create an (empty) Protection Database group entry"
@@ -46,7 +46,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.PR_MAXNAMELEN,
+    "name"              : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -74,18 +74,18 @@ def main(params):
             verbose("Adding group ", name, "\n")
             if i < len(ids):
                 new_id = int(ids[i])
-                ret = cell.call_pt_server(params, kafs.PR_INewEntry, name, new_id, oid)
+                ret = cell.call_pt_server(params, rpc.PR_INewEntry, name, new_id, oid)
             else:
-                ret = cell.call_pt_server(params, kafs.PR_NewEntry, name, kafs.PRGRP, oid)
+                ret = cell.call_pt_server(params, rpc.PR_NewEntry, name, rpc.PRGRP, oid)
                 new_id = ret.id
             output("Group ", name, " has id ", new_id, "\n")
             prcache.evict_name(name)
             prcache.evict_id(new_id)
-        except kafs.AbortPREXIST:
+        except rpc.AbortPREXIST:
             error("Entry for name already exists ; unable to create group ", name, "\n")
             if "force" not in params:
                 break
-        except kafs.AbortPRIDEXIST:
+        except rpc.AbortPRIDEXIST:
             error("Entry for id already exists ; unable to create group ", name, " with id ", new_id, "\n")
             if "force" not in params:
                 break
similarity index 87%
rename from suite/commands/pts/createuser.py
rename to kafs/commands/pts/createuser.py
index 71c415b455078e5e0b7020e1d953b486ec4be5db..ee7d69bc8315b52eefbbe74db1e856d352d9541f 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Create a user or machine entry in the Protection Database"
@@ -45,7 +45,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.PR_MAXNAMELEN,
+    "name"              : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -68,18 +68,18 @@ def main(params):
             verbose("Adding user ", name, "\n")
             if i < len(ids):
                 new_id = int(ids[i])
-                ret = cell.call_pt_server(params, kafs.PR_NewEntry, name, new_id, 0)
+                ret = cell.call_pt_server(params, rpc.PR_NewEntry, name, new_id, 0)
             else:
-                ret = cell.call_pt_server(params, kafs.PR_NewEntry, name, 0, 0)
+                ret = cell.call_pt_server(params, rpc.PR_NewEntry, name, 0, 0)
                 new_id = ret.id
             output("User ", name, " has id ", new_id, "\n")
             prcache.evict_name(name)
             prcache.evict_id(new_id)
-        except kafs.AbortPREXIST:
+        except rpc.AbortPREXIST:
             error("Entry for name already exists ; unable to create user ", name, "\n")
             if "force" not in params:
                 break
-        except kafs.AbortPRIDEXIST:
+        except rpc.AbortPRIDEXIST:
             error("Entry for id already exists ; unable to create user ", name, " with id ", new_id, "\n")
             if "force" not in params:
                 break
similarity index 90%
rename from suite/commands/pts/delete.py
rename to kafs/commands/pts/delete.py
index 33183413b13221533f363bc51dd747ef114eaec4..2bd6e16f38942570e85298febf49b5b4dbd5a61a 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Delete a Protection Database entry"
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "nameorid"          : kafs.PR_MAXNAMELEN,
+    "nameorid"          : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -68,14 +68,14 @@ def main(params):
 
         try:
             verbose("Deleting user ", uid, " (", prcache.id_to_name(uid), ")\n")
-            ret = cell.call_pt_server(params, kafs.PR_Delete, uid)
+            ret = cell.call_pt_server(params, rpc.PR_Delete, uid)
             prcache.evict_id(uid)
             prcache.evict_groups()
-        except kafs.AbortPRNOENT:
+        except rpc.AbortPRNOENT:
             error("User or group doesn't exist deleting ", name, " (id ", uid, ")\n")
             if "force" not in params:
                 break
-        except kafs.AbortPRPERM:
+        except rpc.AbortPRPERM:
             error("Permission denied deleting ", name, " (id: ", uid, ")\n")
             if "force" not in params:
                 break
similarity index 85%
rename from suite/commands/pts/examine.py
rename to kafs/commands/pts/examine.py
index b2022c0ca90c3c4b2e5deed835a32f2016ca7508..ec5ee90d30625be397d7535c2a4aedc7cc3d91a9 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Display a Protection Database entry"
@@ -45,7 +45,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "nameorid"          : kafs.PR_MAXNAMELEN,
+    "nameorid"          : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -69,16 +69,16 @@ def main(params):
         if uid not in results:
             try:
                 verbose("Listing entry for ", uid, " (", name, ")\n")
-                ret = cell.call_pt_server(params,  kafs.PR_ListEntry, uid)
+                ret = cell.call_pt_server(params,  rpc.PR_ListEntry, uid)
                 entry = ret.entry
                 results[uid] = entry
                 requests.append(uid)
                 prcache.precache_id(entry.owner)
                 prcache.precache_id(entry.creator)
-            except kafs.AbortPRNOENT:
+            except rpc.AbortPRNOENT:
                 error("User or group doesn't exist examining ", name, " (id ", uid, ")\n")
                 prcache.id_is_unknown(uid)
-            except kafs.AbortPRPERM:
+            except rpc.AbortPRPERM:
                 error("Permission denied examining ", name, " (id: ", uid, ")\n")
 
     # Display the results
@@ -87,37 +87,37 @@ def main(params):
         eflags = entry.flags << 16
         flags = ""
         # Indicate who can use "pts examine"
-        if eflags & kafs.PRP_STATUS_ANY:
+        if eflags & rpc.PRP_STATUS_ANY:
             flags += "S" # Anyone
-        elif eflags & kafs.PRP_STATUS_MEM:
+        elif eflags & rpc.PRP_STATUS_MEM:
             flags += "s" # Members only
         else:
             flags += "-" # Should not exist
 
         # Indicate who can use "pts listowned"
-        if eflags & kafs.PRP_OWNED_ANY:
+        if eflags & rpc.PRP_OWNED_ANY:
             flags += "O" # Anyone
         else:
             flags += "-" # Sysadmin & Group owner only
 
         # Indicate who can use "pts membership"
-        if eflags & kafs.PRP_MEMBER_ANY:
+        if eflags & rpc.PRP_MEMBER_ANY:
             flags += "M" # Anyone
-        elif eflags & kafs.PRP_MEMBER_MEM:
+        elif eflags & rpc.PRP_MEMBER_MEM:
             flags += "m" # Members only
         else:
             flags += "-" # Sysadmin & User can list which groups they belong to
 
         # Indicate who can use "pts adduser"
-        if eflags & kafs.PRP_ADD_ANY:
+        if eflags & rpc.PRP_ADD_ANY:
             flags += "A" # Anyone
-        elif eflags & kafs.PRP_ADD_MEM:
+        elif eflags & rpc.PRP_ADD_MEM:
             flags += "a" # Members only
         else:
             flags += "-" # Sysadmin & Group owner only
 
         # Indicate who can use "pts removeuser"
-        if eflags & kafs.PRP_REMOVE_MEM:
+        if eflags & rpc.PRP_REMOVE_MEM:
             flags += "r" # Members can remove other members
         else:
             flags += "-" # Sysadmin & Group owner only
@@ -125,8 +125,8 @@ def main(params):
         # The group quota being 'unlimited' seems to depend on being a member
         # of the system:administrators group and/or having zero ngroups (or
         # possibly something else)
-        verbose("Is ", entry.id, " a member of ", kafs.PR_SYSADMINID, "?\n")
-        ret = cell.call_pt_server(params, kafs.PR_IsAMemberOf, entry.id, kafs.PR_SYSADMINID)
+        verbose("Is ", entry.id, " a member of ", rpc.PR_SYSADMINID, "?\n")
+        ret = cell.call_pt_server(params, rpc.PR_IsAMemberOf, entry.id, rpc.PR_SYSADMINID)
         group_quota = entry.ngroups
         if ret.flag or entry.ngroups == 0:
             group_quota = "unlimited"
similarity index 87%
rename from suite/commands/pts/listentries.py
rename to kafs/commands/pts/listentries.py
index 7c04a8d92d90ad3360d3d578b91a255e2b2f247f..bbb4d0ec3584f008ad96ea495a453113560e45a0 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Display all users or groups in the Protection Database"
@@ -52,13 +52,13 @@ def main(params):
     cell = params["cell"]
 
     if "users" in params and "groups" in params:
-        flags = kafs.PRWANTUSERS | kafs.PRWANTGROUPS
+        flags = rpc.PRWANTUSERS | rpc.PRWANTGROUPS
     elif "groups" in params:
-        flags = kafs.PRWANTGROUPS
+        flags = rpc.PRWANTGROUPS
     else:
-        flags = kafs.PRWANTUSERS
+        flags = rpc.PRWANTUSERS
 
-    ret = cell.call_pt_server(params,  kafs.PR_ListEntries, flags, 0)
+    ret = cell.call_pt_server(params,  rpc.PR_ListEntries, flags, 0)
 
     output("Name                          ID   Owner Creator\n")
     for i in ret.entries:
similarity index 92%
rename from suite/commands/pts/listmax.py
rename to kafs/commands/pts/listmax.py
index 01c9e5e458e152b24f3ae0249546203ff9798071..2a1a1b60863d87351fd14bdf406f2c3c852ee295 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Display the max user id and max group id counters"
@@ -49,5 +49,5 @@ Display the max user id and max group id counters
 def main(params):
     cell = params["cell"]
 
-    ret = cell.call_pt_server(params, kafs.PR_ListMax)
+    ret = cell.call_pt_server(params, rpc.PR_ListMax)
     output("Max user id is ", ret.uid, " and max group id is ", ret.gid, ".\n")
similarity index 91%
rename from suite/commands/pts/listowned.py
rename to kafs/commands/pts/listowned.py
index f2a83faa2584dcb9ad2ea578fa17a3893a9b98b4..f103ec53c6536b8d9167fcbe7c25d7da0d9668ec 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Show the Protection Database groups owned by a user or group"
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "nameorid"          : kafs.PR_MAXNAMELEN,
+    "nameorid"          : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -69,17 +69,17 @@ def main(params):
 
         try:
             verbose("Listing entries owned by user ", uid, " (", name, ")\n")
-            ret = cell.call_pt_server(params, kafs.PR_ListOwned, uid, 0)
+            ret = cell.call_pt_server(params, rpc.PR_ListOwned, uid, 0)
             elist = ret.elist
             for entry in elist:
                 prcache.precache_id(entry)
             results.append((uid, elist))
 
-        except kafs.AbortPRNOENT:
+        except rpc.AbortPRNOENT:
             error("User or group doesn't exist deleting ", name, " (id ", uid, ")\n")
             if "force" not in params:
                 break
-        except kafs.AbortPRPERM:
+        except rpc.AbortPRPERM:
             error("Permission denied deleting ", name, " (id: ", uid, ")\n")
             if "force" not in params:
                 break
similarity index 93%
rename from suite/commands/pts/membership.py
rename to kafs/commands/pts/membership.py
index 434db42f6b8a47772f3766db828fa5f00fc8b854..91683d3530d660c1d6a089d69fb82beb22a5c3d8 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Show the Protection Database groups owned by a user or group"
@@ -46,7 +46,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "nameorid"          : kafs.PR_MAXNAMELEN,
+    "nameorid"          : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -80,7 +80,7 @@ def main(params):
                     prcache.precache_ids(group)
                 else:
                     # User - ListElements returns the ancestry of a non-group
-                    ret = cell.call_pt_server(params, kafs.PR_ListElements, gid)
+                    ret = cell.call_pt_server(params, rpc.PR_ListElements, gid)
                     elist = ret.elist
                     memberships[gid] = elist
                     prcache.precache_ids(elist)
@@ -89,12 +89,12 @@ def main(params):
                             prcache.id_to_group(i)
                 requests.append(gid)
 
-            except kafs.AbortPRNOENT:
+            except rpc.AbortPRNOENT:
                 error("User or group doesn't exist ", name, " (id ", gid, ")\n")
                 prcache.id_is_unknown(gid)
                 if "force" not in params:
                     break
-            except kafs.AbortPRPERM:
+            except rpc.AbortPRPERM:
                 error("Permission denied on ID ", name, " (id: ", gid, ")\n")
                 prcache.id_is_unknown(gid)
                 if "force" not in params:
@@ -114,7 +114,7 @@ def main(params):
     if "supergroups" in params:
         for r in requests:
             if r < 0:
-                ret = cell.call_pt_server(params, kafs.PR_ListGroupsMemberOf, r)
+                ret = cell.call_pt_server(params, rpc.PR_ListGroupsMemberOf, r)
                 glist = ret.glist
                 memberships[r] = glist
 
similarity index 91%
rename from suite/commands/pts/removeuser.py
rename to kafs/commands/pts/removeuser.py
index cf0393427c10f57815c4cb2e278f5010bc73ca6f..2ff7c240076a5fbe28d00deb36f23f557057f7fd 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 help = "Remove a user from a Protection Database group"
 
@@ -44,7 +44,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.PR_MAXNAMELEN,
+    "name"              : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -79,9 +79,9 @@ def main(params):
                     continue
 
             try:
-                ret = cell.call_pt_server(params, kafs.PR_RemoveFromGroup, uid, gid)
+                ret = cell.call_pt_server(params, rpc.PR_RemoveFromGroup, uid, gid)
                 prcache.evict_groups()
-            except kafs.AbortPRNOENT:
+            except rpc.AbortPRNOENT:
                 error("User or group doesn't exist ; unable to remove user ", user, " from group ", group, ignored, "\n")
                 if "force" not in params:
                     return
similarity index 88%
rename from suite/commands/pts/rename.py
rename to kafs/commands/pts/rename.py
index 43b6b98f0ea2cfaa4d39fd0ed0446f0b655f3268..190696129f4858355ed10b607342708028d2e4b7 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Change the name of a Protection Database entry"
@@ -45,8 +45,8 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "oldname"           : kafs.PR_MAXNAMELEN,
-    "newname"           : kafs.PR_MAXNAMELEN,
+    "oldname"           : rpc.PR_MAXNAMELEN,
+    "newname"           : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -67,13 +67,13 @@ def main(params):
 
     try:
         verbose("Renaming ", uid, " to ", newname, "\n")
-        ret = cell.call_pt_server(params, kafs.PR_ChangeEntry, uid, newname, 0, 0)
+        ret = cell.call_pt_server(params, rpc.PR_ChangeEntry, uid, newname, 0, 0)
         prcache.evict_id(uid)
         prcache.evict_groups()
-    except kafs.AbortPREXIST:
+    except rpc.AbortPREXIST:
         error("Entry for name already exists ; unable to change name of ",
               prcache.id_to_name(uid), " to ", newname, "\n")
-    except kafs.AbortPRNOENT:
+    except rpc.AbortPRNOENT:
         error("User or group doesn't exist ; unable to change name of ",
               uid, " to ", newname, "\n")
 
similarity index 83%
rename from suite/commands/pts/setfields.py
rename to kafs/commands/pts/setfields.py
index e1dae250257b0da5e2a7cf043d93ee2a803f22a6..b1757ade7528e1b1c3b83734328f4bf23e1ec2b3 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.exception import AFSArgumentError
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.exception import AFSArgumentError
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Set privacy flags or quota for a Protection Database entry"
@@ -37,15 +37,15 @@ def get_privacy_flags(switch, params):
 
     # Indicate who can use "pts examine"
     if s[0] == "S":
-        flags |= kafs.PRP_STATUS_ANY    # Anyone
+        flags |= rpc.PRP_STATUS_ANY    # Anyone
     elif s[0] == "s":
-        flags |= kafs.PRP_STATUS_MEM    # Members only
+        flags |= rpc.PRP_STATUS_MEM    # Members only
     else:
         raise AFSArgumentError("Status-read privacy flags must be [Ss]")
 
     # Indicate who can use "pts listowned"
     if s[1] == "O":
-        flags |= kafs.PRP_OWNED_ANY     # Anyone
+        flags |= rpc.PRP_OWNED_ANY     # Anyone
     elif s[1] == "-":
         pass                            # Sysadmin & Group owner only
     else:
@@ -53,9 +53,9 @@ def get_privacy_flags(switch, params):
 
     # Indicate who can use "pts membership"
     if s[2] == "M":
-        flags |= kafs.PRP_MEMBER_ANY    # Anyone
+        flags |= rpc.PRP_MEMBER_ANY    # Anyone
     elif s[2] == "m":
-        flags |= kafs.PRP_MEMBER_MEM  # Members only
+        flags |= rpc.PRP_MEMBER_MEM  # Members only
     elif s[2] == "-":
         pass                            # Sysadmin & User can list which groups they belong to
     else:
@@ -63,9 +63,9 @@ def get_privacy_flags(switch, params):
 
     # Indicate who can use "pts adduser"
     if s[3] == "A":
-        flags |= kafs.PRP_ADD_ANY       # Anyone
+        flags |= rpc.PRP_ADD_ANY       # Anyone
     elif s[3] == "a":
-        elflags |= kafs.PRP_ADD_MEM     # Members only
+        elflags |= rpc.PRP_ADD_MEM     # Members only
     elif s[3] == "-":
         pass                            # Sysadmin & Group owner only
     else:
@@ -73,7 +73,7 @@ def get_privacy_flags(switch, params):
 
     # Indicate who can use "pts removeuser"
     if s[4] == "r":
-        flags |= kafs.PRP_REMOVE_MEM    # Members can remove other members
+        flags |= rpc.PRP_REMOVE_MEM    # Members can remove other members
     elif s[4] == "-":
         pass                            # Sysadmin |= Group owner only
     else:
@@ -100,7 +100,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "nameorid"          : kafs.PR_MAXNAMELEN,
+    "nameorid"          : rpc.PR_MAXNAMELEN,
 }
 
 description = r"""
@@ -121,24 +121,24 @@ def main(params):
 
     if "access" in params:
         flags = params["access"]
-        mask |= kafs.PR_SF_ALLBITS
+        mask |= rpc.PR_SF_ALLBITS
 
     if "groupquota" in params:
         ngroups = params["groupquota"]
         if not ngroups.isnumeric():
             raise AFSArgumentError("Group quota must be positive integer or zero")
         ngroups = int(ngroups)
-        mask |= kafs.PR_SF_NGROUPS
+        mask |= rpc.PR_SF_NGROUPS
 
     for name in params["nameorid"]:
         uid = prcache.name_or_id_to_id(name)
 
         try:
             verbose("Altering entry for ", uid, " (", name, ")\n")
-            ret = cell.call_pt_server(params,  kafs.PR_SetFieldsEntry,
+            ret = cell.call_pt_server(params,  rpc.PR_SetFieldsEntry,
                                       uid, mask, flags, ngroups, 0, 0, 0)
-        except kafs.AbortPRNOENT:
+        except rpc.AbortPRNOENT:
             error("User or group doesn't exist examining ", name, " (id ", uid, ")\n")
             prcache.id_is_unknown(uid)
-        except kafs.AbortPRPERM:
+        except rpc.AbortPRPERM:
             error("Permission denied examining ", name, " (id: ", uid, ")\n")
similarity index 87%
rename from suite/commands/pts/setmax.py
rename to kafs/commands/pts/setmax.py
index 59f32a8a140fd36b6fe8c11e198013ecd2d872d8..26acabcf7503775aa8c2ae01db3ece5d3af0256a 100644 (file)
@@ -21,9 +21,9 @@ 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.argparse import *
-from afs.lib.output import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.rpc as rpc
 import sys
 
 help = "Set the value of the max group id or max user id counter"
@@ -55,8 +55,8 @@ def main(params):
         try:
             uid = params["user"]
             verbose("Set max UID to ", uid, "\n")
-            ret = cell.call_pt_server(params, kafs.PR_SetMax, uid, kafs.PRUSER)
-        except kafs.AbortPRPERM:
+            ret = cell.call_pt_server(params, rpc.PR_SetMax, uid, rpc.PRUSER)
+        except rpc.AbortPRPERM:
             error("Permission denied ; unable to change max user id\n")
             if "force" not in params:
                 return
@@ -65,8 +65,8 @@ def main(params):
         try:
             gid = params["group"]
             verbose("Set max GID to ", gid, "\n")
-            ret = cell.call_pt_server(params, kafs.PR_SetMax, gid, kafs.PRGRP)
-        except kafs.AbortPRPERM:
+            ret = cell.call_pt_server(params, rpc.PR_SetMax, gid, rpc.PRGRP)
+        except rpc.AbortPRPERM:
             error("Permission denied ; unable to change max group id\n")
             
 
similarity index 75%
rename from suite/commands/vos/create.py
rename to kafs/commands/vos/create.py
index 4bdb8d4b3812dd5be9e9af5dd2c74c10ca30f063..0d71d812a4ee55941b593b1a271d534433f6ea3f 100644 (file)
@@ -21,12 +21,12 @@ 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.argparse import *
-from afs.exception import AFSException
-from afs.lib.output import *
-from afs.lib.partition import id2part
-from afs.lib.time import *
-import kafs
+from kafs.argparse import *
+from kafs.exception import AFSException
+from kafs.lib.output import *
+from kafs.lib.partition import id2part
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 help = "Create a read/write volume and associated VLDB entry"
 
@@ -57,7 +57,7 @@ def main(params):
     vol_conn = cell.open_volume_server(params["server"], params)
     vldb_conn = cell.open_vl_server(params)
 
-    ret = kafs.VOLSER_XListPartitions(vol_conn)
+    ret = rpc.VOLSER_XListPartitions(vol_conn)
     partitions = ret.ent
 
     # The partition must exist on the server
@@ -67,36 +67,36 @@ def main(params):
 
     # The volume mustn't exist in the VLDB
     try:
-        ret = kafs.VL_GetEntryByNameN(vldb_conn, params["name"])
+        ret = rpc.VL_GetEntryByNameN(vldb_conn, params["name"])
         raise AFSException("Volume " + params["name"] + " already exists")
-    except kafs.AbortVL_NOENT:
+    except rpc.AbortVL_NOENT:
         pass
 
     # We need three volume IDs for the R/W, R/O and backup volumes
     volume_ids = [ 0, 0, 0 ]
-    ret = kafs.VL_GetNewVolumeId(vldb_conn, 1)
-    volume_ids[kafs.RWVOL] = ret.newvolumid
-    ret = kafs.VL_GetNewVolumeId(vldb_conn, 1)
-    volume_ids[kafs.ROVOL] = ret.newvolumid
-    ret = kafs.VL_GetNewVolumeId(vldb_conn, 1)
-    volume_ids[kafs.BACKVOL] = ret.newvolumid
+    ret = rpc.VL_GetNewVolumeId(vldb_conn, 1)
+    volume_ids[rpc.RWVOL] = ret.newvolumid
+    ret = rpc.VL_GetNewVolumeId(vldb_conn, 1)
+    volume_ids[rpc.ROVOL] = ret.newvolumid
+    ret = rpc.VL_GetNewVolumeId(vldb_conn, 1)
+    volume_ids[rpc.BACKVOL] = ret.newvolumid
 
     # Begin a volume creation transaction and configure the volume
-    ret = kafs.VOLSER_CreateVolume(vol_conn,
+    ret = rpc.VOLSER_CreateVolume(vol_conn,
                                    part,
                                    params["name"],
-                                   kafs.RWVOL,
+                                   rpc.RWVOL,
                                    0,
-                                   volume_ids[kafs.RWVOL])
-    if ret.volid != volume_ids[kafs.RWVOL]:
+                                   volume_ids[rpc.RWVOL])
+    if ret.volid != volume_ids[rpc.RWVOL]:
         raise AFSException("Tried to create volume {:x} but got {:x}".format(
-            ret.volid, volume_ids[kafs.RWVOL]))
+            ret.volid, volume_ids[rpc.RWVOL]))
     transaction = ret.trans
 
     try:
         # Set the maximum quota
         v = 0xffffffff
-        info = kafs.volintInfo()
+        info = rpc.volintInfo()
         info.creationDate = v
         info.accessDate = v
         info.updateDate = v
@@ -112,41 +112,41 @@ def main(params):
         else:
             info.maxquota = 5000
 
-        ret = kafs.VOLSER_SetInfo(vol_conn, transaction, info)
+        ret = rpc.VOLSER_SetInfo(vol_conn, transaction, info)
 
         # Set the flags
-        ret = kafs.VOLSER_SetFlags(vol_conn, transaction, 0)
+        ret = rpc.VOLSER_SetFlags(vol_conn, transaction, 0)
 
         # Create the VLDB entry
-        vldb = kafs.nvldbentry()
+        vldb = rpc.nvldbentry()
         vldb.name = params["name"]
         vldb.nServers = 1
         vldb.serverNumber[0] = int(params["server"].addr())
         vldb.serverPartition[0] = part
-        vldb.serverFlags[0] = kafs.VLSF_RWVOL
+        vldb.serverFlags[0] = rpc.VLSF_RWVOL
         vldb.volumeId = volume_ids
         vldb.cloneId = 0
-        vldb.flags = kafs.VLF_RWEXISTS
+        vldb.flags = rpc.VLF_RWEXISTS
 
-        ret = kafs.VL_CreateEntryN(vldb_conn, vldb)
+        ret = rpc.VL_CreateEntryN(vldb_conn, vldb)
 
     except Exception as e:
         # If we can't create a VLDB entry, we should probably clean up the
         # volume we've just created, rather than leaving it lying around.
         error("VLDB entry or volume creation failed; attempting to delete the volume.");
         try:
-            kafs.VOLSER_DeleteVolume(vol_conn, transaction)
+            rpc.VOLSER_DeleteVolume(vol_conn, transaction)
         except:
             error("Volume deletion failed");
         try:
-            ret = kafs.VOLSER_EndTrans(vol_conn, transaction)
+            ret = rpc.VOLSER_EndTrans(vol_conn, transaction)
         except:
             error("Couldn't end volume creation transaction on error\n")
         raise e
 
     # Polish off
     try:
-        ret = kafs.VOLSER_EndTrans(vol_conn, transaction)
+        ret = rpc.VOLSER_EndTrans(vol_conn, transaction)
     except Exception as e:
         error("Couldn't end volume creation transaction on error\n")
         raise e
similarity index 70%
rename from suite/commands/vos/examine.py
rename to kafs/commands/vos/examine.py
index 71136c5b0d90865de7b5ba17265a7441830d5e1b..97fdb34cfdf2917c7c83fb674d19c3dd39119f76 100644 (file)
@@ -21,13 +21,13 @@ 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.argparse import *
-from afs.exception import AFSException
-from afs.lib.output import *
-from afs.lib.voldisplay import *
-from afs.lib.partition import id2part
-from afs.lib.volserver import volserver
-import kafs
+from kafs.argparse import *
+from kafs.exception import AFSException
+from kafs.lib.output import *
+from kafs.lib.voldisplay import *
+from kafs.lib.partition import id2part
+from kafs.lib.volserver import volserver
+import kafs.rpc as rpc
 
 help = "Show volume header and VLDB entry information for a volume"
 
@@ -49,7 +49,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "id"                : kafs.VLDB_MAXNAMELEN,
+    "id"                : rpc.VLDB_MAXNAMELEN,
 }
 
 description = r"""
@@ -57,12 +57,12 @@ Show volume header and VLDB entry information for a volume
 """
 
 def display_vldb(params, vldb):
-    if vldb.volumeId[kafs.RWVOL] != 0:
-        outputf("    RWrite: {:<10d}", vldb.volumeId[kafs.RWVOL])
-    if vldb.volumeId[kafs.ROVOL] != 0:
-        outputf("    ROnly: {:<10d}", vldb.volumeId[kafs.ROVOL])
-    if vldb.volumeId[kafs.BACKVOL] != 0:
-        outputf("    Backup: {:<10d}", vldb.volumeId[kafs.BACKVOL])
+    if vldb.volumeId[rpc.RWVOL] != 0:
+        outputf("    RWrite: {:<10d}", vldb.volumeId[rpc.RWVOL])
+    if vldb.volumeId[rpc.ROVOL] != 0:
+        outputf("    ROnly: {:<10d}", vldb.volumeId[rpc.ROVOL])
+    if vldb.volumeId[rpc.BACKVOL] != 0:
+        outputf("    Backup: {:<10d}", vldb.volumeId[rpc.BACKVOL])
     output("\n")
 
     display_vldb_site_list(params, vldb, "    ")
@@ -90,31 +90,31 @@ def main(params):
     volname = params["id"]
     if volname.isnumeric():
         volid = int(volname)
-        ret = kafs.VL_GetEntryByIDN(vl_conn, volid, 0xffffffff)
+        ret = rpc.VL_GetEntryByIDN(vl_conn, volid, 0xffffffff)
         vldb = ret.entry
-        if volid == vldb.volumeId[kafs.RWVOL]:
-            servflag = kafs.VLSF_RWVOL
-        elif volid == vldb.volumeId[kafs.ROVOL]:
-            servflag = kafs.VLSF_ROVOL
-        elif volid == vldb.volumeId[kafs.BACKVOL]:
-            servflag = kafs.VLSF_BACKVOL
+        if volid == vldb.volumeId[rpc.RWVOL]:
+            servflag = rpc.VLSF_RWVOL
+        elif volid == vldb.volumeId[rpc.ROVOL]:
+            servflag = rpc.VLSF_ROVOL
+        elif volid == vldb.volumeId[rpc.BACKVOL]:
+            servflag = rpc.VLSF_BACKVOL
         else:
             raise AFSException("Requested volume ID not in record for volume ID")
     else:
-        ret = kafs.VL_GetEntryByNameN(vl_conn, volname)
+        ret = rpc.VL_GetEntryByNameN(vl_conn, volname)
         vldb = ret.entry
         servflag = 0
         for i in range(0, vldb.nServers):
             servflag |= vldb.serverFlags[i]
-        if servflag & kafs.VLSF_RWVOL:
-            servflag = kafs.VLSF_RWVOL
-            volid = vldb.volumeId[kafs.RWVOL]
-        elif servflag & kafs.VLSF_ROVOL:
-            servflag = kafs.VLSF_ROVOL
-            volid = vldb.volumeId[kafs.ROVOL]
-        elif servflag & kafs.VLSF_BACKVOL:
-            servflag = kafs.VLSF_BACKVOL
-            volid = vldb.volumeId[kafs.BACKVOL]
+        if servflag & rpc.VLSF_RWVOL:
+            servflag = rpc.VLSF_RWVOL
+            volid = vldb.volumeId[rpc.RWVOL]
+        elif servflag & rpc.VLSF_ROVOL:
+            servflag = rpc.VLSF_ROVOL
+            volid = vldb.volumeId[rpc.ROVOL]
+        elif servflag & rpc.VLSF_BACKVOL:
+            servflag = rpc.VLSF_BACKVOL
+            volid = vldb.volumeId[rpc.BACKVOL]
         else:
             raise AFSException("Requested volume does not exist on any server")
 
@@ -127,9 +127,9 @@ def main(params):
         vol_server = volserver(vldb.serverNumber[i])
         vol_conn = cell.open_volume_server(vol_server, params)
         if "extended" in params:
-            ret = kafs.VOLSER_XListOneVolume(vol_conn, vldb.serverPartition[i], volid)
+            ret = rpc.VOLSER_XListOneVolume(vol_conn, vldb.serverPartition[i], volid)
         else:
-            ret = kafs.VOLSER_ListOneVolume(vol_conn, vldb.serverPartition[i], volid)
+            ret = rpc.VOLSER_ListOneVolume(vol_conn, vldb.serverPartition[i], volid)
         params["server"] = vol_server
         params["_partname"] = id2part(vldb.serverPartition[i])
         vol = ret.resultEntries[0]
similarity index 83%
rename from suite/commands/vos/listaddrs.py
rename to kafs/commands/vos/listaddrs.py
index b9ee59558e14ef3ac52854def65d01313e736d29..647155adb5df17c11219f361f9c266ec6c2f5dd6 100644 (file)
@@ -21,11 +21,11 @@ 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.argparse import *
-from afs.lib.output import *
-from afs.lib.uuid import uuid2str
-import afs.lib.addrcache as addrcache
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.uuid import uuid2str
+import kafs.lib.addrcache as addrcache
+import kafs.rpc as rpc
 
 help = "Display all VLDB entries"
 
@@ -52,7 +52,7 @@ Display all VLDB entries
 """
 
 def list_one(params, vl_conn, attributes):
-    ret = kafs.VL_GetAddrsU(vl_conn, attributes)
+    ret = rpc.VL_GetAddrsU(vl_conn, attributes)
     if "printuuid" in params:
         output("UUID: ", uuid2str(ret.uuidp1), "\n")
 
@@ -63,13 +63,13 @@ def list_one(params, vl_conn, attributes):
         output("\n")
 
 def list_all(params, vl_conn):
-    ret = kafs.VL_GetAddrs(vl_conn, 0, 0)
+    ret = rpc.VL_GetAddrs(vl_conn, 0, 0)
     verbose("nentries ", ret.nentries, "\n")
 
     found = ret.nentries
     limit = ret.nentries * 2
-    attributes = kafs.ListAddrByAttributes()
-    attributes.Mask |= kafs.VLADDR_INDEX
+    attributes = rpc.ListAddrByAttributes()
+    attributes.Mask |= rpc.VLADDR_INDEX
     for index in range(1, 65536):
         verbose("Look up", index)
 
@@ -77,9 +77,9 @@ def list_all(params, vl_conn):
         try:
             list_one(params, vl_conn, attributes)
             found -= 1
-        except kafs.AbortVL_NOENT:
+        except rpc.AbortVL_NOENT:
             continue
-        except kafs.AbortVL_INDEXERANGE:
+        except rpc.AbortVL_INDEXERANGE:
             break
         if found <= 0:
             break
@@ -91,13 +91,13 @@ def main(params):
     if "uuid" not in params and "host" not in params:
         return list_all(params, vl_conn)
 
-    attributes = kafs.ListAddrByAttributes()
+    attributes = rpc.ListAddrByAttributes()
     attributes.Mask = 0
     if "uuid" in params:
-        attributes.Mask |= kafs.VLADDR_UUID
+        attributes.Mask |= rpc.VLADDR_UUID
         attributes.uuid = params["uuid"]
     if "host" in params:
-        attributes.Mask |= kafs.VLADDR_IPADDR
+        attributes.Mask |= rpc.VLADDR_IPADDR
         attributes.ipaddr = params["host"].integer_addr()
 
     list_one(params, vl_conn, attributes)
similarity index 92%
rename from suite/commands/vos/listpart.py
rename to kafs/commands/vos/listpart.py
index 37e08d9e89ea47ee13c95feccd0843556ec83ba2..210e8a5f4c1d9dca7e12423ffc2085a8df9abe8d 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.lib.output import *
-import afs.lib.partition as partition
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.lib.partition as partition
+import kafs.rpc as rpc
 
 help = "Display all AFS partitions on a file server machine"
 
@@ -51,7 +51,7 @@ def main(params):
     cell = params["cell"]
     vol_conn = cell.open_volume_server(params["server"], params)
 
-    ret = kafs.VOLSER_ListPartitions(vol_conn)
+    ret = rpc.VOLSER_ListPartitions(vol_conn)
     partitions = ret.partIDs.partIds
 
     output("The partitions on the server are:\n");
similarity index 82%
rename from suite/commands/vos/listvldb.py
rename to kafs/commands/vos/listvldb.py
index 28a62845032bc7835a951dec4d7ac4e8cdaaec69..265076fde0c4d510b7434252889a71e1afaa8277 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.lib.output import *
-from afs.lib.voldisplay import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.voldisplay import *
+import kafs.rpc as rpc
 
 help = "Query the VLDB"
 
@@ -52,7 +52,7 @@ cant_combine_arguments = [
 ]
 
 argument_size_limits = {
-    "name"              : kafs.VLDB_MAXNAMELEN,
+    "name"              : rpc.VLDB_MAXNAMELEN,
 }
 
 description = r"""
@@ -64,11 +64,11 @@ def print_record(params, vldb):
     output(vldb.name, "\n")
     output("   ");
     flags = vldb.serverFlags[0]
-    if flags & kafs.VLSF_RWVOL:
+    if flags & rpc.VLSF_RWVOL:
         outputf(" RWrite: {:<12d}", vldb.volumeId[0])
-    if flags & kafs.VLSF_ROVOL:
+    if flags & rpc.VLSF_ROVOL:
         outputf(" ROnly: {:<12d}", vldb.volumeId[1])
-    if flags & kafs.VLSF_BACKVOL:
+    if flags & rpc.VLSF_BACKVOL:
         outputf(" Backup: {:<12d}",vldb.volumeId[2])
     output("\n")
     display_vldb_site_list(params, vldb, "    ")
@@ -81,25 +81,25 @@ def main(params):
     quiet = "quiet" in params
 
     if "name" in params:
-        ret = kafs.VL_GetEntryByName(z_conn, params["name"])
+        ret = rpc.VL_GetEntryByName(z_conn, params["name"])
         vldb = ret.entry
         print_record(params, vldb)
         return
 
-    attributes = kafs.VldbListByAttributes()
+    attributes = rpc.VldbListByAttributes()
     attributes.Mask = 0
 
     if "server" in params:
-        attributes.Mask |= kafs.VLLIST_SERVER
+        attributes.Mask |= rpc.VLLIST_SERVER
         attributes.server = params["server"].integer_addr()
     if "partition" in params:
-        attributes.Mask |= kafs.VLLIST_PARTITION
+        attributes.Mask |= rpc.VLLIST_PARTITION
         attributes.partition = params["partition"]
     if "locked" in params:
-        attributes.Mask |= kafs.VLLIST_FLAG
-        attributes.flag = kafs.VLOP_MOVE | kafs.VLOP_RELEASE | kafs.VLOP_BACKUP | kafs.VLOP_DELETE | kafs.VLOP_DUMP
+        attributes.Mask |= rpc.VLLIST_FLAG
+        attributes.flag = rpc.VLOP_MOVE | rpc.VLOP_RELEASE | rpc.VLOP_BACKUP | rpc.VLOP_DELETE | rpc.VLOP_DUMP
 
-    ret = kafs.VL_ListAttributes(z_conn, attributes)
+    ret = rpc.VL_ListAttributes(z_conn, attributes)
     blkentries = ret.blkentries
 
     if not quiet and "server" in params:
similarity index 92%
rename from suite/commands/vos/listvol.py
rename to kafs/commands/vos/listvol.py
index 8fe520161cbfe267c238e3ece899474cdad27519..c59a05e1a84d2f5878eaa0b6cd1da381c7f10af7 100644 (file)
@@ -21,11 +21,11 @@ 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.argparse import *
-from afs.lib.output import *
-from afs.lib.partition import id2part
-from afs.lib.voldisplay import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+from kafs.lib.partition import id2part
+from kafs.lib.voldisplay import *
+import kafs.rpc as rpc
 import sys
 
 help = "Display information from a volume header"
@@ -74,10 +74,10 @@ writes_labels = [ "writes_same_net", "writes_same_net_auth",
                   "writes_diff_net", "writes_diff_net_auth" ]
 
 def display_format_extended(params, vol):
-    if vol.status == kafs.VBUSY:
+    if vol.status == rpc.VBUSY:
         output("VOLUME_BUSY\t{:d}\n", vol.volid)
         return
-    elif vol.status != kafs.VOK:
+    elif vol.status != rpc.VOK:
         output("COULD_NOT_ATTACH_VOLUME\t{:d}\n", vol.volid)
         return
 
@@ -102,9 +102,9 @@ def display_format_extended(params, vol):
 ###############################################################################
 def display_one_partition(params, vol_conn, partition):
     if "extended" in params:
-        ret = kafs.VOLSER_XListVolumes(vol_conn, partition, 1)
+        ret = rpc.VOLSER_XListVolumes(vol_conn, partition, 1)
     else:
-        ret = kafs.VOLSER_ListVolumes(vol_conn, partition, 1)
+        ret = rpc.VOLSER_ListVolumes(vol_conn, partition, 1)
 
     params["_partname"] = partname = id2part(partition)
     if "quiet" not in params:
@@ -131,7 +131,7 @@ def display_one_partition(params, vol_conn, partition):
     for vol in volumes:
         if vol.inUse:
             n_online += 1
-        if vol.status == kafs.VBUSY:
+        if vol.status == rpc.VBUSY:
             n_busy += 1
         display_func(params, vol)
 
@@ -158,10 +158,10 @@ def main(params):
     if "partition" in params:
         try:
             display_one_partition(params, vol_conn, params["partition"])
-        except kafs.AbortVOLSERILLEGAL_PARTITION:
+        except rpc.AbortVOLSERILLEGAL_PARTITION:
             error("vos : partition ", params["raw.partition"][0],
                   " does not exist on the server")
     else:
-        ret = kafs.VOLSER_XListPartitions(vol_conn)
+        ret = rpc.VOLSER_XListPartitions(vol_conn)
         for p in ret.ent:
             one_partition(params, vol_conn, p)
similarity index 88%
rename from suite/commands/vos/partinfo.py
rename to kafs/commands/vos/partinfo.py
index c7f44271055316dbc4e0c410a42cd2ea8d9a6a07..4f0a504270282c88932b4ab3cb2f01abadf37801 100644 (file)
@@ -21,10 +21,10 @@ 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.argparse import *
-from afs.lib.output import *
-import afs.lib.partition as partition
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.lib.partition as partition
+import kafs.rpc as rpc
 
 help = "Report the available and total space on a partition"
 
@@ -54,7 +54,7 @@ def main(params):
     vol_conn = cell.open_volume_server(params["server"], params)
 
     if "partition" not in params:
-        ret = kafs.VOLSER_ListPartitions(vol_conn)
+        ret = rpc.VOLSER_ListPartitions(vol_conn)
         partitions = ret.partIDs.partIds
     else:
         partitions = [ params["partition"] ]
@@ -64,10 +64,10 @@ def main(params):
             partname = partition.id2part(i)
 
             try:
-                ret = kafs.VOLSER_PartitionInfo(vol_conn, partname)
+                ret = rpc.VOLSER_PartitionInfo(vol_conn, partname)
                 part = ret.partition
 
                 output("Free space on partition ", part.name, ": ",
                        part.free, " K blocks out of total ", part.totalUsable, "\n")
-            except kafs.AbortVOLSERILLEGAL_PARTITION:
+            except rpc.AbortVOLSERILLEGAL_PARTITION:
                 error("partition ", partname, " does not exist on the server\n")
similarity index 88%
rename from suite/commands/vos/status.py
rename to kafs/commands/vos/status.py
index 463ba816f61da6811c9428ac24ad5a7ac253fc57..28c78f1da3753175eb228888e4bd75cf25259745 100644 (file)
@@ -21,11 +21,11 @@ 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.argparse import *
-from afs.lib.output import *
-import afs.lib.partition as partition
-from afs.lib.time import *
-import kafs
+from kafs.argparse import *
+from kafs.lib.output import *
+import kafs.lib.partition as partition
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 help = "Report a volume server's status"
 
@@ -52,7 +52,7 @@ def main(params):
     cell = params["cell"]
     vol_conn = cell.open_volume_server(params["server"], params)
 
-    ret = kafs.VOLSER_Monitor(vol_conn)
+    ret = rpc.VOLSER_Monitor(vol_conn)
     results = ret.result
     if len(results) == 0:
         output("No active transactions on", params["server"].name(), "\n")
@@ -62,15 +62,15 @@ def main(params):
     for trans in results:
         outputf("transaction: {:d}  created: {:s}\n", trans.tid, time2str(trans.creationTime))
         output("lastActiveTime:", time2str(trans.time), "\n")
-        if iflag & kafs.ITOffline:
+        if iflag & rpc.ITOffline:
             attach_mode = "offline"
-        elif iflag & kafs.ITBusy:
+        elif iflag & rpc.ITBusy:
             attach_mode = "busy"
-        elif iflag & kafs.ITReadOnly:
+        elif iflag & rpc.ITReadOnly:
             attach_mode = "readonly"
-        elif iflag & kafs.ITCreate:
+        elif iflag & rpc.ITCreate:
             attach_mode = "create"
-        elif iflag & kafs.ITCreateVolID:
+        elif iflag & rpc.ITCreateVolID:
             attach_mode = "createvolid"
         else:  
             attach_mode = "{:d}".format(trans.iflags)
similarity index 100%
rename from suite/exception.py
rename to kafs/exception.py
similarity index 96%
rename from suite/help.py
rename to kafs/help.py
index 3c700c5d21534f1042011d1890e2dc63ce7425c2..135ec0adf9abe62779e5e9603e4680fe793378ce 100644 (file)
@@ -21,9 +21,9 @@ 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 *
-from afs.lib.output import *
+from kafs.exception import AFSException
+from kafs.argparse import *
+from kafs.lib.output import *
 
 help = "Get help on commands"
 
@@ -101,7 +101,7 @@ def display_help_on_topics(prog, cmdsetmod, commands, topics):
             continue
 
         if topic == "apropos":
-            command = __import__("afs.apropos", globals(), locals(), ['*'])
+            command = __import__("kafs.apropos", globals(), locals(), ['*'])
             output("bos apropos: ", command.help, "\n")
             display_command_arguments(command.command_arguments)
             continue
similarity index 91%
rename from kafs.c
rename to kafs/kafs.c
index ef3b3a5cce04a5e85e5891b95480de90d3e1a83c..919caf470ef00d20eb2cc6319a42a13034f2c62f 100644 (file)
--- a/kafs.c
@@ -15,7 +15,7 @@
 #include <arpa/inet.h>
 #include "structmember.h"
 #include "kafs.h"
-#include "afs_py.h"
+#include "rxgen_afs_py.h"
 
 #if 0
 /*
@@ -33,13 +33,14 @@ static PyMethodDef module_methods[] = {
 #endif
 
 /*
- * Initialise the module.
+ * Initialise the module.  This function must be named for the last component
+ * of the module path (ie. rpc from kafs.rpc).
  */
 #ifndef PyMODINIT_FUNC /* declarations for DLL import/export */
 #define PyMODINIT_FUNC void
 #endif
 PyMODINIT_FUNC
-PyInit_kafs(void)
+PyInit_rpc(void)
 {
        PyObject *m;
 
similarity index 100%
rename from kafs.h
rename to kafs/kafs.h
diff --git a/kafs/lib/__init__.py b/kafs/lib/__init__.py
new file mode 100644 (file)
index 0000000..34ec353
--- /dev/null
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+__copyright__ = """
+Copyright (C) 2014 Red Hat, Inc. All Rights Reserved.
+Written by David Howells (dhowells@redhat.com)
+
+Derived from StGIT:
+
+Copyright (C) 2005, Catalin Marinas <catalin.marinas@gmail.com>
+Copyright (C) 2008, Karl Hasselström <kha@treskal.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
+"""
similarity index 90%
rename from suite/lib/addrcache.py
rename to kafs/lib/addrcache.py
index 05e32044c0f9acae3708c990b517e28276cfee49..8a7f2311b05f1216642882ce99d577210bb1007a 100644 (file)
@@ -21,7 +21,7 @@ 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 import exception
+from kafs.exception import AFSNetAddressError
 from socket import gethostbyname_ex, gethostbyaddr, gaierror, herror
 import sys
 import ipaddress
@@ -60,7 +60,7 @@ def name2addrs(name):
     try:
         addr = ipaddress.ip_address(name)
         if addr.version == 6:
-            raise exception.AFSNetAddressError("IPv6 is not currently supported")
+            raise AFSNetAddressError("IPv6 is not currently supported")
         return str(addr)
     except ValueError:
         pass
@@ -72,7 +72,7 @@ def name2addrs(name):
     try:
         result = gethostbyname_ex(name)
     except gaierror as e:
-        raise exception.AFSNetAddressError("Couldn't resolve '" + name + "'")
+        raise AFSNetAddressError("Couldn't resolve '" + name + "'")
     add_ghb(name, None, result)
 
     return cache_n2a[name]
@@ -86,10 +86,10 @@ def addr2addr(name):
     try:
         addr = ipaddress.ip_address(name)
         if addr.version == 6:
-            raise exception.AFSNetAddressError("IPv6 is not currently supported")
+            raise AFSNetAddressError("IPv6 is not currently supported")
         return addr
     except ValueError:
-        raise exception.AFSNetAddressError("Can't translate '" +  name + "' to integer")
+        raise AFSNetAddressError("Can't translate '" +  name + "' to integer")
 
 ###############################################################################
 #
@@ -103,7 +103,7 @@ def name2addr(name):
     try:
         addr = ipaddress.ip_address(name)
         if addr.version == 6:
-            raise exception.AFSNetAddressError("IPv6 is not currently supported")
+            raise AFSNetAddressError("IPv6 is not currently supported")
         return addr
     except ValueError:
         pass
@@ -168,5 +168,5 @@ def addr2addr(addr):
     if str(type(addr)) != "<class 'IPv4Address'>" and str(type(addr)) != "<class 'IPv6Address'>":
         addr = ipaddress.ip_address(addr)
     if addr.version == 6:
-        raise exception.AFSNetAddressError("IPv6 is not currently supported")
+        raise AFSNetAddressError("IPv6 is not currently supported")
     return addr
similarity index 92%
rename from suite/lib/bosserver.py
rename to kafs/lib/bosserver.py
index 6b663914e7b40f012dd684415e792c91894e340b..82adfeedda4b100fc209258874c17fa45abe1080 100644 (file)
@@ -21,9 +21,8 @@ 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 import exception
-from afs.lib.output import *
-from afs.lib.server import server
+from kafs.lib.output import *
+from kafs.lib.server import server
 
 class bosserver(server):
     """Represents an AFS BOS server.  We hold the server address here."""
similarity index 86%
rename from suite/lib/cell.py
rename to kafs/lib/cell.py
index ada0d68927fef350733a4074b14d6bf4c6d94629..add842a274affdea31e00fb4db8385f4297cd7a9 100644 (file)
@@ -21,16 +21,16 @@ 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 import exception
-from afs.lib.vlserver import vlserver
-from afs.lib.server import ServerError
-from afs.lib.prcache import prcache
-from afs.lib.output import *
+from kafs.exception import AFSException
+from kafs.lib.vlserver import vlserver
+from kafs.lib.server import ServerError
+from kafs.lib.prcache import prcache
+from kafs.lib.output import *
 import dns.resolver
 import linecache
-import kafs
+import kafs.rpc as rpc
 
-class CellError(exception.AFSException):
+class CellError(AFSException):
     """Error raised by L{cell} objects."""
 
 class cell:
@@ -163,9 +163,9 @@ class cell:
                 security = 0
                 key = None
             elif "encrypt" in params:
-                security = kafs.RXRPC_SECURITY_ENCRYPT
+                security = rpc.RXRPC_SECURITY_ENCRYPT
             else:
-                security = kafs.RXRPC_SECURITY_PLAIN
+                security = rpc.RXRPC_SECURITY_PLAIN
         return (key, security)
 
     # Open a VL Server connection
@@ -178,10 +178,10 @@ class cell:
         for vladdr in self.query_vl_addrs():
             verbose("Trying vlserver ", vladdr, "\n")
 
-            z_conn = kafs.rx_new_connection(str(vladdr), kafs.VL_PORT, kafs.VL_SERVICE,
-                                            key, security)
+            z_conn = rpc.rx_new_connection(str(vladdr), rpc.VL_PORT, rpc.VL_SERVICE,
+                                           key, security)
             try:
-                ret = kafs.VL_Probe(z_conn)
+                ret = rpc.VL_Probe(z_conn)
                 self.__vlconn = z_conn
                 break
             except ConnectionRefusedError:
@@ -197,10 +197,10 @@ class cell:
         key, security = self.determine_security(params)
 
         verbose("Trying volserver ", server.addr(), "\n")
-        vol_conn = kafs.rx_new_connection(str(server.addr()),
-                                          kafs.VOLSERVICE_PORT,
-                                          kafs.VOLSERVICE_ID,
-                                          key, security)
+        vol_conn = rpc.rx_new_connection(str(server.addr()),
+                                         rpc.VOLSERVICE_PORT,
+                                         rpc.VOLSERVICE_ID,
+                                         key, security)
         return vol_conn
 
     # Open a BOS Server connection
@@ -208,10 +208,10 @@ class cell:
         key, security = self.determine_security(params)
 
         verbose("Trying bosserver ", server.addr(), "\n")
-        bos_conn = kafs.rx_new_connection(str(server.addr()),
-                                          kafs.BOSSERVICE_PORT,
-                                          kafs.BOSSERVICE_ID,
-                                          key, security)
+        bos_conn = rpc.rx_new_connection(str(server.addr()),
+                                         rpc.BOSSERVICE_PORT,
+                                         rpc.BOSSERVICE_ID,
+                                         key, security)
         return bos_conn
 
     # Open a Protection Server connection
@@ -228,10 +228,10 @@ class cell:
 
         verbose("Trying ptserver ", server, "\n")
 
-        pt_conn = kafs.rx_new_connection(str(server),
-                                         kafs.PR_PORT,
-                                         kafs.PR_SERVICE,
-                                         key, security)
+        pt_conn = rpc.rx_new_connection(str(server),
+                                        rpc.PR_PORT,
+                                        rpc.PR_SERVICE,
+                                        key, security)
         return pt_conn
 
     # Find and call out to a working protection server
@@ -244,7 +244,7 @@ class cell:
             except ConnectionRefusedError:
                 # Move on to the next server
                 verbose("Connection refused\n");
-            except kafs.AbortUNOTSYNC:
+            except rpc.AbortUNOTSYNC:
                 verbose("Server is not synchronised\n");
             except OSError as e:
                 verbose(e, "\n");
similarity index 92%
rename from suite/lib/fileserver.py
rename to kafs/lib/fileserver.py
index 5ec98520043f1f3d6185f5d00af943d25aac2e14..888b7be2673368956286c68e916d14eaa8af9781 100644 (file)
@@ -21,9 +21,8 @@ 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 import exception
-from afs.lib.output import *
-from afs.lib.server import server
+from kafs.lib.output import *
+from kafs.lib.server import server
 
 class fileserver(server):
     """Represents an AFS File server.  We hold the server address here."""
similarity index 100%
rename from suite/lib/output.py
rename to kafs/lib/output.py
similarity index 92%
rename from suite/lib/parse_setrestart_time.py
rename to kafs/lib/parse_setrestart_time.py
index fec69f10a79d2ce80891408aae89d026fe65310a..b3282cdc438832d96027b35fe222908af26877e6 100644 (file)
@@ -21,8 +21,8 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from exception import AFSArgumentError
-import kafs
+from kafs.exception import AFSArgumentError
+import kafs.rpc as rpc
 
 days = [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ]
 
@@ -32,16 +32,16 @@ days = [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "satu
 #
 ###############################################################################
 def parse_restart_time(switch, params):
-    at = kafs.bozo_netKTime()
+    at = rpc.bozo_netKTime()
 
     time = params[0].strip().lower()
     if time == "":
         raise AFSArgumentError("Empty time string")
     if time == "never":
-        at.mask = kafs.KTIME_NEVER
+        at.mask = rpc.KTIME_NEVER
         return at
     if time == "now":
-        at.mask = kafs.KTIME_NOW
+        at.mask = rpc.KTIME_NOW
         return at
 
     if time.startswith("every "):
@@ -60,7 +60,7 @@ def parse_restart_time(switch, params):
         for i in range(0, 7):
             if days[i].startswith(day):
                 at.day = i
-                at.mask |= kafs.KTIME_DAY
+                at.mask |= rpc.KTIME_DAY
                 break
         else:
             raise AFSArgumentError("Unrecognised day name")
@@ -101,5 +101,5 @@ def parse_restart_time(switch, params):
     if at.min > 59:
         raise AFSArgumentError("Minute out of range in time")
 
-    at.mask |= kafs.KTIME_HOUR | kafs.KTIME_MIN
+    at.mask |= rpc.KTIME_HOUR | rpc.KTIME_MIN
     return at
similarity index 97%
rename from suite/lib/partition.py
rename to kafs/lib/partition.py
index 4463c33adb69b63208021cf8a48e9b673ff8c822..be74e9f229f428b0fec904ade9cee76adfd23642 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from exception import AFSArgumentError
+from kafs.exception import AFSArgumentError
 
 def part2id(name):
     """Convert a partition name or number string into a numeric ID"""
similarity index 96%
rename from suite/lib/prcache.py
rename to kafs/lib/prcache.py
index 6a3b9cd98af6c656d19799004111fed2541a9991..2d6a0a2195ebbef8398a650d67d2adefa95f4a30 100644 (file)
@@ -21,9 +21,8 @@ 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 import exception
-from afs.lib.output import *
-import kafs
+from kafs.lib.output import *
+import kafs.rpc as rpc
 
 class AFS_PR_Entry:
     """Protection Database Name/ID mapping entry"""
@@ -96,18 +95,18 @@ class prcache:
         name_arg_list = []
         for i in names_to_lookup:
             verbose_cont(i, ",")
-            prname = kafs.prname()
+            prname = rpc.prname()
             prname.prname = i
             name_arg_list.append(prname)
         verbose_cont(")\n")
 
-        ret = self.__cell.call_pt_server(self.__params, kafs.PR_NameToID, name_arg_list)
+        ret = self.__cell.call_pt_server(self.__params, rpc.PR_NameToID, name_arg_list)
         for i in range(0, len(names_to_lookup)):
             name = names_to_lookup[i]
             ugid = ret.ilist[i]
             # Convert the name to an ID for message purposes - note that if the
             # entry does not exist, this will return the anonymous ID
-            if ugid == kafs.PR_ANONYMOUSID and name != "anonymous":
+            if ugid == rpc.PR_ANONYMOUSID and name != "anonymous":
                 entry = AFS_PR_Entry(name, None)
             else:
                 entry = AFS_PR_Entry(name, ugid)
@@ -132,7 +131,7 @@ class prcache:
             verbose_cont(i, ",")
         verbose_cont(")\n")
 
-        ret = self.__cell.call_pt_server(self.__params, kafs.PR_IDToName, ids_to_lookup)
+        ret = self.__cell.call_pt_server(self.__params, rpc.PR_IDToName, ids_to_lookup)
         nlist = ret.nlist
         for i in range(0, len(ids_to_lookup)):
             ugid = ids_to_lookup[i]
@@ -270,7 +269,7 @@ class prcache:
     def do_look_up_group(self, gid):
         verbose("Look up group ", gid, "\n")
         assert(gid < 0)
-        ret = self.__cell.call_pt_server(self.__params, kafs.PR_ListElements, gid)
+        ret = self.__cell.call_pt_server(self.__params, rpc.PR_ListElements, gid)
         entries = ret.elist
         self.__groups[gid] = pr_group(gid, entries)
 
similarity index 94%
rename from suite/lib/server.py
rename to kafs/lib/server.py
index 4b43deb5e2f3ce4f489845e7fc57bc37b88ce420..fc71c5e8a818b95eff74c0469226e6912de6b83d 100644 (file)
@@ -21,11 +21,11 @@ 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 import exception
-import afs.lib.addrcache as addrcache
-from afs.lib.output import *
+from kafs.exception import AFSException
+import kafs.lib.addrcache as addrcache
+from kafs.lib.output import *
 
-class ServerError(exception.AFSException):
+class ServerError(AFSException):
     """Error raised by L{volserver} objects."""
 
 class server:
similarity index 100%
rename from suite/lib/time.py
rename to kafs/lib/time.py
similarity index 98%
rename from suite/lib/uuid.py
rename to kafs/lib/uuid.py
index 82cf05f36fe957b7b5aabaeecf3aea176e0aff50..68f9f4614cc7bfec20240b7163022dae022d8c06 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from exception import AFSArgumentError
+from kafs.exception import AFSArgumentError
 
 def uuid2str(uuid):
     """Convert an afsUUID-class object into a UUID string"""
similarity index 92%
rename from suite/lib/vlserver.py
rename to kafs/lib/vlserver.py
index d632a2f9aea14cb591aec17ab0609063bfc6e560..bfcc7de7ec24b65dbccc4885a0d055e303c452a0 100644 (file)
@@ -21,9 +21,8 @@ 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 import exception
-from afs.lib.output import *
-from afs.lib.server import server
+from kafs.lib.output import *
+from kafs.lib.server import server
 
 class vlserver(server):
     """Represents an AFS Volume Location server.  We hold the server address here."""
similarity index 94%
rename from suite/lib/voldisplay.py
rename to kafs/lib/voldisplay.py
index 741fd2781926ffa5a363fbbbb5ff80c05f0bc5c7..d42c30eea7af26c9ef778a45c09586a301fbbcca 100644 (file)
@@ -21,11 +21,11 @@ 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.lib.output import *
-import afs.lib.addrcache as addrcache
-import afs.lib.partition as partition
-from afs.lib.time import *
-import kafs
+from kafs.lib.output import *
+import kafs.lib.addrcache as addrcache
+import kafs.lib.partition as partition
+from kafs.lib.time import *
+import kafs.rpc as rpc
 
 statistics_time_ranges = [
     "0-60 sec ",
@@ -59,9 +59,9 @@ def vol_state(vol):
     return s
 
 def vol_status(vol):
-    if vol.status == kafs.VOK:
+    if vol.status == rpc.VOK:
         return "OK"
-    if vol.status == kafs.VBUSY:
+    if vol.status == rpc.VBUSY:
         return "BUSY"
     return "UNATTACHABLE"
 
@@ -86,9 +86,9 @@ def display_vldb_site_list(params, vldb, indent=""):
         part = partition.id2part(vldb.serverPartition[i])
 
         flags = vldb.serverFlags[i]
-        if flags & kafs.VLSF_ROVOL:
+        if flags & rpc.VLSF_ROVOL:
             ptype = "RO"
-        elif flags & kafs.VLSF_RWVOL:
+        elif flags & rpc.VLSF_RWVOL:
             ptype = "RW"
         else:
             ptype = "Back"
@@ -96,21 +96,21 @@ def display_vldb_site_list(params, vldb, indent=""):
         outputf("{:s}   server {:s} partition {:s} {:s} Site\n",
                 indent, addr, part, ptype)
 
-    if vldb.flags & (kafs.VLOP_MOVE |
-                     kafs.VLOP_RELEASE |
-                     kafs.VLOP_BACKUP |
-                     kafs.VLOP_DELETE |
-                     kafs.VLOP_DUMP):
+    if vldb.flags & (rpc.VLOP_MOVE |
+                     rpc.VLOP_RELEASE |
+                     rpc.VLOP_BACKUP |
+                     rpc.VLOP_DELETE |
+                     rpc.VLOP_DUMP):
         output(indent, "Volume is currently LOCKED")
-        if vldb.flags & kafs.VLOP_MOVE:
+        if vldb.flags & rpc.VLOP_MOVE:
             output(indent, "Volume is locked for a move operation")
-        if vldb.flags & kafs.VLOP_RELEASE:
+        if vldb.flags & rpc.VLOP_RELEASE:
             output(indent, "Volume is locked for a release operation")
-        if vldb.flags & kafs.VLOP_BACKUP:
+        if vldb.flags & rpc.VLOP_BACKUP:
             output(indent, "Volume is locked for a backup operation")
-        if vldb.flags & kafs.VLOP_DELETE:
+        if vldb.flags & rpc.VLOP_DELETE:
             output(indent, "Volume is locked for a delete/misc operation")
-        if vldb.flags & kafs.VLOP_DUMP:
+        if vldb.flags & rpc.VLOP_DUMP:
             output(indent, "Volume is locked for a dump/restore operation")
 
 ###############################################################################
similarity index 92%
rename from suite/lib/volserver.py
rename to kafs/lib/volserver.py
index 6c0559fcdda56ef23fd8adf3e2ae057e4095f439..d3671f2a0e12c4c75c1a84ee36353b005c2264fd 100644 (file)
@@ -21,9 +21,8 @@ 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 import exception
-from afs.lib.output import *
-from afs.lib.server import server
+from kafs.lib.output import *
+from kafs.lib.server import server
 
 class volserver(server):
     """Represents an AFS Volume server.  We hold the server address here."""
similarity index 89%
rename from suite/main.py
rename to kafs/main.py
index c6fe79fed68535064770f4ca35f8c0cccac15532..a4903264a34d346706a41d7157b369106131b67a 100644 (file)
@@ -27,9 +27,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
 import sys, os, traceback
 
-import afs.commands
-from afs.lib.output import *
-from exception import AFSArgumentError, AFSHelpFlag
+import kafs.commands
+from kafs.lib.output import *
+from kafs.exception import AFSArgumentError, AFSHelpFlag
 
 ###############################################################################
 #
@@ -44,7 +44,7 @@ def _main():
     prog = os.path.basename(sys.argv[0])
     set_program_name(prog)
 
-    cmdsets = afs.commands.get_command_sets()
+    cmdsets = kafs.commands.get_command_sets()
     #print("CMDSETS:", cmdsets)
 
     if prog == "afs":
@@ -68,7 +68,7 @@ def _main():
         raise RuntimeError("Unsupported command set '" + cmdset + "'")
 
     if cmd in ['-v', '--version', 'version']:
-        from afs.version import version
+        from kafs.version import version
         print('AFS Toolkit %s' % version)
         print('Python version %s' % sys.version)
         sys.exit(0)
@@ -78,7 +78,7 @@ def _main():
         sys.exit(0)
 
     # Import the command set
-    cmdsetmod = afs.commands.import_command_set(cmdset)
+    cmdsetmod = kafs.commands.import_command_set(cmdset)
     commands = cmdsetmod.get_command_list()
     commands.append("help")
     commands.append("apropos")
@@ -104,9 +104,9 @@ def _main():
         sys.argv[0] += ' {:s}'.format(cmd)
 
     if cmd == "help":
-        command = __import__("afs.help", globals(), locals(), ['*'])
+        command = __import__("kafs.help", globals(), locals(), ['*'])
     elif cmd == "apropos":
-        command = __import__("afs.apropos", globals(), locals(), ['*'])
+        command = __import__("kafs.apropos", globals(), locals(), ['*'])
     else:
         command = cmdsetmod.get_command(cmd)
         # If it's an alias, then switch to the real module
@@ -126,7 +126,7 @@ def _main():
 
     # Parse the parameters
     try:
-        params = afs.argparse.parse_arguments(sys.argv[1:],
+        params = kafs.argparse.parse_arguments(sys.argv[1:],
                                               command.command_arguments,
                                               argument_size_limits,
                                               cant_combine_arguments)
@@ -134,13 +134,13 @@ def _main():
         print(prog + ":", e, file=sys.stderr)
         sys.exit(2)
     except AFSHelpFlag:
-        helper = __import__("afs.help", globals(), locals(), ['*'])
+        helper = __import__("kafs.help", globals(), locals(), ['*'])
         helper.helpflag(prog, cmdsetmod, cmd, command)
         sys.exit(0)
 
     # Stick in the default cell if there isn't one
     if "cell" not in params:
-        from afs.lib.cell import cell
+        from kafs.lib.cell import cell
         params["cell"] = cell()
 
     params["_prog"] = prog
@@ -149,7 +149,7 @@ def _main():
 
     # These modules are only used from this point onwards and do not
     # need to be imported earlier
-    from afs.exception import AFSException
+    from kafs.exception import AFSException
 
     try:
         set_debugging_level(int(os.environ.get('AFS_DEBUG_LEVEL', 0)))
similarity index 100%
rename from py_passwd.c
rename to kafs/py_passwd.c
similarity index 100%
rename from py_rxconn.c
rename to kafs/py_rxconn.c
similarity index 99%
rename from py_rxgen.c
rename to kafs/py_rxgen.c
index 85ed6594c8dc119ec91373dba7bed39579c84f86..aecb8308667e95661890a93ef4fe532bfbb7ad42 100644 (file)
@@ -13,7 +13,7 @@
 #include "structmember.h"
 #include <arpa/inet.h>
 #include "py_rxgen.h"
-#include "afs_py.h"
+#include "rxgen_afs_py.h"
 #include "rxgen.h"
 
 #define debug(fmt, ...) do { if (0) printf(fmt, ## __VA_ARGS__); } while (0)
similarity index 100%
rename from py_rxgen.h
rename to kafs/py_rxgen.h
similarity index 99%
rename from py_rxsplit.c
rename to kafs/py_rxsplit.c
index ddfe85fd27794f62193f662f9e45f2ed62d76843..ef225e11d4badb939f07f16d7fe196cc1053a427 100644 (file)
@@ -15,7 +15,7 @@
 #include <arpa/inet.h>
 #include <assert.h>
 #include "py_rxgen.h"
-#include "afs_py.h"
+#include "rxgen_afs_py.h"
 #include "rxgen.h"
 
 #define debug(fmt, ...) do { if (0) printf(fmt, ## __VA_ARGS__); } while (0)
diff --git a/kafs/rpc-api/__init__.py b/kafs/rpc-api/__init__.py
new file mode 100644 (file)
index 0000000..2bdc2f3
--- /dev/null
@@ -0,0 +1,3 @@
+from rpc import *
+
+__all__ = ["rpc"]
similarity index 100%
rename from rpc-api/afsuuid.h
rename to kafs/rpc-api/afsuuid.h
similarity index 100%
rename from rpc-api/bos.xg
rename to kafs/rpc-api/bos.xg
similarity index 100%
rename from rpc-api/cb.xg
rename to kafs/rpc-api/cb.xg
similarity index 100%
rename from rpc-api/common.h
rename to kafs/rpc-api/common.h
similarity index 100%
rename from rpc-api/fs.xg
rename to kafs/rpc-api/fs.xg
similarity index 100%
rename from rpc-api/ka.xg
rename to kafs/rpc-api/ka.xg
similarity index 100%
rename from rpc-api/pts.xg
rename to kafs/rpc-api/pts.xg
similarity index 100%
rename from rpc-api/rxgen.xg
rename to kafs/rpc-api/rxgen.xg
similarity index 100%
rename from rpc-api/rxkad.xg
rename to kafs/rpc-api/rxkad.xg
similarity index 100%
rename from rpc-api/ubik.xg
rename to kafs/rpc-api/ubik.xg
similarity index 100%
rename from rpc-api/vldb.xg
rename to kafs/rpc-api/vldb.xg
similarity index 100%
rename from rxgen.h
rename to kafs/rxgen.h
index 0c6da824c48907dcffb0658a1b4dbf201efd5651..1bb071bde91a7023ec37c6cd99bcccbd8d378db9 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from rxgen_bits import *
+from rxgen.rxgen_bits import *
 
 ###############################################################################
 #
index c3a14dc08280c4ea4c8b73e9d40e8f91ac247f83..b386bc9710ba8248e159aaa753444553071ad89e 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from rxgen_bits import *
+from rxgen.rxgen_bits import *
 
 ###############################################################################
 #
index d2277cb3d2349ed464d025293d2fff2968bf4566..aa669b1acdc1dbe40e7d3755a9136dca5615c2ce 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from rxgen_bits import *
+from rxgen.rxgen_bits import *
 
 ###############################################################################
 #
@@ -87,7 +87,7 @@ def emit_py_module(o):
 
     o.pysrc("static PyModuleDef kafs_module = {\n")
     o.pysrc("\t.m_base = PyModuleDef_HEAD_INIT,\n")
-    o.pysrc("\t.m_name = \"kafs\",\n")
+    o.pysrc("\t.m_name = \"rpc\",\n")
     o.pysrc("\t.m_doc = \"AFS stuff.\",\n")
     o.pysrc("\t.m_size = -1,\n")
     o.pysrc("\t.m_methods = module_methods,\n")
@@ -133,7 +133,7 @@ def emit_py_module(o):
 
     # Emit a base remote abort class that all others can be subclassed off
     o.pysrc("\n")
-    o.pysrc("\tkafs_remote_abort = PyErr_NewException(\"kafs.RemoteAbort\", NULL, NULL);\n")
+    o.pysrc("\tkafs_remote_abort = PyErr_NewException(\"rpc.RemoteAbort\", NULL, NULL);\n")
     o.pysrc("\tif (!kafs_remote_abort)\n")
     o.pysrc("\t\treturn NULL;\n")
     o.pysrc("\tPy_INCREF(kafs_remote_abort);\n")
index e5dc38033cc015dccc8c532391fbe4c5e8f96df7..61a7244e130dcb18d48e51bc96dd77dfcf295a07 100644 (file)
@@ -21,7 +21,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from rxgen_bits import *
+from rxgen.rxgen_bits import *
 
 class decode_phase:
     def __init__(self, form="flat", size=0, xdr_size=0, name=None):
index b3ba14274c8a4c350d082c441bf3b8877bd71a1c..e57c66e8fe6f2f50f63b5b344d7738004c16d11c 100644 (file)
@@ -19,7 +19,7 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 """
 
-from rxgen_bits import *
+from rxgen.rxgen_bits import *
 
 ###############################################################################
 #
index 277fdc43d2476c45203b6f333a319ea6cb05d596..96065c945c49b56f6906b56d54c674324182ccfc 100755 (executable)
@@ -37,12 +37,12 @@ import sys
 import keyword
 import time
 import os
-from rxgen_bits import *
-from emit_c_struct import *
-from emit_c_sync_funcs import *
-from emit_py_types import *
-from emit_py_sync_funcs import *
-from emit_py_module import *
+from rxgen.rxgen_bits import *
+from rxgen.emit_c_struct import *
+from rxgen.emit_c_sync_funcs import *
+from rxgen.emit_py_types import *
+from rxgen.emit_py_sync_funcs import *
+from rxgen.emit_py_module import *
 
 xdr = None              # Current context
 
@@ -614,7 +614,7 @@ def parse(infile, debug=False):
     xdr.source = infile
     xdr.lineno = 0
 
-    f = open(infile)
+    f = open(infile, encoding="utf-8")
     data = f.read()
     f.close()
 
@@ -633,25 +633,21 @@ def parse(infile, debug=False):
 #
 # Section: main
 #
-if __name__ == "__main__":
-    if len(sys.argv) < 2:
-        print("Usage: {:s} <filename>*".format(sys.argv[0]))
-        sys.exit(1)
-
-    for f in sys.argv[1:]:
+def run(files, out_file_prefix):
+    for f in files:
         if not parse(f):
             break
 
     xdr.finished_parsing()
 
-    o = file_generator(xdr)
+    o = file_generator(xdr, out_file_prefix)
     o.rxhdr("/* AUTOGENERATED */\n")
     #o.rxhdr("#define _XOPEN_SOURCE\n";
     o.rxhdr("#include <stdint.h>\n")
     o.rxhdr("#include \"rxgen.h\"\n")
 
     o.rxsrc("/* AUTOGENERATED */\n")
-    o.rxsrc("#include \"afs_xg.h\"\n")
+    o.rxsrc("#include \"rxgen_afs_xg.h\"\n")
     o.rxsrc("#include <stdio.h>\n")
     o.rxsrc("#include <stdlib.h>\n")
     o.rxsrc("#include <string.h>\n")
@@ -664,13 +660,13 @@ if __name__ == "__main__":
 
     o.pyhdr("/* AUTOGENERATED */\n")
     o.pyhdr("#include <Python.h>\n")
-    o.pyhdr("#include \"afs_xg.h\"\n")
+    o.pyhdr("#include \"rxgen_afs_xg.h\"\n")
     o.pyhdr("#include \"py_rxgen.h\"\n")
 
     o.pysrc("/* AUTOGENERATED */\n")
     o.pysrc("#include <Python.h>\n")
     o.pysrc("#include \"structmember.h\"\n")
-    o.pysrc("#include \"afs_py.h\"\n")
+    o.pysrc("#include \"rxgen_afs_py.h\"\n")
     o.pysrc("#include <arpa/inet.h>\n")
     o.pysrc("\n")
 
@@ -742,3 +738,13 @@ if __name__ == "__main__":
         emit_py_func_simple_sync_call(o, f)
 
     emit_py_module(o);
+
+#
+# Drive the program if executed as a standalone process
+#
+if __name__ == "__main__":
+    if len(sys.argv) < 2:
+        print("Usage: {:s} <filename>*".format(sys.argv[0]))
+        sys.exit(1)
+
+    run(sys.argv[1:], "")
index 6074c2ca118ffb6ccc839d0d4a2fd3575a66604d..9e0f548553bb4788b5ec54b0a776d440f4236c23 100644 (file)
@@ -516,12 +516,12 @@ class xdr_proc(token_base):
 ###############################################################################
 class file_generator:
     """File generator class"""
-    def __init__(self, xdr):
+    def __init__(self, xdr, prefix):
         self.xdr = xdr
-        self._rxhdr = open("afs_xg.h", "w", encoding="utf-8")
-        self._rxsrc = open("afs_xg.c", "w", encoding="utf-8")
-        self._pyhdr = open("afs_py.h", "w", encoding="utf-8")
-        self._pysrc = open("afs_py.c", "w", encoding="utf-8")
+        self._rxhdr = open(prefix + "afs_xg.h", "w", encoding="utf-8")
+        self._rxsrc = open(prefix + "afs_xg.c", "w", encoding="utf-8")
+        self._pyhdr = open(prefix + "afs_py.h", "w", encoding="utf-8")
+        self._pysrc = open(prefix + "afs_py.c", "w", encoding="utf-8")
 
     def rxhdr(self, *va):
         for i in va:
index da52937c022d4b0523252d7ad581e9870ec50a6d..e2439be72b6474adb9b60d75b3a6ace397b7e916 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1,31 +1,73 @@
 from distutils.core import setup, Extension
+from distutils.command.build_py import build_py as _build_py
+import os
+from glob import glob
+import rxgen.rxgen as rxgen
 
 # Example that has an rpcgen implementation that is run from setup.py
 #
 # http://git.linux-nfs.org/?p=iisaman/pynfs.git;a=tree;h=14b3085dcce30d941a7839241779639b80e6298b;hb=14b3085dcce30d941a7839241779639b80e6298b
 
+class build_py(_build_py):
+    """Specialized Python source builder that scans for .xg files"""
+    def build_packages(self):
+        # A copy from _build_py, with a call to expand_xdr added
+        for package in self.packages:
+            print("PKG", package)
+            package_dir = self.get_package_dir(package)
+            self.check_package(package, package_dir)
+            if package == "kafs":
+                self.expand_xdr(os.path.join(package_dir, "rpc-api"),
+                                package_dir)
+            modules = self.find_package_modules(package, package_dir)
+            for (package_, module, module_file) in modules:
+                assert package == package_
+                self.build_module(module, module_file, package)
+
+    def expand_xdr(self, src, dst):
+        print("SRC", os.getcwd())
+        xdr_files = glob(os.path.join(src, "*.h")) + glob(os.path.join(src, "*.xg"))
+        print("Run rxgen", " ".join(xdr_files))
+        assert(xdr_files)
+        rxgen.run(xdr_files, os.path.join(dst, "rxgen_"))
+
 setup(name = "kafs",
       version = "0.1",
+      packages = [ "kafs",
+                   "kafs.lib",
+                   "kafs.commands",
+                   "kafs.commands.bos",
+                   "kafs.commands.pts",
+                   "kafs.commands.vos",
+               ],
+      scripts = [ "afs" ],
       description = "AFS filesystem management scripting and commands",
+      cmdclass = { "build_py": build_py },
+      ext_modules = [Extension("kafs.rpc",
+                               sources = [ "kafs/kafs.c",
+                                           "kafs/rxgen_afs_xg.c",
+                                           "kafs/rxgen_afs_py.c",
+                                           "kafs/py_passwd.c",
+                                           "kafs/py_rxgen.c",
+                                           "kafs/py_rxconn.c",
+                                           "kafs/py_rxsplit.c",
+                                           "kafs/af_rxrpc.c"
+                                       ],
+                               extra_compile_args = [
+                                   "-O0",
+                                   "-Wp,-U_FORTIFY_SOURCE",
+                               ],
+                               include_dirs = [
+                                   "."
+                               ],
+                               libraries = [
+                                   "k5crypto",
+                                   "krb5"
+                               ]
+                           )],
+
       author = "David Howells",
       author_email = "dhowells@redhat.com",
       license = "GPLv2",
-      ext_modules = [Extension("kafs",
-                               sources = [ "afs_xg.c",
-                                           "kafs.c",
-                                           "afs_py.c",
-                                           "py_passwd.c",
-                                           "py_rxgen.c",
-                                           "py_rxconn.c",
-                                           "py_rxsplit.c",
-                                           "af_rxrpc.c"
-                                       ],
-                             extra_compile_args = [
-                                 "-O0",
-                                 "-Wp,-U_FORTIFY_SOURCE",
-                             ],
-                             libraries = [
-                                 "k5crypto",
-                                 "krb5"
-                             ]
-                         )])
+      url = "http://git.infradead.org/users/dhowells/kafs-utils.git",
+      )
index 3e32fd2fc9a0753012221f6ee0591cdef029be4a..1556bffe99e00e6fcde0142ef97a60354e521b37 100755 (executable)
@@ -14,7 +14,7 @@
 import sys;
 import getopt;
 import dns.resolver;
-import kafs;
+import kafs.rpc as rpc;
 
 cell = "grand.central.org";
 volumes = [ "root.cell" ];
@@ -58,10 +58,10 @@ print("-- Probe for live VLDB servers --");
 for vlserver in vladdrs:
     print("Trying", vlserver);
 
-    z_conn = kafs.rx_new_connection(vlserver, kafs.VL_PORT, kafs.VL_SERVICE);
+    z_conn = rpc.rx_new_connection(vlserver, rpc.VL_PORT, rpc.VL_SERVICE);
 
     try:
-        ret = kafs.VL_Probe(z_conn);
+        ret = rpc.VL_Probe(z_conn);
         break;
     except ConnectionRefusedError:
         pass;
@@ -73,7 +73,7 @@ if not z_conn:
 # Look up each of the volumes in the list
 print("-- Look up the named volumes --");
 for vol in volumes:
-    ret = kafs.VL_GetEntryByName(z_conn, vol);
+    ret = rpc.VL_GetEntryByName(z_conn, vol);
     vldb = ret.entry;
 
     servers = set();
@@ -89,10 +89,10 @@ for vol in volumes:
 
     # Pick an arbitrary server serving that volume and find out what volumes
     # that server serves
-    attributes = kafs.VldbListByAttributes();
-    attributes.Mask = kafs.VLLIST_SERVER;
+    attributes = rpc.VldbListByAttributes();
+    attributes.Mask = rpc.VLLIST_SERVER;
     attributes.server = servers.pop();
-    ret = kafs.VL_ListAttributes(z_conn, attributes)
+    ret = rpc.VL_ListAttributes(z_conn, attributes)
     blkentries = ret.blkentries;
 
     for i in blkentries: