def __init__(self, ip=None): self.base_ep = None self.admin_ep = None self.security_ep = None self.user_ep = None self.security_ep = None self.ip = ip self.mode = InterpreterMode.BASE # If you add a new endpoint, create a JSON file for it, then add it here self.admin_ep = Endpoint.factory(Endpoint.EpType.ADMIN, self.ip) self.user_ep = Endpoint.factory(Endpoint.EpType.USER, self.ip) self.security_ep = Endpoint.factory(Endpoint.EpType.SECURITY, self.ip) self.base_words = ['admin', 'user', 'security', 'login', 'exit'] base_completer = WordCompleter(words=self.base_words, ignore_case=True) admin_completer = WordCompleter(words=self.admin_ep.commands.keys(), sentence=True) user_completer = WordCompleter(words=self.user_ep.commands.keys(), sentence=True) security_completer = WordCompleter( words=self.security_ep.commands.keys(), sentence=True) self.meta_completer = MetaCompleter() self.meta_completer.set_base_completer(base_completer) self.meta_completer.set_admin_completer(admin_completer) self.meta_completer.set_user_completer(user_completer) self.meta_completer.set_security_completer(security_completer) self.meta_completer.set_mode(InterpreterMode.BASE)
with open('usertoken.json', 'r') as tokenfile: token = json.load(tokenfile) if token is None: print( 'You must log in before using this command. Use sso_login.py to get a user token and save it in usertoken.json' ) sys.exit(1) # Instantiate the appropriate endpoint: # virtue --> user_api # virtue-admin --> admin_api # virtue-security --> security_api procname = os.path.basename(sys.argv[0]) ep = None if procname == 'virtue': ep = Endpoint.factory(Endpoint.EpType.USER, ip) elif procname == 'virtue-admin': ep = Endpoint.factory(Endpoint.EpType.ADMIN, ip) elif procname == 'virtue-security': ep = Endpoint.factory(Endpoint.EpType.SECURITY, ip) elif procname == 'virtue-cli.py': print( 'Please run this script through a symlink to virtue, virtue-admin, or virtue-security' ) sys.exit(1) else: print('Unknown endpoint') sys.exit(1) # Use the provided token to authenticate to the API endpoint ep.set_token(token)