forked from kubernetes-el/kubernetes-el
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkubernetes-namespaces.el
53 lines (39 loc) · 1.78 KB
/
kubernetes-namespaces.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
;;; kubernetes-namespaces.el --- Helpers for Kubernetes namespaces. -*- lexical-binding: t; -*-
;;; Commentary:
;;; Code:
(require 'kubernetes-kubectl)
(require 'kubernetes-process)
(require 'kubernetes-props)
(require 'kubernetes-state)
(require 'kubernetes-yaml)
;; Requests and state management
(kubernetes-state-define-refreshers namespaces)
;; Displaying namespaces
(defun kubernetes-namespaces--read-name (state)
"Read a namespace name from the user.
STATE is the current application state.
Update the namespace state if it not set yet."
(-let* (((&alist 'items namespaces)
(or (kubernetes-state--get state 'namespaces)
(progn
(message "Getting namespaces...")
(let ((response (kubernetes-kubectl-await-on-async kubernetes-props state (-partial #'kubernetes-kubectl-get "namespaces"))))
(kubernetes-state-update-namespaces response)
response))))
(namespaces (append namespaces nil))
(names (-map #'kubernetes-state-resource-name namespaces)))
(completing-read "Namespace: " names nil t)))
;;;###autoload
(defun kubernetes-display-namespace (namespace-name state)
"Display information for a namespace in a new window.
STATE is the current application state.
NAMESPACE-NAME is the name of the namespace to display."
(interactive (let ((state (kubernetes-state)))
(list (kubernetes-namespaces--read-name state) state)))
(if-let (namespace (kubernetes-state-lookup-namespace namespace-name state))
(select-window
(display-buffer
(kubernetes-yaml-make-buffer kubernetes-display-namespace-buffer-name namespace)))
(error "Unknown namespace: %s" namespace-name)))
(provide 'kubernetes-namespaces)
;;; kubernetes-namespaces.el ends here