diff --git a/README.md b/README.md index 19d26a4..c13b093 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,12 @@ # KLS ## Description `kls` is a cli tool for managing kubernetes cluster resources. Inspired by `lf` and `ranger` file managers. Written on python curses. -## Hotkeys +## Key bindings - `1` - get yaml of resource - `2` - describe resource - `3` - edit resource - `4` - logs of pod +- `Esc` - exit filter mode or exit `kls` ![kls in action](./images/kls.gif) ## Dependencies diff --git a/kls b/kls index 67fc9c3..0b5e8d5 100755 --- a/kls +++ b/kls @@ -38,21 +38,6 @@ api_resource = MENUS[1].selected_row resource = lambda: MENUS[2].selected_row().split()[0] -def update_menu3(): - if namespace() and api_resource(): - columns_dict = {"pods": 'NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName', - "services": 'NAME:.metadata.name,TYPE:.spec.type,CLUSTER_IP:.spec.clusterIP', - "ingresses": 'NAME:.metadata.name,HOSTS:.spec.rules[*].host', - "persistentvolumeclaims": 'NAME:.metadata.name,SIZE:.spec.resources.requests.storage,STORAGE_CLASS:.spec.storageClassName'} - columns = columns_dict.get(api_resource(), 'NAME:.metadata.name') - MENUS[2].rows = kubectl(f"-n {namespace()} get {api_resource()} --no-headers -o custom-columns={columns}") - MENUS[2].rows = [x for x in MENUS[2].rows if x] # это нужно для удаления пустых значений из листа - else: - MENUS[2].rows = [] - MENUS[2].filtered_row_index = 0 # перед перерисовкой сбрасываем выбранную строку на 0 - draw_menu(MENUS[2]) - - def draw_row(window, text, y, x, selected=False): window.addstr(y, x, text, curses.A_REVERSE | curses.A_BOLD if selected else curses.A_NORMAL) window.clrtoeol() @@ -71,6 +56,21 @@ def draw_menu(menu): draw_row(menu.win, f"/{menu.filter}" if menu.filter else "", curses.LINES - 5, 2) # рисуем строку поиска +def update_menu3(): + if namespace() and api_resource(): + columns_dict = {"pods": 'NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName', + "services": 'NAME:.metadata.name,TYPE:.spec.type,CLUSTER_IP:.spec.clusterIP', + "ingresses": 'NAME:.metadata.name,HOSTS:.spec.rules[*].host', + "persistentvolumeclaims": 'NAME:.metadata.name,SIZE:.spec.resources.requests.storage,STORAGE_CLASS:.spec.storageClassName'} + columns = columns_dict.get(api_resource(), 'NAME:.metadata.name') + MENUS[2].rows = kubectl(f"-n {namespace()} get {api_resource()} --no-headers -o custom-columns={columns}") + MENUS[2].rows = [x for x in MENUS[2].rows if x] # это нужно для удаления пустых значений из листа + else: + MENUS[2].rows = [] + MENUS[2].filtered_row_index = 0 # перед перерисовкой сбрасываем выбранную строку на 0 + draw_menu(MENUS[2]) + + def run_command(key): if key == "4" and api_resource() != "pods": return