Explorar el Código

Add endpoint for helm ws and finish informer implementation

jnfrati hace 4 años
padre
commit
c6b300cc7d
Se han modificado 2 ficheros con 68 adiciones y 0 borrados
  1. 54 0
      internal/kubernetes/agent.go
  2. 14 0
      server/router/router.go

+ 54 - 0
internal/kubernetes/agent.go

@@ -690,6 +690,10 @@ func (a *Agent) StreamHelmReleases(conn *websocket.Conn, selectors string) error
 				return
 				return
 			}
 			}
 
 
+			if secretObj.Type != "helm.sh/release.v1" {
+				return
+			}
+
 			releaseData, ok := secretObj.Data["release"]
 			releaseData, ok := secretObj.Data["release"]
 
 
 			if !ok {
 			if !ok {
@@ -715,6 +719,31 @@ func (a *Agent) StreamHelmReleases(conn *websocket.Conn, selectors string) error
 			}
 			}
 		},
 		},
 		AddFunc: func(obj interface{}) {
 		AddFunc: func(obj interface{}) {
+			secretObj, ok := obj.(*v1.Secret)
+
+			if secretObj.Type != "helm.sh/release.v1" {
+				return
+			}
+
+			if !ok {
+				errorchan <- fmt.Errorf("could not cast to secret")
+				return
+			}
+
+			releaseData, ok := secretObj.Data["release"]
+
+			if !ok {
+				errorchan <- fmt.Errorf("release field not found")
+				return
+			}
+
+			obj, err := decodeRelease(string(releaseData))
+
+			if err != nil {
+				errorchan <- err
+				return
+			}
+
 			msg := Message{
 			msg := Message{
 				EventType: "ADD",
 				EventType: "ADD",
 				Object:    obj,
 				Object:    obj,
@@ -726,6 +755,31 @@ func (a *Agent) StreamHelmReleases(conn *websocket.Conn, selectors string) error
 			}
 			}
 		},
 		},
 		DeleteFunc: func(obj interface{}) {
 		DeleteFunc: func(obj interface{}) {
+			secretObj, ok := obj.(*v1.Secret)
+
+			if secretObj.Type != "helm.sh/release.v1" {
+				return
+			}
+
+			if !ok {
+				errorchan <- fmt.Errorf("could not cast to secret")
+				return
+			}
+
+			releaseData, ok := secretObj.Data["release"]
+
+			if !ok {
+				errorchan <- fmt.Errorf("release field not found")
+				return
+			}
+
+			obj, err := decodeRelease(string(releaseData))
+
+			if err != nil {
+				errorchan <- err
+				return
+			}
+
 			msg := Message{
 			msg := Message{
 				EventType: "DELETE",
 				EventType: "DELETE",
 				Object:    obj,
 				Object:    obj,

+ 14 - 0
server/router/router.go

@@ -1286,6 +1286,20 @@ func New(a *api.App) *chi.Mux {
 				),
 				),
 			)
 			)
 
 
+			r.Method(
+				"GET",
+				"/projects/{project_id}/k8s/helm_releases",
+				auth.DoesUserHaveProjectAccess(
+					auth.DoesUserHaveClusterAccess(
+						requestlog.NewHandler(a.HandleStreamHelmReleases, l),
+						mw.URLParam,
+						mw.QueryParam,
+					),
+					mw.URLParam,
+					mw.ReadAccess,
+				),
+			)
+
 			r.Method(
 			r.Method(
 				"GET",
 				"GET",
 				"/projects/{project_id}/k8s/pods",
 				"/projects/{project_id}/k8s/pods",