Skip to content

Commit

Permalink
Merge pull request #26 from ksauzz/feature/get-or-init
Browse files Browse the repository at this point in the history
add KrbTicket.get_or_init
  • Loading branch information
ksauzz authored Dec 10, 2019
2 parents ae4248e + 447c7c8 commit 3f7e1b5
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
8 changes: 8 additions & 0 deletions krbticket/ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,14 @@ def init_by_config(config):
KrbCommand.kinit(config)
return KrbTicket.get_by_config(config)

@staticmethod
def get_or_init(principal, keytab=None, **kwargs):
config = KrbConfig(principal=principal, keytab=keytab, **kwargs)
try:
return KrbTicket.get_by_config(config)
except NoCredentialFound:
return KrbTicket.init_by_config(config)

@staticmethod
def get(principal, keytab=None, **kwargs):
config = KrbConfig(principal=principal, keytab=keytab, **kwargs)
Expand Down
7 changes: 7 additions & 0 deletions tests/test_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ def test_init(config):
KrbTicket.init(DEFAULT_PRINCIPAL, DEFAULT_KEYTAB)


def test_get_or_init(config):
KrbCommand.kdestroy(config)
ticket0 = KrbTicket.get_or_init(DEFAULT_PRINCIPAL, DEFAULT_KEYTAB)
ticket1 = KrbTicket.get_or_init(DEFAULT_PRINCIPAL, DEFAULT_KEYTAB)
assert_ticket(ticket0, ticket1)


def test_init_with_keytab_env(config):
KrbCommand.kdestroy(config)
os.environ['KRB5_KTNAME'] = config.keytab
Expand Down

0 comments on commit 3f7e1b5

Please sign in to comment.