in force_user_mfa/ForceUserMFA.py [0:0]
def create_virtual_mfa(newUserName, newUserArn):
"""Summary
Args:
newUserName (TYPE): Description
newUserArn (TYPE): Description
Returns:
TYPE: Description
"""
print("Creating virtual MFA token")
deviceName = newUserName + '-MFA'
# Try to delete token first to avoid conflict/stale tokens
try:
deviceArn = newUserArn + '-MFA'
response = IAM_CLIENT.delete_virtual_mfa_device(
SerialNumber=deviceArn
)
except:
pass
# Try to create new token, we will try 5 times before giving up
tries = 0
while tries < 5:
try:
response = IAM_CLIENT.create_virtual_mfa_device(
VirtualMFADeviceName=deviceName
)
break
# Try one more time if fails, could be race issue with delete
except:
time.sleep(tries + 1)
response = str(sys.exc_info()[0])
if "SerialNumber" in str(response):
return response
else:
return "FailedToCreateToken"