from types import StringTypes, ListType
from optparse import OptionParser
import zlib
-import logging
+from sfa.util.sfalogging import sfa_logger,sfa_logger_goes_to_console
from sfa.trust.certificate import Keypair, Certificate
+from sfa.trust.gid import GID
from sfa.trust.credential import Credential
from sfa.util.sfaticket import SfaTicket
from sfa.util.record import SfaRecord, UserRecord, SliceRecord, NodeRecord, AuthorityRecord
-from sfa.util.namespace import get_leaf, get_authority, hrn_to_urn
+from sfa.util.xrn import Xrn, get_leaf, get_authority, hrn_to_urn
from sfa.util.xmlrpcprotocol import ServerException
import sfa.util.xmlrpcprotocol as xmlrpcprotocol
from sfa.util.config import Config
-from sfa.util.sfalogging import console_logger
-
AGGREGATE_PORT=12346
CM_PORT=12346
self.authority = None
self.options = None
self.hashrequest = False
- self.logger=console_logger
+ sfa_logger_goes_to_console()
+ self.logger=sfa_logger()
def create_cmd_parser(self, command, additional_cmdargs=None):
- cmdargs = {"list": "name",
+ cmdargs = {"list": "authority",
"show": "name",
"remove": "name",
"add": "record",
help="user name", metavar="HRN", default=None)
parser.add_option("-a", "--auth", dest="auth",
help="authority name", metavar="HRN", default=None)
- parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose", default=False,
- help="verbose mode")
+ parser.add_option("-v", "--verbose", action="count", dest="verbose", default=0,
+ help="verbose mode - cumulative")
parser.add_option("-D", "--debug",
action="store_true", dest="debug", default=False,
help="Debug (xml-rpc) protocol messages")
- parser.add_option("-p", "--protocol",
- dest="protocol", default="xmlrpc",
+ parser.add_option("-p", "--protocol", dest="protocol", default="xmlrpc",
help="RPC protocol (xmlrpc or soap)")
parser.add_option("-k", "--hashrequest",
action="store_true", dest="hashrequest", default=False,
except:
self.logger.critical("Failed to read configuration file %s"%config_file)
self.logger.info("Make sure to remove the export clauses and to add quotes")
- if not self.options.verbose:
+ if self.options.verbose==0:
self.logger.info("Re-run with -v for more details")
else:
self.logger.log_exc("Could not read config file %s"%config_file)
self.key_file = key_file
self.cert_file = cert_file
self.cert = Certificate(filename=cert_file)
- # instruct xmlrpcprotocol to redirect logs to console_logger
- self.options.client=True
# Establish connection to server(s)
self.logger.info("Contacting Registry at: %s"%reg_url)
self.registry = xmlrpcprotocol.get_server(reg_url, key_file, cert_file, self.options)
def get_key_file(self):
file = os.path.join(self.options.sfi_dir, self.user.replace(self.authority + '.', '') + ".pkey")
- #file = os.path.join(self.options.sfi_dir, get_leaf(self.user) + ".pkey")
if (os.path.isfile(file)):
return file
else:
def get_cert_file(self, key_file):
- #file = os.path.join(self.options.sfi_dir, get_leaf(self.user) + ".cert")
file = os.path.join(self.options.sfi_dir, self.user.replace(self.authority + '.', '') + ".cert")
if (os.path.isfile(file)):
return file
if (os.path.isfile(file)):
credential = Credential(filename=file)
# make sure it isnt expired
- if not credential.get_lifetime or \
- datetime.datetime.today() < credential.get_lifetime():
+ if not credential.get_expiration or \
+ datetime.datetime.today() < credential.get_expiration():
return credential
return None
def get_user_cred(self):
- #file = os.path.join(self.options.sfi_dir, get_leaf(self.user) + ".cred")
file = os.path.join(self.options.sfi_dir, self.user.replace(self.authority + '.', '') + ".cred")
return self.get_cred(file, 'user', self.user)
if not self.authority:
self.logger.critical("no authority specified. Use -a or set SF_AUTH")
sys.exit(-1)
- file = os.path.join(self.options.sfi_dir, get_leaf("authority") + ".cred")
+ file = os.path.join(self.options.sfi_dir, self.authority + ".cred")
return self.get_cred(file, 'authority', self.authority)
def get_slice_cred(self, name):
# list entires in named authority registry
def list(self, opts, args):
- user_cred = self.get_user_cred().save_to_string(save_parents=True)
+ if len(args)!= 1:
+ self.parser.print_help()
+ sys.exit(1)
hrn = args[0]
+ user_cred = self.get_user_cred().save_to_string(save_parents=True)
try:
list = self.registry.List(hrn, user_cred)
except IndexError:
# show named registry record
def show(self, opts, args):
- user_cred = self.get_user_cred().save_to_string(save_parents=True)
+ if len(args)!= 1:
+ self.parser.print_help()
+ sys.exit(1)
hrn = args[0]
+ user_cred = self.get_user_cred().save_to_string(save_parents=True)
records = self.registry.Resolve(hrn, user_cred)
records = filter_records(opts.type, records)
if not records:
# - have to first retrieve the record to be removed
def remove(self, opts, args):
auth_cred = self.get_auth_cred().save_to_string(save_parents=True)
+ if len(args)!=1:
+ self.parser.print_help()
+ sys.exit(1)
hrn = args[0]
type = opts.type
if type in ['all']:
# add named registry record
def add(self, opts, args):
auth_cred = self.get_auth_cred().save_to_string(save_parents=True)
+ if len(args)!=1:
+ self.parser.print_help()
+ sys.exit(1)
record_filepath = args[0]
rec_file = self.get_record_file(record_filepath)
record = load_record_from_file(rec_file).as_dict()
# update named registry entry
def update(self, opts, args):
user_cred = self.get_user_cred()
+ if len(args)!=1:
+ self.parser.print_help()
+ sys.exit(1)
rec_file = self.get_record_file(args[0])
record = load_record_from_file(rec_file)
if record['type'] == "user":
(options, args) = parser.parse_args()
self.options = options
- if self.options.verbose: self.logger.setLevel(logging.DEBUG)
+ self.logger.setLevelFromOptVerbose(self.options.verbose)
if options.hashrequest:
self.hashrequest = True
return -1
command = args[0]
- (cmd_opts, cmd_args) = self.create_cmd_parser(command).parse_args(args[1:])
+ self.parser = self.create_cmd_parser(command)
+ (cmd_opts, cmd_args) = self.parser.parse_args(args[1:])
self.set_servers()
- self.logger.info("Command %s" % command)
- self.logger.info("dir %s, user %s, auth %s, reg %s, sm %s" % (
- self. options.sfi_dir, self.options.user,self.options.auth,
- self.options.registry, self.options.sm))
+ self.logger.info("Command=%s" % command)
if command in ("resources"):
self.logger.debug("resources cmd_opts %s" % cmd_opts.format)
elif command in ("list", "show", "remove"):
return
if __name__ == "__main__":
- Sfi().main()
+ Sfi().main()