AppManager: Add API endpoint to install dodo app
Refactors cue definitions.
Next steps:
* Needs some cleanup, namespace is hard coded ...
* Maybe merge with regular install API
* Support exposing ports across clusters
Change-Id: Ibfc3c3f742b61f2c5874012fe6c77b958eae81d9
diff --git a/core/installer/app_test.go b/core/installer/app_test.go
index a59571d..f0fe537 100644
--- a/core/installer/app_test.go
+++ b/core/installer/app_test.go
@@ -401,7 +401,8 @@
}
var dodoAppRemoteClusterCue = `
-app: {
+service: [{
+ name: "app"
type: "golang:1.22.0"
run: "main.go"
ingress: {
@@ -413,7 +414,8 @@
enabled: false
}
cluster: "io"
-}`
+ source: repository: "ssh://foo.bar"
+}]`
func TestDodoAppRemoteCluster(t *testing.T) {
app, err := NewDodoApp([]byte(dodoAppRemoteClusterCue))
@@ -432,12 +434,9 @@
}
keyGen := testKeyGen{}
r, err := app.Render(release, env, networks, clusters, map[string]any{
- "repoAddr": "1",
- "repoPublicAddr": "2",
- "managerAddr": "3",
- "appId": "4",
- "branch": "5",
- "sshPrivateKey": "6",
+ "managerAddr": "3",
+ "appId": "4",
+ "sshPrivateKey": "6",
}, nil, keyGen)
if err != nil {
for _, e := range errors.Errors(err) {
@@ -453,7 +452,8 @@
}
var dodoAppDevDisabledCue = `
-app: {
+service: [{
+ name: "app"
type: "golang:1.22.0"
run: "main.go"
ingress: {
@@ -464,10 +464,12 @@
dev: {
enabled: false
}
-}`
+ source: repository: "ssh://foo.bar"
+}]`
var dodoAppDevEnabledCue = `
-app: {
+service: [{
+ name: "app"
type: "golang:1.20.0"
run: "main.go"
ingress: {
@@ -475,19 +477,24 @@
subdomain: "testapp"
auth: enabled: false
}
+ volume: ["data"]
dev: {
enabled: true
username: "gio"
}
- volumes: [{
- name: "data"
- size: "5Gi"
- }]
- mongodb: [{
- name: "db"
- size: "10Gi"
- }]
-}`
+ source: repository: "ssh://foo.bar"
+}]
+
+volume: [{
+ name: "data"
+ size: "5Gi"
+}]
+
+mongodb: [{
+ name: "db"
+ size: "10Gi"
+}]
+`
func TestDodoAppDevDisabled(t *testing.T) {
app, err := NewDodoApp([]byte(dodoAppDevDisabledCue))
@@ -506,12 +513,9 @@
}
keyGen := testKeyGen{}
r, err := app.Render(release, env, networks, nil, map[string]any{
- "repoAddr": "",
- "repoPublicAddr": "",
- "managerAddr": "",
- "appId": "",
- "branch": "",
- "sshPrivateKey": "",
+ "managerAddr": "",
+ "appId": "",
+ "sshPrivateKey": "",
}, nil, keyGen)
if err != nil {
for _, e := range errors.Errors(err) {
@@ -543,13 +547,10 @@
}
keyGen := testKeyGen{}
r, err := app.Render(release, env, networks, nil, map[string]any{
- "repoAddr": "",
- "repoPublicAddr": "",
- "managerAddr": "",
- "appId": "",
- "branch": "",
- "sshPrivateKey": "",
- "username": "",
+ "managerAddr": "",
+ "appId": "",
+ "sshPrivateKey": "",
+ "username": "",
}, nil, keyGen)
if err != nil {
for _, e := range errors.Errors(err) {
@@ -574,7 +575,6 @@
}
values := map[string]any{
"repoAddr": "",
- "repoPublicAddr": "",
"repoHost": "",
"branch": "",
"gitRepoPublicKey": "",