in src/ab/plugins/kerberos.py [0:0]
def kinit(principal, keytab: str = None, password: str = None, refresh_interval_in_seconds=3600):
"""
always return 0
raise CalledProcessError on error
"""
assert (keytab and not password) or (password and not keytab), 'kinit need either keytab or password'
cmd = ['kinit', principal]
input = password.encode() if password else None
if keytab:
cmd.extend(['-kt', keytab])
timer = LiveTimer(refresh_interval_in_seconds, _inner_kinit, kwargs={'cmd': cmd, 'input': input})
timer.daemon = True
timer.start()
return _inner_kinit(cmd, input)