import random
import datetime
import zlib
+import codecs
from lxml import etree
from StringIO import StringIO
from types import StringTypes, ListType
from optparse import OptionParser
+
from sfa.util.sfalogging import sfi_logger
from sfa.trust.certificate import Keypair, Certificate
from sfa.trust.gid import GID
else:
record = SfaRecord(dict=record)
str = record.save_to_string()
- file(filename, "w").write(str)
+ f=codecs.open(filename, encoding='utf-8',mode="w")
+ f.write(str)
+ f.close()
return
# load methods
def load_record_from_file(filename):
- str = file(filename, "r").read()
+ f=codecs.open(filename, encoding="utf-8", mode="r")
+ str = f.read()
+ f.close()
record = SfaRecord(string=str)
return record
help="optional component information", default=None)
- if command in ("resources", "show", "list", "create_gid"):
+ # 'create' does return the new rspec, makes sense to save that too
+ if command in ("resources", "show", "list", "create_gid", 'create'):
parser.add_option("-o", "--output", dest="file",
help="output XML to file", metavar="FILE", default=None)
# check local cache first
cache = None
version = None
- cache_file = self.sfi_dir + os.path.sep + 'sfi_cache.dat'
+ cache_file = os.path.join(self.options.sfi_dir,'sfi_cache.dat')
cache_key = server.url + "-version"
try:
cache = Cache(cache_file)
hrn = args[0]
user_cred = self.get_user_cred().save_to_string(save_parents=True)
records = self.registry.Resolve(hrn, user_cred)
+ print records
records = filter_records(opts.type, records)
if not records:
print "No record of type", opts.type
user_urns = [hrn_to_urn(hrn, 'user') for hrn in user_hrns]
user_records = self.registry.Resolve(user_urns, [user_cred.save_to_string(save_parents=True)])
for user_record in user_records:
+ if user_record['type'] != 'user':
+ continue
#user = {'urn': user_cred.get_gid_caller().get_urn(),'keys': []}
user = {'urn': user_cred.get_gid_caller().get_urn(), #
'keys': user_record['keys'],
if self.server_supports_call_id_arg(server):
call_args.append(unique_call_id())
- result = server.CreateSliver(*call_args)
- print result
+ result = server.CreateSliver(*call_args)
+ if opts.file is None:
+ print result
+ else:
+ save_rspec_to_file (result, opts.file)
return result
# get a ticket for the specified slice
self.dispatch(command, cmd_opts, cmd_args)
except KeyError:
self.logger.critical ("Unknown command %s"%command)
+ raise
sys.exit(1)
return