def main(): """Main function for script execution""" arguments = docopt(__doc__) if arguments['--debug']: global DEBUG DEBUG = True debug(arguments) try: config = load_config() except Exception as exc: error("Failed to load configuration: %s" % exc) api_url = arguments['--api-url'] or config.get('api_url') or \ 'https://{fqdn}/afp-api/latest'.format(fqdn=get_default_afp_server()) username = arguments['--user'] or config.get("user") or getpass.getuser() password = '******' if arguments['--no-ask-pw'] else get_password(username) federation_client = AWSFederationClientCmd(api_url=api_url, username=username, password=password) if arguments['<accountname>']: account = arguments['<accountname>'] role = arguments['<rolename>'] or get_first_role(federation_client, account) aws_credentials = get_aws_credentials(federation_client, account, role) if arguments['--show']: print(cli.format_aws_credentials(aws_credentials)) elif arguments['--export']: if os.name == "nt": print(cli.format_aws_credentials(aws_credentials, prefix='set ')) else: print(cli.format_aws_credentials(aws_credentials, prefix='export ')) elif arguments['--write']: aws_credentials_file.write(aws_credentials) else: print("Entering AFP subshell for account {0}, role {1}.".format( account, role)) try: if os.name == "nt": start_subcmd(aws_credentials=aws_credentials, role=role, account=account) else: start_subshell(aws_credentials=aws_credentials, role=role, account=account) except Exception as exc: error("Failed to start subshell: %s" % exc) else: try: print(cli.format_account_and_role_list(federation_client.get_account_and_role_list())) except Exception as exc: error("Failed to get account list from AWS: %s" % exc)
def test_format_account_and_two_roles(self): self.assertEqual(cli.format_account_and_role_list({"testaccount2": ["testrole1", "testrole2"]}), "testaccount2 testrole1,testrole2")
def test_format_account_and_one_role(self): self.assertEqual(cli.format_account_and_role_list({"testaccount1": ["testrole1"]}), "testaccount1 testrole1")