Skip to content

Commit

Permalink
Genericize state-getters for marked resources (#204)
Browse files Browse the repository at this point in the history
Relates to #69.

This PR removes the resource-specific getters for "marked" default k8s resources, e.g. pods and deployments, in favor of the generic counterpart introduced in #200.

## Side Note

As we move forward with resource-handling genericization, it might benefit us to likewise look into a more generic handling of marked status for resources, rather than introduce one new field in the state alist for each resource. We can have that discussion elsewhere.
  • Loading branch information
jinnovation committed Aug 28, 2021
1 parent 5afb0b9 commit 1a9d841
Show file tree
Hide file tree
Showing 15 changed files with 42 additions and 65 deletions.
12 changes: 6 additions & 6 deletions kubernetes-commands.el
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
"Action all marked items in the buffer."
(interactive)
(let ((state (kubernetes-state)))
(let ((n (length (kubernetes-state-marked-pods state))))
(let ((n (length (kubernetes-state--get state 'marked-pods))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s pod%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-pods-delete-marked state)))
Expand All @@ -111,12 +111,12 @@
(y-or-n-p (format "Delete %s configmap%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-configmaps-delete-marked state)))

(let ((n (length (kubernetes-state-marked-ingress state))))
(let ((n (length (kubernetes-state--get state 'marked-ingress))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s ingress%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-ingress-delete-marked state)))

(let ((n (length (kubernetes-state-marked-secrets state))))
(let ((n (length (kubernetes-state--get state 'marked-secrets))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s secret%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-secrets-delete-marked state)))
Expand All @@ -126,17 +126,17 @@
(y-or-n-p (format "Delete %s deployment%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-deployments-delete-marked state)))

(let ((n (length (kubernetes-state-marked-statefulsets state))))
(let ((n (length (kubernetes-state--get state 'marked-statefulsets))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s statefulsets%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-statefulsets-delete-marked state)))

(let ((n (length (kubernetes-state-marked-jobs state))))
(let ((n (length (kubernetes-state--get state 'marked-jobs))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s job%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-jobs-delete-marked state)))

(let ((n (length (kubernetes-state-marked-services state))))
(let ((n (length (kubernetes-state--get state 'marked-services))))
(when (and (not (zerop n))
(y-or-n-p (format "Delete %s service%s? " n (if (equal 1 n) "" "s"))))
(kubernetes-services-delete-marked state))))
Expand Down
2 changes: 1 addition & 1 deletion kubernetes-configmaps.el
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
(key-value 12 "Created" ,time))))

(kubernetes-ast-define-component configmap-line (state configmap)
(-let* ((current-time (kubernetes-state-current-time state))
(-let* ((current-time (kubernetes-state--get state 'current-time))
(pending-deletion (kubernetes-state--get state 'configmaps-pending-deletion))
(marked-configmaps (kubernetes-state--get state 'marked-configmaps))
((&alist 'data data
Expand Down
8 changes: 4 additions & 4 deletions kubernetes-deployments.el
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
(key-value 12 "Created" ,time))))

(kubernetes-ast-define-component deployment-line (state deployment)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-deployments-pending-deletion state))
(marked-deployments (kubernetes-state-marked-deployments state))
(-let* ((current-time (kubernetes-state--get state 'current-time))
(pending-deletion (kubernetes-state--get state 'deployments-pending-deletion))
(marked-deployments (kubernetes-state--get state 'marked-deployments))

((&alist 'metadata (&alist 'name name 'creationTimestamp created-time)

Expand Down Expand Up @@ -143,7 +143,7 @@
(kubernetes-state-define-refreshers deployments)

(defun kubernetes-deployments-delete-marked (state)
(let ((names (kubernetes-state-marked-deployments state)))
(let ((names (kubernetes-state--get state 'marked-deployments)))
(dolist (name names)
(kubernetes-state-delete-deployment name)
(kubernetes-kubectl-delete "deployment" name kubernetes-props state
Expand Down
2 changes: 1 addition & 1 deletion kubernetes-errors.el
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
(require 'kubernetes-state)

(defun kubernetes-errors-render (state)
(-when-let* (((&alist 'message message 'command command) (kubernetes-state-last-error state))
(-when-let* (((&alist 'message message 'command command) (kubernetes-state--get state 'last-error))
(message-paragraph
(with-temp-buffer
(insert message)
Expand Down
6 changes: 3 additions & 3 deletions kubernetes-ingress.el
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@

(kubernetes-ast-define-component ingress-line (state ingress)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-ingress-pending-deletion state))
(marked-ingress (kubernetes-state-marked-ingress state))
(pending-deletion (kubernetes-state--get state 'ingress-pending-deletion))
(marked-ingress (kubernetes-state--get state 'marked-ingress))
((&alist 'metadata (&alist 'name name 'creationTimestamp created-time)
'spec (&alist 'rules ingress-rules)
'status (&alist 'loadBalancer (&alist 'ingress ingress-lb-list)))
Expand Down Expand Up @@ -87,7 +87,7 @@
(kubernetes-state-define-refreshers ingress)

(defun kubernetes-ingress-delete-marked (state)
(let ((names (kubernetes-state-marked-ingress state)))
(let ((names (kubernetes-state--get state 'marked-ingress)))
(dolist (name names)
(kubernetes-state-delete-ingress name)
(kubernetes-kubectl-delete "ingress" name kubernetes-props state
Expand Down
6 changes: 3 additions & 3 deletions kubernetes-jobs.el
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@

(kubernetes-ast-define-component job-line (state pod job)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-jobs-pending-deletion state))
(marked-jobs (kubernetes-state-marked-jobs state))
(pending-deletion (kubernetes-state--get state 'jobs-pending-deletion))
(marked-jobs (kubernetes-state--get state 'marked-jobs))

((&alist 'metadata (&alist 'name name 'creationTimestamp created-time)
'status (&alist 'succeeded successful
Expand Down Expand Up @@ -128,7 +128,7 @@
(kubernetes-state-define-refreshers jobs)

(defun kubernetes-jobs-delete-marked (state)
(let ((names (kubernetes-state-marked-jobs state)))
(let ((names (kubernetes-state--get state 'marked-jobs)))
(dolist (name names)
(kubernetes-state-delete-job name)
(kubernetes-kubectl-delete "job" name kubernetes-props state
Expand Down
4 changes: 2 additions & 2 deletions kubernetes-overview.el
Original file line number Diff line number Diff line change
Expand Up @@ -140,8 +140,8 @@
pods)))))

(kubernetes-ast-define-component aggregated-secret-line (state secret)
(-let* ((pending-deletion (kubernetes-state-secrets-pending-deletion state))
(marked-secrets (kubernetes-state-marked-secrets state))
(-let* ((pending-deletion (kubernetes-state--get state 'secrets-pending-deletion))
(marked-secrets (kubernetes-state--get state 'marked-secrets))
((&alist 'metadata (&alist 'name name )) secret)
(line (cond
((member name pending-deletion)
Expand Down
4 changes: 2 additions & 2 deletions kubernetes-pod-line.el
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
"succeeded"))))))

(kubernetes-ast-define-component pod-line (state pod)
(-let* ((marked-pods (kubernetes-state-marked-pods state))
(pending-deletion (kubernetes-state-pods-pending-deletion state))
(-let* ((marked-pods (kubernetes-state--get state 'marked-pods))
(pending-deletion (kubernetes-state--get state 'pods-pending-deletion))
((&alist 'metadata (&alist 'name name) 'status (&alist 'containerStatuses containers 'phase phase)) pod)
([(&alist 'state pod-state)] containers)
(pod-state (or (alist-get 'reason (alist-get 'waiting pod-state)) phase))
Expand Down
8 changes: 4 additions & 4 deletions kubernetes-pods.el
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@


(kubernetes-ast-define-component pod-view-line (state pod)
(-let* ((current-time (kubernetes-state-current-time state))
(marked-pods (kubernetes-state-marked-pods state))
(pending-deletion (kubernetes-state-pods-pending-deletion state))
(-let* ((current-time (kubernetes-state--get state 'current-time))
(marked-pods (kubernetes-state--get state 'marked-pods))
(pending-deletion (kubernetes-state--get state 'pods-pending-deletion))
((&alist 'metadata (&alist 'name name)
'status (&alist 'containerStatuses containers
'startTime start-time
Expand Down Expand Up @@ -168,7 +168,7 @@ Update the pod state if it not set yet."
(completing-read "Pod: " names nil t)))

(defun kubernetes-pods-delete-marked (state)
(let ((names (kubernetes-state-marked-pods state)))
(let ((names (kubernetes-state--get state 'marked-pods)))
(dolist (name names)
(kubernetes-state-delete-pod name)
(kubernetes-kubectl-delete "pod" name kubernetes-props state
Expand Down
2 changes: 1 addition & 1 deletion kubernetes-props.el
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
(update-last-error . kubernetes-state-update-last-error)
(overview-buffer-selected-p . kubernetes-utils-overview-buffer-selected-p)
(get-last-error . (lambda ()
(kubernetes-state-last-error (kubernetes-state)))))
(kubernetes-state--get (kubernetes-state) 'last-error))))
"Variable used to inject functions across modules.")

(defun kubernetes-props-update-last-error (props message command time)
Expand Down
8 changes: 4 additions & 4 deletions kubernetes-secrets.el
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
(key-value 12 "Created" ,time))))

(kubernetes-ast-define-component secret-line (state secret)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-secrets-pending-deletion state))
(marked-secrets (kubernetes-state-marked-secrets state))
(-let* ((current-time (kubernetes-state--get state 'current-time))
(pending-deletion (kubernetes-state--get state 'secrets-pending-deletion))
(marked-secrets (kubernetes-state--get state 'marked-secrets))
((&alist 'data data 'metadata (&alist 'name name 'creationTimestamp created-time))
secret)
([fmt] kubernetes-secrets--column-heading)
Expand Down Expand Up @@ -81,7 +81,7 @@
(kubernetes-state-define-refreshers secrets)

(defun kubernetes-secrets-delete-marked (state)
(let ((names (kubernetes-state-marked-secrets state)))
(let ((names (kubernetes-state--get state 'marked-secrets)))
(dolist (name names)
(kubernetes-state-delete-secret name)
(kubernetes-kubectl-delete "secret" name kubernetes-props state
Expand Down
6 changes: 3 additions & 3 deletions kubernetes-services.el
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@

(kubernetes-ast-define-component service-line (state service)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-services-pending-deletion state))
(marked-services (kubernetes-state-marked-services state))
(pending-deletion (kubernetes-state--get state 'services-pending-deletion))
(marked-services (kubernetes-state--get state 'marked-services))
((&alist 'metadata (&alist 'name name 'creationTimestamp created-time)
'spec (&alist 'clusterIP internal-ip
'externalIPs external-ips))
Expand Down Expand Up @@ -116,7 +116,7 @@
(kubernetes-state-define-refreshers services)

(defun kubernetes-services-delete-marked (state)
(let ((names (kubernetes-state-marked-services state)))
(let ((names (kubernetes-state--get state 'marked-services)))
(dolist (name names)
(kubernetes-state-delete-service name)
(kubernetes-kubectl-delete "service" name kubernetes-props state
Expand Down
25 changes: 1 addition & 24 deletions kubernetes-state.el
Original file line number Diff line number Diff line change
Expand Up @@ -532,29 +532,6 @@
(cl-assert (-all? #'stringp flags))
(setq kubernetes-kubectl-flags flags))

(kubernetes-state--define-getter marked-ingress)
(kubernetes-state--define-getter ingress-pending-deletion)

(kubernetes-state--define-getter marked-jobs)
(kubernetes-state--define-getter jobs-pending-deletion)

(kubernetes-state--define-getter marked-pods)
(kubernetes-state--define-getter pods-pending-deletion)

(kubernetes-state--define-getter marked-secrets)
(kubernetes-state--define-getter secrets-pending-deletion)

(kubernetes-state--define-getter marked-services)
(kubernetes-state--define-getter services-pending-deletion)

(kubernetes-state--define-getter marked-deployments)
(kubernetes-state--define-getter deployments-pending-deletion)

(kubernetes-state--define-getter marked-statefulsets)
(kubernetes-state--define-getter statefulsets-pending-deletion)

(kubernetes-state--define-getter last-error)

(defun kubernetes-state-update-last-error (message command time)
(cl-assert (stringp message))
(cl-assert (stringp command))
Expand Down Expand Up @@ -630,7 +607,7 @@ pod, secret, configmap, etc."
(kubernetes-state--lookup-current-context config)))

(defun kubernetes-state-clear-error-if-stale (error-display-time)
(-when-let ((&alist 'time err-time) (kubernetes-state-last-error (kubernetes-state)))
(-when-let ((&alist 'time err-time) (kubernetes-state--get (kubernetes-state) 'last-error))
(when (< error-display-time
(- (time-to-seconds) (time-to-seconds err-time)))
(kubernetes-state-update :update-last-error nil))))
Expand Down
8 changes: 4 additions & 4 deletions kubernetes-statefulsets.el
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@
(key-value 12 "Created" ,time))))

(kubernetes-ast-define-component statefulset-line (state statefulset)
(-let* ((current-time (kubernetes-state-current-time state))
(pending-deletion (kubernetes-state-statefulsets-pending-deletion state))
(marked-statefulsets (kubernetes-state-marked-statefulsets state))
(-let* ((current-time (kubernetes-state--get state 'current-time))
(pending-deletion (kubernetes-state--get state 'statefulsets-pending-deletion))
(marked-statefulsets (kubernetes-state--get state 'marked-statefulsets))
((&alist 'metadata (&alist 'name name 'creationTimestamp created-time)

'spec (&alist 'replicas desired)
Expand Down Expand Up @@ -130,7 +130,7 @@
(kubernetes-state-define-refreshers statefulsets)

(defun kubernetes-statefulsets-delete-marked (state)
(let ((names (kubernetes-state-marked-statefulsets state)))
(let ((names (kubernetes-state--get state 'marked-statefulsets)))
(dolist (name names)
(kubernetes-state-delete-statefulset name)
(kubernetes-kubectl-delete "statefulset" name kubernetes-props state
Expand Down
6 changes: 3 additions & 3 deletions test/kubernetes-state-test.el
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@
`((message . "Foo")
(command . "Cmd")
(time . , time))
(kubernetes-state-last-error (kubernetes-state)))))))
(kubernetes-state--get (kubernetes-state) 'last-error))))))

(kubernetes-state-test-accessor label-query
(kubernetes-state-update-label-query "test"))
Expand Down Expand Up @@ -274,14 +274,14 @@
(let* ((time (current-time))
(kubernetes-state--current-state `((last-error . ((time . ,time))))))
(kubernetes-state-clear-error-if-stale 5)
(should (kubernetes-state-last-error (kubernetes-state))))))
(should (kubernetes-state--get (kubernetes-state) 'last-error)))))

(ert-deftest kubernetes-state-test--clear-error-if-stale--stale ()
(test-helper-with-empty-state
(let* ((time (time-subtract (current-time) (time-to-seconds 10)))
(kubernetes-state--current-state `((last-error . ((time . ,time))))))
(kubernetes-state-clear-error-if-stale 5)
(should (null (kubernetes-state-last-error (kubernetes-state)))))))
(should (null (kubernetes-state--get (kubernetes-state) 'last-error))))))

(ert-deftest kubernetes-state-test--lookup-pod--no-such-pod ()
(test-helper-with-empty-state
Expand Down

0 comments on commit 1a9d841

Please sign in to comment.