Fix: deprecate CRD discovery for CUE import in Definition to prevent memory leak and OOM crash (#2925)

* Pause test case

Signed-off-by: Jian.Li <lj176172@alibaba-inc.com>

* fix lint

Signed-off-by: Jian.Li <lj176172@alibaba-inc.com>

* diable discover the open api of the CRD

Signed-off-by: Jian.Li <lj176172@alibaba-inc.com>

* fix definition test cases

Signed-off-by: Jian.Li <lj176172@alibaba-inc.com>
This commit is contained in:
Jian.Li
2021-12-16 17:53:15 +08:00
committed by GitHub
parent 3b1f097807
commit 133a89be3f
9 changed files with 48 additions and 53 deletions

View File

@@ -10,10 +10,10 @@ spec:
schematic:
cue:
template: |
import (
apps "kube/apps/v1"
)
output: apps.#Deployment
output: {
apiVersion: "apps/v1"
kind: "Deployment"
}
output: {
spec: {
selector: matchLabels: {

View File

@@ -117,15 +117,14 @@ spec:
spec:
schematic:
cue:
template: "import (\n apps \"kube/apps/v1\"\n)\noutput: apps.#Deployment\noutput:
{\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\":
context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: {\n\t\t\t\t\"app.oam.dev/component\":
context.name\n\t\t\t}\n\n\t\t\tspec: {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname:
\ context.name\n\t\t\t\t\timage: parameter.image\n\n\t\t\t\t\tif parameter[\"cmd\"]
!= _|_ {\n\t\t\t\t\t\tcommand: parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}\n}\n\nparameter:
{\n\t// +usage=Which image would you like to use for your service\n\t//
+short=i\n\timage: string\n\t// +usage=Commands to run in the container\n\tcmd?:
[...string]\n}\n"
template: "output: {\n apiVersion: \"apps/v1\"\n kind: \"Deployment\"\n}\noutput:
{\n\tspec: {\n\t\tselector: matchLabels: {\n\t\t\t\"app.oam.dev/component\":
context.name\n\t\t}\n\n\t\ttemplate: {\n\t\t\tmetadata: labels: {\n\t\t\t\t\"app.oam.dev/component\":
context.name\n\t\t\t}\n\n\t\t\tspec: {\n\t\t\t\tcontainers: [{\n\t\t\t\t\tname:
\ context.name\n\t\t\t\t\timage: parameter.image\n\n\t\t\t\t\tif parameter[\"cmd\"]
!= _|_ {\n\t\t\t\t\t\tcommand: parameter.cmd\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}\n}\n\nparameter:
{\n\t// +usage=Which image would you like to use for your service\n\t// +short=i\n\timage:
string\n\t// +usage=Commands to run in the container\n\tcmd?: [...string]\n}\n"
workload:
definition:
apiVersion: apps/v1
@@ -219,18 +218,17 @@ spec:
name: ""
schematic:
cue:
template: "import (\n\tkubev1 \"kube/v1\"\n\tnetwork \"kube/networking.k8s.io/v1beta1\"\n)\n\nparameter:
{\n\tdomain: string\n\thttp: [string]: int\n}\n\noutputs: {\nservice:
kubev1.#Service\ningress: network.#Ingress\n}\n\n// trait template can
have multiple outputs in one trait\noutputs: service: {\n\tmetadata:\n\t\tname:
context.name\n\tspec: {\n\t\tselector:\n\t\t\t\"app.oam.dev/component\":
context.name\n\t\tports: [\n\t\t\tfor k, v in parameter.http {\n\t\t\t\tport:
\ v\n\t\t\t\ttargetPort: v\n\t\t\t},\n\t\t]\n\t}\n}\n\noutputs:
ingress: {\n\tmetadata:\n\t\tname: context.name\n\tspec: {\n\t\trules:
[{\n\t\t\thost: parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: [\n\t\t\t\t\tfor
k, v in parameter.http {\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend:
{\n\t\t\t\t\t\t\tserviceName: context.name\n\t\t\t\t\t\t\tservicePort:
v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n"
template: "parameter: {\n\tdomain: string\n\thttp: [string]: int\n}\n\noutputs:
{\n service: {\n apiVersion: \"v1\"\n kind: \"Service\"\n }\n ingress:
{\n apiVersion: \"networking.k8s.io/v1beta1\"\n kind: \"Ingress\"\n
\ }\n}\n\n// trait template can have multiple outputs in one trait\noutputs:
service: {\n\tmetadata:\n\t\tname: context.name\n\tspec: {\n\t\tselector:\n\t\t\t\"app.oam.dev/component\":
context.name\n\t\tports: [\n\t\t\tfor k, v in parameter.http {\n\t\t\t\tport:
\ v\n\t\t\t\ttargetPort: v\n\t\t\t},\n\t\t]\n\t}\n}\n\noutputs: ingress:
{\n\tmetadata:\n\t\tname: context.name\n\tspec: {\n\t\trules: [{\n\t\t\thost:
parameter.domain\n\t\t\thttp: {\n\t\t\t\tpaths: [\n\t\t\t\t\tfor k, v in parameter.http
{\n\t\t\t\t\t\tpath: k\n\t\t\t\t\t\tbackend: {\n\t\t\t\t\t\t\tserviceName:
context.name\n\t\t\t\t\t\t\tservicePort: v\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t}\n\t\t}]\n\t}\n}\n"
status: {}
myscaler:
apiVersion: core.oam.dev/v1beta1

View File

@@ -9,19 +9,20 @@ spec:
schematic:
cue:
template: |
import (
kubev1 "kube/v1"
network "kube/networking.k8s.io/v1beta1"
)
parameter: {
domain: string
http: [string]: int
}
outputs: {
service: kubev1.#Service
ingress: network.#Ingress
service: {
apiVersion: "v1"
kind: "Service"
}
ingress: {
apiVersion: "networking.k8s.io/v1beta1"
kind: "Ingress"
}
}
// trait template can have multiple outputs in one trait