def action_attach(args, cfg): if cfg.is_attached: print("This machine is already attached to '{}'.".format( cfg.accounts[0]["name"])) return 0 if os.getuid() != 0: raise exceptions.NonRootUserError() contract_token = args.token if not contract_token: print("No valid contract token available") return 1 try: contract.request_updated_contract(cfg, contract_token, allow_enable=args.auto_enable) except util.UrlError as exc: with util.disable_log_to_console(): logging.exception(exc.msg) print( ua_status.MESSAGE_ATTACH_FAILURE_TMPL.format(url=cfg.contract_url)) return 1 except exceptions.UserFacingError as exc: logging.warning(exc.msg) action_status(args=None, cfg=cfg) return 1 contract_name = cfg.machine_token["machineTokenInfo"]["contractInfo"][ "name"] print( ua_status.MESSAGE_ATTACH_SUCCESS_TMPL.format( contract_name=contract_name)) action_status(args=None, cfg=cfg) return 0
def action_attach(args, cfg): if cfg.is_attached: print("This machine is already attached to '%s'." % cfg.accounts[0]['name']) return 0 if os.getuid() != 0: raise exceptions.NonRootUserError() contract_client = contract.UAContractClient(cfg) if not args.token: with util.disable_log_to_console(): bound_macaroon_bytes = sso.discharge_root_macaroon(contract_client) if bound_macaroon_bytes is None: print('Could not attach machine. Unable to obtain authenticated' ' user token') return 1 bound_macaroon = bound_macaroon_bytes.decode('utf-8') cfg.write_cache('bound-macaroon', bound_macaroon) try: contract_client.request_accounts(macaroon_token=bound_macaroon) contract_token = contract.get_contract_token_for_account( contract_client, bound_macaroon, cfg.accounts[0]['id']) except (sso.SSOAuthError, util.UrlError) as e: logging.error(str(e)) print('Could not attach machine. Unable to obtain authenticated' ' contract token') return 1 else: contract_token = args.token if not contract_token: print('No valid contract token available') return 1 if not contract.request_updated_contract( cfg, contract_token, allow_enable=args.auto_enable): print( ua_status.MESSAGE_ATTACH_FAILURE_TMPL.format(url=cfg.contract_url)) return 1 contract_name = ( cfg.machine_token['machineTokenInfo']['contractInfo']['name']) print( ua_status.MESSAGE_ATTACH_SUCCESS_TMPL.format( contract_name=contract_name)) action_status(args=None, cfg=cfg) return 0
def new_f(*args, **kwargs): if os.getuid() != 0: raise exceptions.NonRootUserError() return f(*args, **kwargs)
def wrapper(args, cfg): if os.getuid() != 0: raise exceptions.NonRootUserError() if not cfg.is_attached: raise exceptions.UnattachedError() return func(args, cfg)