DodoApp: Support MongoDB
Change-Id: I275f662848fb7d78b98d5e935f5ca87d73ca60ec
diff --git a/core/installer/server/dodo-app/schemas/app.schema.json b/core/installer/server/dodo-app/schemas/app.schema.json
index 455829c..f400c17 100644
--- a/core/installer/server/dodo-app/schemas/app.schema.json
+++ b/core/installer/server/dodo-app/schemas/app.schema.json
@@ -48,6 +48,9 @@
"postgresql": {
"$ref": "#/definitions/postgresql"
},
+ "mongodb": {
+ "$ref": "#/definitions/mongodb"
+ },
"dev": {
"$ref": "#/definitions/dev"
}
@@ -100,6 +103,9 @@
"postgresql": {
"$ref": "#/definitions/postgresql"
},
+ "mongodb": {
+ "$ref": "#/definitions/mongodb"
+ },
"dev": {
"$ref": "#/definitions/dev"
}
@@ -129,6 +135,9 @@
"postgresql": {
"$ref": "#/definitions/postgresql"
},
+ "mongodb": {
+ "$ref": "#/definitions/mongodb"
+ },
"dev": {
"$ref": "#/definitions/dev"
},
@@ -258,6 +267,93 @@
"subdomain"
]
},
+ // mongo start
+ "mongo": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "size": {
+ "$ref": "#/definitions/size"
+ },
+ "initdbScripts": { "type": "object" }
+ },
+ "additionalProperties": false,
+ "required": [
+ "name",
+ "size"
+ ]
+ },
+ "mongodb": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/mongo"
+ }
+ },
+ "size": {
+ "type": "string",
+ "pattern": "[1-9][0-9]*(Mi|Gi)"
+ },
+ "ingress": {
+ "type": "object",
+ "properties": {
+ "network": {
+ "type": "string",
+ "oneOf": {{ .Networks }}
+ },
+ "subdomain": {
+ "type": "string",
+ "minLength": 1
+ },
+ "auth": {
+ "type": "object",
+ "oneOf": [
+ {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "enum": [
+ false
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "enabled"
+ ]
+ },
+ {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "enum": [
+ true
+ ]
+ },
+ "groups": {
+ "type": "string"
+ },
+ "noAuthPathPatterns": {
+ "type": "array",
+ "items": { "type": "string" }
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "enabled"
+ ]
+ }
+ ]
+ }
+ },
+ "additionalProperties": false,
+ "required": [
+ "network",
+ "subdomain"
+ ]
+ },
+
"command": {
"type": "object",
"properties": {
diff --git a/core/installer/server/dodo-app/server.go b/core/installer/server/dodo-app/server.go
index 609ce9f..4fbd6c2 100644
--- a/core/installer/server/dodo-app/server.go
+++ b/core/installer/server/dodo-app/server.go
@@ -630,6 +630,12 @@
Volume string
}
+type mongodb struct {
+ Name string
+ Version string
+ Volume string
+}
+
type ingress struct {
Name string
Host string
@@ -646,6 +652,7 @@
type resourceData struct {
Volume []volume
PostgreSQL []postgresql
+ MongoDB []mongodb
Ingress []ingress
VirtualMachine []vm
}
@@ -1815,6 +1822,20 @@
return resourceData{}, fmt.Errorf("no volume")
}
ret.PostgreSQL = append(ret.PostgreSQL, postgresql{name, version, volume})
+ case "mongodb":
+ name, ok := r.Annotations["dodo.cloud/resource.mongodb.name"]
+ if !ok {
+ return resourceData{}, fmt.Errorf("no name")
+ }
+ version, ok := r.Annotations["dodo.cloud/resource.mongodb.version"]
+ if !ok {
+ return resourceData{}, fmt.Errorf("no version")
+ }
+ volume, ok := r.Annotations["dodo.cloud/resource.mongodb.volume"]
+ if !ok {
+ return resourceData{}, fmt.Errorf("no volume")
+ }
+ ret.MongoDB = append(ret.MongoDB, mongodb{name, version, volume})
case "ingress":
name, ok := r.Annotations["dodo.cloud/resource.ingress.name"]
if !ok {
diff --git a/core/installer/server/dodo-app/templates/base.html b/core/installer/server/dodo-app/templates/base.html
index 19aaf52..722c640 100644
--- a/core/installer/server/dodo-app/templates/base.html
+++ b/core/installer/server/dodo-app/templates/base.html
@@ -46,6 +46,15 @@
<br/>
{{- end -}}
{{- end -}}
+{{- if gt (len .MongoDB) 0 -}}
+<h3>MongoDB</h3>
+{{- range $m := .MongoDB -}}
+Name: {{ $m.Name }}<br/>
+Version: {{ $m.Version }}<br/>
+Volume: {{ $m.Volume }}<br/>
+<br/>
+{{- end -}}
+{{- end -}}
{{- if gt (len .Volume) 0 -}}
<h3>Volumes</h3>
{{- range $v := .Volume -}}