app: remove JSON based schema, and each App returns single namespace
Change-Id: I2ced82edd1251edc592f7ae0156d5ea3c81865c2
diff --git a/core/installer/app.go b/core/installer/app.go
index 611318d..35c6d11 100644
--- a/core/installer/app.go
+++ b/core/installer/app.go
@@ -328,7 +328,7 @@
Description() string
Icon() template.HTML
Schema() Schema
- Namespaces() []string
+ Namespace() string
Render(derived Derived) (Rendered, error)
}
@@ -386,8 +386,8 @@
return a.schema
}
-func (a cueApp) Namespaces() []string {
- return []string{a.namespace}
+func (a cueApp) Namespace() string {
+ return a.namespace
}
type PortForward struct {
diff --git a/core/installer/app_manager.go b/core/installer/app_manager.go
index 4684e02..295c8ff 100644
--- a/core/installer/app_manager.go
+++ b/core/installer/app_manager.go
@@ -59,18 +59,13 @@
if err != nil {
return err
}
- namespaces := make([]string, len(app.Namespaces()))
- for i, n := range app.Namespaces() {
- ns, err := ns.Generate(n)
- if err != nil {
- return err
- }
- namespaces[i] = ns + suffix
+ nms, err := ns.Generate(app.Namespace())
+ if err != nil {
+ return err
}
- for _, n := range namespaces {
- if err := m.nsCreator.Create(n); err != nil {
- return err
- }
+ nms = nms + suffix
+ if err := m.nsCreator.Create(nms); err != nil {
+ return err
}
globalConfig, err := m.repoIO.ReadConfig()
if err != nil {
@@ -85,9 +80,7 @@
Global: globalConfig.Values,
Values: derivedValues,
}
- if len(namespaces) > 0 {
- derived.Release.Namespace = namespaces[0]
- }
+ derived.Release.Namespace = nms
fmt.Printf("%+v\n", derived)
err = m.repoIO.InstallApp(
app,
diff --git a/core/installer/bootstrapper.go b/core/installer/bootstrapper.go
index fa1a997..b981573 100644
--- a/core/installer/bootstrapper.go
+++ b/core/installer/bootstrapper.go
@@ -388,17 +388,12 @@
if err != nil {
return err
}
- namespaces := make([]string, len(app.Namespaces()))
- for i, n := range app.Namespaces() {
- namespaces[i], err = nsGen.Generate(n)
- if err != nil {
- return err
- }
+ nms, err := nsGen.Generate(app.Namespace())
+ if err != nil {
+ return err
}
- for _, n := range namespaces {
- if err := nsCreator.Create(n); err != nil {
- return err
- }
+ if err := nsCreator.Create(nms); err != nil {
+ return err
}
derived := Derived{
Global: Values{
@@ -407,9 +402,7 @@
Release: Release{},
Values: make(map[string]any),
}
- if len(namespaces) > 0 {
- derived.Release.Namespace = namespaces[0]
- }
+ derived.Release.Namespace = nms
values := map[string]any{}
return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), values, derived)
}
@@ -497,17 +490,12 @@
if err != nil {
return err
}
- namespaces := make([]string, len(app.Namespaces()))
- for i, n := range app.Namespaces() {
- namespaces[i], err = nsGen.Generate(n)
- if err != nil {
- return err
- }
+ nms, err := nsGen.Generate(app.Namespace())
+ if err != nil {
+ return err
}
- for _, n := range namespaces {
- if err := nsCreator.Create(n); err != nil {
- return err
- }
+ if err := nsCreator.Create(nms); err != nil {
+ return err
}
derived := Derived{
Global: Values{
@@ -520,9 +508,7 @@
"sshPrivateKey": string(keys.RawPrivateKey()),
},
}
- if len(namespaces) > 0 {
- derived.Release.Namespace = namespaces[0]
- }
+ derived.Release.Namespace = nms
return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), derived.Values, derived)
}
@@ -532,17 +518,12 @@
if err != nil {
return err
}
- namespaces := make([]string, len(app.Namespaces()))
- for i, n := range app.Namespaces() {
- namespaces[i], err = nsGen.Generate(n)
- if err != nil {
- return err
- }
+ nms, err := nsGen.Generate(app.Namespace())
+ if err != nil {
+ return err
}
- for _, n := range namespaces {
- if err := nsCreator.Create(n); err != nil {
- return err
- }
+ if err := nsCreator.Create(nms); err != nil {
+ return err
}
derived := Derived{
Global: Values{
@@ -550,9 +531,7 @@
},
Values: map[string]any{},
}
- if len(namespaces) > 0 {
- derived.Release.Namespace = namespaces[0]
- }
+ derived.Release.Namespace = nms
return repo.InstallApp(app, filepath.Join("/infrastructure", app.Name()), derived.Values, derived)
}
@@ -603,7 +582,7 @@
if err != nil {
return err
}
- ns, err := nsGen.Generate(app.Namespaces()[0])
+ ns, err := nsGen.Generate(app.Namespace())
if err != nil {
return err
}
diff --git a/core/installer/schema.go b/core/installer/schema.go
index 7e5e08d..de26173 100644
--- a/core/installer/schema.go
+++ b/core/installer/schema.go
@@ -1,9 +1,7 @@
package installer
import (
- "encoding/json"
"fmt"
- "strings"
"cuelang.org/go/cue"
"cuelang.org/go/cue/cuecontext"
@@ -175,36 +173,3 @@
return nil, fmt.Errorf("SHOULD NOT REACH!")
}
}
-
-func newSchema(schema map[string]any) (Schema, error) {
- switch schema["type"] {
- case "string":
- if r, ok := schema["role"]; ok && r == "network" {
- return basicSchema{KindNetwork}, nil
- } else {
- return basicSchema{KindString}, nil
- }
- case "object":
- s := structSchema{make(map[string]Schema)}
- props := schema["properties"].(map[string]any)
- for name, schema := range props {
- sm, _ := schema.(map[string]any)
- scm, err := newSchema(sm)
- if err != nil {
- return nil, err
- }
- s.fields[name] = scm
- }
- return s, nil
- default:
- return nil, fmt.Errorf("SHOULD NOT REACH!")
- }
-}
-
-func NewJSONSchema(schema string) (Schema, error) {
- ret := make(map[string]any)
- if err := json.NewDecoder(strings.NewReader(schema)).Decode(&ret); err != nil {
- return nil, err
- }
- return newSchema(ret)
-}