From 7f47f741e0c1086337b3ef94d01a0028260f74ba Mon Sep 17 00:00:00 2001 From: Adrian Likins Date: Fri, 12 Oct 2007 13:29:54 -0400 Subject: add "copyfile" commandline module that knows how to get the local file, it's perms, and call the remote end correctly add copyright blurb to other modules --- func/overlord/cmd_modules/call.py | 15 +++++++ func/overlord/cmd_modules/copyfile.py | 79 +++++++++++++++++++++++++++++++++++ func/overlord/cmd_modules/show.py | 15 +++++++ 3 files changed, 109 insertions(+) create mode 100644 func/overlord/cmd_modules/copyfile.py (limited to 'func') diff --git a/func/overlord/cmd_modules/call.py b/func/overlord/cmd_modules/call.py index 0f69713..48a6598 100644 --- a/func/overlord/cmd_modules/call.py +++ b/func/overlord/cmd_modules/call.py @@ -1,5 +1,20 @@ #!/usr/bin/python +""" +call func method invoker + +Copyright 2007, Red Hat, Inc +see AUTHORS + +This software may be freely redistributed under the terms of the GNU +general public license. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +""" + + import optparse import pprint import xmlrpclib diff --git a/func/overlord/cmd_modules/copyfile.py b/func/overlord/cmd_modules/copyfile.py new file mode 100644 index 0000000..354ab8f --- /dev/null +++ b/func/overlord/cmd_modules/copyfile.py @@ -0,0 +1,79 @@ +#!/usr/bin/python + +""" +copyfile command line + +Copyright 2007, Red Hat, Inc +see AUTHORS + +This software may be freely redistributed under the terms of the GNU +general public license. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +""" + + +import optparse +import os +import pprint +import stat +import xmlrpclib + +from func.overlord import command +from func.overlord import client + +DEFAULT_PORT = 51234 + +class CopyFile(client.command.Command): + name = "copyfile" + useage = "copy a file to a client" + + + def addOptions(self): + self.parser.add_option("-f", "--file", dest="filename", + action="store") + self.parser.add_option("", "--remotepath", dest="rpath", + action="store") + self.parser.add_option("", "--force", dest="force", + action="store_true") + self.parser.add_option("-v", "--verbose", dest="verbose", + action="store_true") + self.parser.add_option("-p", "--port", dest="port") + + def handleOptions(self, options): + self.port = DEFAULT_PORT + if self.options.port: + self.port = self.options.port + + def parse(self, argv): + self.argv = argv + return command.Command.parse(self,argv) + + def do(self, args): + self.server_spec = self.parentCommand.server_spec + + client_obj = client.Client(self.server_spec, + port=self.port, + interactive=False, + verbose=self.options.verbose, + config=self.config) + + + try: + fb = open(self.options.filename, "r").read() + except IOError, e: + print "Unable to open file: %s: %s" % (self.options.filename, e) + return + + st = os.stat(self.options.filename) + mode = stat.S_IMODE(st.st_mode) + uid = st.st_uid + gid = st.st_gid + + + + results = client_obj.run("copyfile", "copyfile", [self.options.rpath, fb, + mode, uid, gid]) + diff --git a/func/overlord/cmd_modules/show.py b/func/overlord/cmd_modules/show.py index 64bf726..22bac95 100644 --- a/func/overlord/cmd_modules/show.py +++ b/func/overlord/cmd_modules/show.py @@ -1,5 +1,20 @@ #!/usr/bin/python +""" +show introspection commandline + +Copyright 2007, Red Hat, Inc +see AUTHORS + +This software may be freely redistributed under the terms of the GNU +general public license. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +""" + + import optparse import pprint import xmlrpclib -- cgit