Merge branch 'master' of ssh://git.planet-lab.org/git/sfa
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Tue, 6 Sep 2011 20:08:58 +0000 (16:08 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Tue, 6 Sep 2011 20:08:58 +0000 (16:08 -0400)
1  2 
sfa/client/sfi.py

diff --combined sfa/client/sfi.py
@@@ -11,10 -11,12 +11,12 @@@ import socke
  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
@@@ -108,13 -110,17 +110,17 @@@ def save_record_to_file(filename, recor
      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
  
@@@ -136,6 -142,8 +142,8 @@@ class Sfi
          for opt in Sfi.required_options:
              if not hasattr(options,opt): setattr(options,opt,None)
          if not hasattr(options,'sfi_dir'): options.sfi_dir=os.path.expanduser("~/.sfi/")
+         # xxx oops, this is dangerous, sounds like ww sometimes have discrepency
+         # would be safer to remove self.sfi_dir altogether
          self.sfi_dir = options.sfi_dir
          self.options = options
          self.slicemgr = None
          
  
      def read_config(self):
-        config_file = self.options.sfi_dir + os.sep + "sfi_config"
+        config_file = os.path.join(self.options.sfi_dir,"sfi_config")
         try:
            config = Config (config_file)
         except:
          # 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)
 +        result = server.CreateSliver(*call_args)
          print result
          return result
  
              self.dispatch(command, cmd_opts, cmd_args)
          except KeyError:
              self.logger.critical ("Unknown command %s"%command)
 +            raise
              sys.exit(1)
      
          return