X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Fclient%2Fsfi.py;h=6fd0a70c055bb7ea0f9c0970ddeaee8c7e9e7f6a;hb=5bb8f044e0085d73ec79abb1822421db3fc50101;hp=cfa1cefc4831136621a00c2990245f2b4073c2a7;hpb=aaa75047e01da147ceb5c98e128571356f4f9ed3;p=sfa.git diff --git a/sfa/client/sfi.py b/sfa/client/sfi.py index cfa1cefc..6fd0a70c 100755 --- a/sfa/client/sfi.py +++ b/sfa/client/sfi.py @@ -12,6 +12,7 @@ import random import datetime import zlib import codecs +import pickle from lxml import etree from StringIO import StringIO from types import StringTypes, ListType @@ -81,6 +82,17 @@ def filter_records(type, records): # save methods +def save_variable_to_file(var, filename, format="text"): + f = open(filename, "w") + if format == "text": + f.write(str(var)) + elif format == "pickled": + f.write(pickle.dumps(var)) + else: + # this should never happen + print "unknown output format", format + + def save_rspec_to_file(rspec, filename): if not filename.endswith(".rspec"): filename = filename + ".rspec" @@ -258,6 +270,13 @@ class Sfi: help="output file format ([xml]|xmllist|hrnlist)", default="xml", choices=("xml", "xmllist", "hrnlist")) + if command in ("status"): + parser.add_option("-o", "--output", dest="file", + help="output dictionary to file", metavar="FILE", default=None) + parser.add_option("-F", "--fileformat", dest="fileformat", type="choice", + help="output file format ([text]|pickled)", default="text", + choices=("text","pickled")) + if command in ("delegate"): parser.add_option("-u", "--user", action="store_true", dest="delegate_user", default=False, @@ -1141,7 +1160,10 @@ class Sfi: call_args = [slice_urn, creds] if self.server_supports_call_id_arg(server): call_args.append(unique_call_id()) - print server.SliverStatus(*call_args) + result = server.SliverStatus(*call_args) + print result + if opts.file: + save_variable_to_file(result, opts.file, opts.fileformat) def shutdown(self, opts, args):