Procházet zdrojové kódy

temp working version of cert-manager stream

Alexander Belanger před 4 roky
rodič
revize
9f49e6acd6

+ 30 - 13
api/server/handlers/release/stream_form.go

@@ -1,8 +1,9 @@
 package release
 
 import (
-	"fmt"
+	"encoding/json"
 	"net/http"
+	"strings"
 
 	"github.com/porter-dev/porter/api/server/authz"
 	"github.com/porter-dev/porter/api/server/handlers"
@@ -32,9 +33,18 @@ func NewStreamFormHandler(
 	}
 }
 
-func onData(val map[string]interface{}) error {
-	fmt.Println("VAL IS", val)
-	return nil
+func getStreamWriter(rw *websocket.WebsocketSafeReadWriter) func(val map[string]interface{}) error {
+	return func(val map[string]interface{}) error {
+		// parse value into json
+		bytes, err := json.Marshal(val)
+
+		if err != nil {
+			return err
+		}
+
+		_, err = rw.Write(bytes)
+		return err
+	}
 }
 
 func (c *StreamFormHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
@@ -62,17 +72,22 @@ func (c *StreamFormHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 		HelmRelease:   helmRelease,
 	}
 
-	formData := []byte(certManagerForm)
+	var formData []byte
 
-	// TODO: move this back
-	// var formData []byte
+	for _, file := range helmRelease.Chart.Files {
+		if strings.Contains(file.Name, "form.yaml") {
+			formData = file.Data
+			break
+		}
+	}
 
-	// for _, file := range helmRelease.Chart.Files {
-	// 	if strings.Contains(file.Name, "form.yaml") {
-	// 		formData = file.Data
-	// 		break
-	// 	}
-	// }
+	// if form data isn't found, look for common charts
+	if formData == nil {
+		// for now just case by name
+		if helmRelease.Chart.Name() == "cert-manager" {
+			formData = []byte(certManagerForm)
+		}
+	}
 
 	stopper := make(chan struct{})
 	errorchan := make(chan error)
@@ -88,6 +103,8 @@ func (c *StreamFormHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
 		}
 	}()
 
+	onData := getStreamWriter(safeRW)
+
 	err = parser.FormStreamer(parserDef, formData, "", &types.FormContext{
 		Type: "cluster",
 		Config: map[string]string{

+ 9 - 6
internal/templater/dynamic/reader.go

@@ -2,7 +2,6 @@ package dynamic
 
 import (
 	"context"
-	"fmt"
 	"time"
 
 	"github.com/porter-dev/porter/internal/templater/utils"
@@ -120,7 +119,7 @@ func (r *TemplateReader) ReadStream(
 			u := obj.(*unstructured.Unstructured)
 
 			queryObj := make(map[string]interface{})
-			queryObj["items"] = []interface{}{u}
+			queryObj["items"] = []interface{}{u.Object}
 
 			data, err := utils.QueryValues(queryObj, r.Queries)
 
@@ -128,8 +127,6 @@ func (r *TemplateReader) ReadStream(
 				return
 			}
 
-			fmt.Println("DATA IS", data)
-
 			pkt["data"] = data
 			on(pkt)
 		},
@@ -139,7 +136,10 @@ func (r *TemplateReader) ReadStream(
 
 			u := newObj.(*unstructured.Unstructured)
 
-			data, err := utils.QueryValues(u.Object, r.Queries)
+			queryObj := make(map[string]interface{})
+			queryObj["items"] = []interface{}{u.Object}
+
+			data, err := utils.QueryValues(queryObj, r.Queries)
 
 			if err != nil {
 				return
@@ -154,7 +154,10 @@ func (r *TemplateReader) ReadStream(
 
 			u := obj.(*unstructured.Unstructured)
 
-			data, err := utils.QueryValues(u.Object, r.Queries)
+			queryObj := make(map[string]interface{})
+			queryObj["items"] = []interface{}{u.Object}
+
+			data, err := utils.QueryValues(queryObj, r.Queries)
 
 			if err != nil {
 				return

+ 0 - 9
internal/templater/parser/parser.go

@@ -104,27 +104,18 @@ func FormStreamer(
 	on templater.OnDataStream,
 	stopCh <-chan struct{},
 ) error {
-
-	fmt.Println("HERE -2")
-
 	form, err := unqueriedFormYAMLFromBytes(bytes)
-	fmt.Println("HERE -1", form, err)
 
 	if err != nil {
 		return err
 	}
 
 	lookup := formToLookupTable(def, form, stateType)
-	fmt.Println("HERE -0.5", lookup)
 
 	for lookupContext, lookupVal := range lookup {
-		fmt.Println("HERE 0")
 		if lookupVal != nil && areContextsEqual(targetContext, lookupContext) {
-			fmt.Println("HERE 1")
 			err := lookupVal.TemplateReader.ReadStream(on, stopCh)
 
-			fmt.Println("HERE 2", err)
-
 			if err != nil {
 				continue
 			}