def process(self, opt, arg, cli): path = arg[1] # FIXME duplicate code acl_info = arg[2].split(':') if len(acl_info) == 4: scheme, username, password, perm = acl_info id = f'{username}:{password}' elif len(acl_info) == 3: scheme, id, perm = acl_info scheme = scheme.lower() perm = perm.lower() if opt.unencrypted and scheme == 'digest': username, password = id.split(":") id = make_digest_acl_credential(username, password) try: perm_kw = { 'all': perm == 'all', 'read': 'r' in perm, 'write': 'w' in perm, 'create': 'c' in perm, 'delete': 'd' in perm, 'admin': 'a' in perm, } cli.client.set_acls(path, [make_acl(scheme, id, **perm_kw)], opt.version) except NoAuthError as e: raise ValueError(f"Authentication is not valid, '{path}'") except NoNodeError as e: raise ValueError(f"Path '{path}' not exists") except Exception as e: import traceback raise ValueError(f"Illegal arguments! {traceback.format_exc()}") return PlainViewModel(content='setAcl successfully', color='info')
def process(self, opt, arg, cli): path = arg[1] try: data, stat = cli.client.get(path, default_watch if opt.watch else None) return PlainViewModel(content=get_stat_content(stat, data), color='info') except NoNodeError as e: raise ValueError(f"Path '{path}' not exists")
def process(self, opt, arg, cli): try: cli.client.set(arg[1], arg[2].encode(), version=opt.version) return PlainViewModel(content=f'[green]set data ok[/green]') except NoNodeError as e: raise ValueError(f"The path '{arg[1]}' not exists") except BadVersionError as e: raise ValueError( f"The specified version '{opt.version}' does not match")
def process(self, opt, arg, cli): if len(arg) >= 3: credential = f'{arg[1]}:{arg[2]}' else: credential = arg[1] try: cli.client.add_auth('digest', credential) except Exception as e: raise ValueError(f"addauth occur error, {e}") else: return PlainViewModel(content='addauth successfully', color='info')
def process(self, opt, arg, cli): try: cli.client.delete(arg[1], version=opt.version, recursive=opt.recursion) return PlainViewModel( content=f'[green]successfully deleted[/green]') except NoNodeError as e: raise ValueError(f"The path '{arg[1]}' not exists") except NotEmptyError as e: raise ValueError("Can't delete un-leaf node without '-R' option")
def process(self, opt, arg, cli): arg_len = len(arg) if arg_len == 1: # 查询所有的alias content = self._query_all_alias(cli.config) elif arg_len == 2: # 查询指定alias content = self._query_specify_alias(cli.config, arg[1]) else: # 设置alias content = self._set_specify_alias(cli.config, arg) return PlainViewModel(content=content)
def process(self, opt, arg, cli): if len(arg) == 1 or not arg[1]: raise ValueError('<path> is required, use -h to get help') r = cli.client.exists(arg[1], default_watch if opt.watch else None) if r is None: content = False elif opt.stat: content = get_stat_content(r) else: content = True return PlainViewModel(content=content, color='info')
def process(self, opt, arg, cli): path = arg[1] try: acl_list, stat = cli.client.get_acls(path) acl = acl_list[0] c = [ f'{acl.id.scheme}:{acl.id.id}', f'[blue]{int2perm(acl.perms)}[/blue]' ] if opt.stat: c.append('-' * 10) c.append(get_stat_content(stat)) return PlainViewModel(content='\n'.join(c), color='info') except NoAuthError as e: raise ValueError(f"Authentication is not valid, '{path}'") except NoNodeError as e: raise ValueError(f"Path '{path}' not exists")
def process(self, opt, arg, cli): arg_len = len(arg) path = arg[1] data = arg[2].encode() if arg_len > 2 else b'' acl = arg[3] if arg_len > 3 else None try: return PlainViewModel( content=cli.client.create(path=path, value=data, acl=acl, ephemeral=opt.ephemeral, sequence=opt.sequential, makepath=opt.recursion)) except NoNodeError as e: raise ValueError( f"Path '{path}' not exists, try to add '-R' option") except NodeExistsError as e: raise ValueError(f"Path '{path}' already exists")
def process(self, opt, arg, cli): return PlainViewModel(content=self.confession)
def process(self, opt, arg, cli): history_list = cli.history.read_history(opt.time) return PlainViewModel(content='\n'.join(history_list), color='info')