Python API: samAdmin v8_1_5
samAdmin.modifyK5Login()

Just having some fun...
This is the python interface to the command 'samadmin modify k5login'.
Command Description:

This command will modify the contents of the Fermilab ~sam/.k5login file,
adding and/or removing the specified principals.  Your changes will be committed
in the specified cvs repository, and the file will be copied to all accounts listed
in the 'k5loginSubscription' file.
        

      You must be logged in as user 'sam' on one of the 'master' FNAL nodes in order
      to run this command.  The 'master' FNAL nodes are:
      
          ['d0mino.fnal.gov', 'd0ora1.fnal.gov', 'd0ora3.fnal.gov', 'd0ora2.fnal.gov', 'bagend.fnal.gov']

      NOTE ALSO: problems have been seen when using WRQ Reflections as your
      means of logging in as user 'sam' on a 'master' node, probably due to
      not coming in via FNAL kerberized ssh.  If you use WRQ Reflections, a
      suitable workaround is:
         1) log in normally (as yourself) to a kerberized FNAL node.
         2) kinit -F <username>/root            # obtain credentials
         3) ssh <masterNode>.fnal.gov -l sam    # make sure this is the 
                                    #  FNAL kerberized ssh
                                    # (usually /usr/krb5/bin/ssh)
      and proceed from there.
          
      

Example:
samadmin modify k5login --add=newShifter/root@FNAL.GOV,sam/d0/new.sam.node@FNAL.GOV \
                        --remove=oldShifter/root@FNAL.GOV,sam/d0/old.sam.node@FNAL.GOV


Python Usage:
	from SamAdmin import samAdmin
	result = samAdmin.modifyK5Login(...)

Return value: 

Arguments are passed as keyword-value pairs, as in:
	 myfunc(arg1='myarg', arg2='anotherarg', d=1)

Argument Keyword Description:
	(*) indicates that this keyword is required
	>>> indicates that either the API object or the CLI equivalent (<<<) is required
====================================================================================================================================
    KEYWORD                    DATA TYPE            DESCRIPTION
------------------------------------------------------------------------------------------------------------------------------------
    add                        SamStringList        comma-separated list of entries to be added
    c                          SamBoolean           automatically close all servants after each method call
    corbaCallTimeout           int                  time in seconds for CORBA method calls to return before timing out (default: 0; zero implies no timeout)
    cvsroot                    string               name of alternate CVS repository (default: "cvsuser@cdcvs.fnal.gov:/cvs/cd")
    d                          SamBoolean           debug mode
    remove                     SamStringList        comma-separated list of entries to be removed
    retryInterval              int                  retry interval base in seconds; will multiply this base times retryCount (default: 5)
    retryJitter                int                  retry jitter, random jitter added to base retry interval times retryCount (default: 5)
    retryMaxCount              int                  number of times to retry CORBA calls for retriable exceptions (default: 25; zero implies no retries)
    s                          SamBoolean           retrySilently mode (do not issue messages to stderr on proxy retries)
    t                          SamBoolean           time-it mode (print additional info on timings)
    v                          SamBoolean           verbose mode
====================================================================================================================================

Must have at least one of:	
	(add, remove) 

Environment Defaults:
	c = os.environ['SAM_PYAPI_AUTO_CLOSE_SERVANTS']
	corbaCallTimeout = os.environ['SAM_PYAPI_CORBA_CALL_TIMEOUT']
	retryInterval = os.environ['SAM_PYAPI_RETRY_INTERVAL']
	retryJitter = os.environ['SAM_PYAPI_RETRY_JITTER']
	retryMaxCount = os.environ['SAM_PYAPI_RETRY_MAX_COUNT']
	s = os.environ['SAM_PYAPI_RETRY_SILENTLY']



See Also: