Open braghettos opened 4 days ago
This is the new customform:
{
"apiVersion": "templates.krateo.io/v1alpha1",
"kind": "CustomForm",
"metadata": {
"annotations": {
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"templates.krateo.io/v1alpha1\",\"kind\":\"CustomForm\",\"metadata\":{\"annotations\":{},\"name\":\"fireworksapp-tgz-customform\",\"namespace\":\"demo-system\"},\"spec\":{\"actions\":[{\"template\":{\"apiVersion\":\"composition.krateo.io/v1-1-6\",\"name\":\"submit\",\"payloadToOverride\":[{\"name\":\"metadata.name\",\"value\":\"${ git.toRepo.name }\"},{\"name\":\"metadata.namespace\",\"value\":\"${ git.toRepo.name + \\\"-ns\\\" }\"}],\"resource\":\"fireworksapps\",\"verb\":\"POST\"}}],\"api\":[{\"headers\":[\"Accept: application/json\"],\"name\":\"getCRD\",\"path\":\"/apis/apiextensions.k8s.io/v1/customresourcedefinitions/fireworksapps.composition.krateo.io\",\"verb\":\"GET\"},{\"headers\":[\"Accept: application/json\"],\"name\":\"getNamespaces\",\"path\":\"/api/v1/namespaces\",\"verb\":\"GET\"}],\"app\":{\"template\":{\"propertiesToHide\":[\"argocd\",\"git.properties.fromRepo\",\"git.required[] | select(. == \\\"fromRepo\\\")\"],\"propertiesToOverride\":[{\"name\":\"git.properties.toRepo.properties.deletionPolicy.default\",\"value\":\"${ [.getNamespaces | .items[].metadata.name][1] | tojson }\"},{\"name\":\"git.properties.toRepo.properties.deletionPolicy.enum\",\"value\":\"${ [.getNamespaces | .items[].metadata.name] }\"}],\"schema\":\"${ .getCRD | .spec.versions[] | select(.name == \\\"v1-1-6\\\") | .schema.openAPIV3Schema.properties.spec.properties }\"}},\"propsRef\":{\"name\":\"fireworksapp-tgz-customform\",\"namespace\":\"demo-system\"},\"type\":\"customform\"}}\n"
},
"creationTimestamp": "2024-10-22T08:55:40Z",
"name": "fireworksapp-tgz-customform",
"namespace": "demo-system",
"resourceVersion": "3097",
"uid": "987fcbb0-356e-4737-86a0-895b7c7f43bf"
},
"spec": {
"actions": [
{
"template": {
"apiVersion": "composition.krateo.io/v1-1-6",
"name": "submit",
"payloadToOverride": [
{
"name": "metadata.name",
"value": "${ git.toRepo.name }"
},
{
"name": "metadata.namespace",
"value": "${ git.toRepo.name + \"-ns\" }"
}
],
"resource": "fireworksapps",
"verb": "POST"
}
}
],
"api": [
{
"headers": [
"Accept: application/json"
],
"name": "getCRD",
"path": "/apis/apiextensions.k8s.io/v1/customresourcedefinitions/fireworksapps.composition.krateo.io",
"verb": "GET"
},
{
"headers": [
"Accept: application/json"
],
"name": "getNamespaces",
"path": "/api/v1/namespaces",
"verb": "GET"
}
],
"app": {
"template": {
"propertiesToHide": [
"argocd",
"git.properties.fromRepo",
"git.required[] | select(. == \"fromRepo\")"
],
"propertiesToOverride": [
{
"name": "git.properties.toRepo.properties.deletionPolicy.default",
"value": "${ [.getNamespaces | .items[].metadata.name][1] | tojson }"
},
{
"name": "git.properties.toRepo.properties.deletionPolicy.enum",
"value": "${ [.getNamespaces | .items[].metadata.name] }"
}
],
"schema": "${ .getCRD | .spec.versions[] | select(.name == \"v1-1-6\") | .schema.openAPIV3Schema.properties.spec.properties }"
}
},
"propsRef": {
"name": "fireworksapp-tgz-customform",
"namespace": "demo-system"
},
"type": "customform"
},
"status": {
"actions": [
{
"template": {
"apiVersion": "composition.krateo.io/v1-1-6",
"name": "submit",
"path": "/call?verb=post\u0026resource=fireworksapps\u0026uri=/apis/composition.krateo.io/v1-1-6",
"payloadToOverride": [
{
"name": "metadata.name",
"value": "${ git.toRepo.name }"
},
{
"name": "metadata.namespace",
"value": "${ git.toRepo.name + \"-ns\" }"
}
],
"resource": "fireworksapps",
"verb": "post"
}
}
],
"content": {
"schema": {
"app": {
"properties": {
"service": {
"properties": {
"port": {
"default": 31180,
"maximum": 32767,
"minimum": 30000,
"type": "integer"
},
"type": {
"default": "NodePort",
"enum": [
"NodePort",
"LoadBalancer"
],
"type": "string"
}
},
"required": [
"port",
"type"
],
"type": "object"
}
},
"required": [
"service"
],
"type": "object"
},
"git": {
"properties": {
"deletionPolicy": {
"default": "Orphan",
"enum": [
"Delete",
"Orphan"
],
"type": "string"
},
"insecure": {
"default": true,
"type": "boolean"
},
"toRepo": {
"properties": {
"apiUrl": {
"default": "https://api.github.com",
"type": "string"
},
"branch": {
"default": "main",
"type": "string"
},
"credentials": {
"properties": {
"authMethod": {
"default": "basic",
"enum": [
"basic",
"bearer"
],
"type": "string"
},
"secretRef": {
"properties": {
"key": {
"default": "token",
"type": "string"
},
"name": {
"default": "github-repo-creds",
"type": "string"
},
"namespace": {
"default": "krateo-system",
"type": "string"
}
},
"required": [
"key",
"name",
"namespace"
],
"type": "object"
}
},
"required": [
"authMethod",
"secretRef"
],
"type": "object"
},
"deletionPolicy": {
"default": "demo-system",
"enum": [
"default",
"demo-system",
"fireworks-app",
"fireworksapp-system",
"krateo-system",
"kube-node-lease",
"kube-public",
"kube-system"
],
"type": "string"
},
"initialize": {
"default": true,
"type": "boolean"
},
"name": {
"default": "fireworksapp-test-v2",
"type": "string"
},
"org": {
"default": "krateoplatformops-archive",
"type": "string"
},
"path": {
"default": "/",
"type": "string"
},
"private": {
"default": false,
"type": "boolean"
},
"scmUrl": {
"default": "https://github.com",
"type": "string"
}
},
"required": [
"apiUrl",
"branch",
"credentials",
"deletionPolicy",
"initialize",
"name",
"org",
"path",
"private",
"scmUrl"
],
"type": "object"
},
"unsupportedCapabilities": {
"default": true,
"type": "boolean"
}
},
"required": [
"deletionPolicy",
"insecure",
"toRepo",
"unsupportedCapabilities"
],
"type": "object"
}
}
},
"name": "fireworksapp-tgz-customform",
"props": {
"description": "The co-inventor of YAML",
"onSubmitName": "submit",
"onSubmitVerb": "POST",
"title": "Brian Ingerson"
},
"type": "customform",
"uid": "987fcbb0-356e-4737-86a0-895b7c7f43bf"
}
}
Please note:
status.props
there are onSubmitVerb
and onSubmitName
which the frontend will use to look into status.actions
the template that has status.actions[].template.name = status.props.onSubmitName and status.actions[].template.verb = status.props.onSubmitVerbstatus.actions[].template.payloadToOverride
that eventually will contain keys to add (if missing in the payload) or override (if already available in the payload) to the form payloadThe legacy backend API can be called in the following way:
curl 'http://48.209.154.250:8081/call?uri=/apis/templates.krateo.io/v1alpha1/namespaces/krateo-system/collections/templates-row' \
-H 'x-krateo-groups: admins' \
-H 'x-krateo-user: admin' \
--insecure
This is the new API that requires a payload and the query parameters have changed:
curl -v \
-H 'Referer: http://48.209.154.250:8081' \
-H 'x-krateo-user: admin' \
-H 'x-krateo-groups: admins' \
-H 'Content-Type: application/json' \
-d '{"apiVersion":"templates.krateo.io/v1alpha1","kind":"Collection","metadata":{"name":"templates-row","namespace":"krateo-system"}}' \
"http://48.209.154.250:8081/call?verb=get&resource=collections&uri=/apis/templates.krateo.io/v1alpha1/"
Is your feature request related to a problem? Please describe. A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like A clear and concise description of what you want to happen.
Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.
Additional context Add any other context or screenshots about the feature request here.