mirror of
https://github.com/onepanelio/onepanel.git
synced 2025-10-28 23:51:44 +08:00
additional generated parameters
This commit is contained in:
@@ -9,10 +9,11 @@ type ParameterOption struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Parameter struct {
|
type Parameter struct {
|
||||||
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
|
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
|
||||||
Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"`
|
Value string `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"`
|
||||||
Type string `json:"type" protobuf:"bytes,3,opt,name=type"`
|
Type string `json:"type" protobuf:"bytes,3,opt,name=type"`
|
||||||
Options []*ParameterOption `json:"options,omitempty" protobuf:"bytes,4,opt,name=options"`
|
Options []*ParameterOption `json:"options,omitempty" protobuf:"bytes,4,opt,name=options"`
|
||||||
|
Required bool `json:"required,omitempty" protobuf:"bytes,5,opt,name=required"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Arguments struct {
|
type Arguments struct {
|
||||||
|
|||||||
@@ -24,6 +24,22 @@ func generateArguments(spec *v1.WorkspaceSpec, config map[string]string) (err er
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resource action parameter
|
||||||
|
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
||||||
|
Name: "name",
|
||||||
|
Type: "input.text",
|
||||||
|
Value: "name",
|
||||||
|
Required: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
// Resource action parameter
|
||||||
|
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
||||||
|
Name: "resource-action",
|
||||||
|
Value: "apply",
|
||||||
|
Type: "input.hidden",
|
||||||
|
})
|
||||||
|
|
||||||
|
// Volume size parameters
|
||||||
volumeClaimsMapped := make(map[string]bool)
|
volumeClaimsMapped := make(map[string]bool)
|
||||||
for _, c := range spec.Containers {
|
for _, c := range spec.Containers {
|
||||||
for _, v := range c.VolumeMounts {
|
for _, v := range c.VolumeMounts {
|
||||||
@@ -32,23 +48,27 @@ func generateArguments(spec *v1.WorkspaceSpec, config map[string]string) (err er
|
|||||||
}
|
}
|
||||||
|
|
||||||
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
||||||
Name: fmt.Sprintf("%v-volume-size", v.Name),
|
Name: fmt.Sprintf("%v-volume-size", v.Name),
|
||||||
Type: "input.number",
|
Type: "input.number",
|
||||||
|
Value: "20480",
|
||||||
|
Required: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
volumeClaimsMapped[v.Name] = true
|
volumeClaimsMapped[v.Name] = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Node pool parameter and options
|
||||||
var options []*v1.ParameterOption
|
var options []*v1.ParameterOption
|
||||||
if err = yaml.Unmarshal([]byte(config["applicationNodePoolOptions"]), &options); err != nil {
|
if err = yaml.Unmarshal([]byte(config["applicationNodePoolOptions"]), &options); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
spec.Arguments.Parameters = append(spec.Arguments.Parameters, v1.Parameter{
|
||||||
Name: "node-pool",
|
Name: "node-pool",
|
||||||
Value: options[0].Value,
|
Value: options[0].Value,
|
||||||
Type: "select.select",
|
Type: "select.select",
|
||||||
Options: options,
|
Options: options,
|
||||||
|
Required: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
return
|
return
|
||||||
@@ -177,7 +197,8 @@ func createStatefulSetManifest(containers []corev1.Container, config map[string]
|
|||||||
|
|
||||||
func unmarshalWorkflowTemplate(arguments *v1.Arguments, serviceManifest, virtualServiceManifest, containersManifest string) (workflowTemplateSpecManifest string, err error) {
|
func unmarshalWorkflowTemplate(arguments *v1.Arguments, serviceManifest, virtualServiceManifest, containersManifest string) (workflowTemplateSpecManifest string, err error) {
|
||||||
workflowTemplateSpec := map[string]interface{}{
|
workflowTemplateSpec := map[string]interface{}{
|
||||||
"arguments": arguments,
|
"arguments": arguments,
|
||||||
|
"entrypoint": "create-workspace",
|
||||||
"templates": []wfv1.Template{
|
"templates": []wfv1.Template{
|
||||||
{
|
{
|
||||||
Name: "create-workspace",
|
Name: "create-workspace",
|
||||||
@@ -188,12 +209,14 @@ func unmarshalWorkflowTemplate(arguments *v1.Arguments, serviceManifest, virtual
|
|||||||
Template: "create-service-resource",
|
Template: "create-service-resource",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "create-virtual-service",
|
Name: "create-virtual-service",
|
||||||
Template: "create-virtual-service-resource",
|
Template: "create-virtual-service-resource",
|
||||||
|
Dependencies: []string{"create-service"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "create-stateful-set",
|
Name: "create-stateful-set",
|
||||||
Template: "create-stateful-set-resource",
|
Template: "create-stateful-set-resource",
|
||||||
|
Dependencies: []string{"create-virtual-service"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -201,21 +224,21 @@ func unmarshalWorkflowTemplate(arguments *v1.Arguments, serviceManifest, virtual
|
|||||||
{
|
{
|
||||||
Name: "create-service-resource",
|
Name: "create-service-resource",
|
||||||
Resource: &wfv1.ResourceTemplate{
|
Resource: &wfv1.ResourceTemplate{
|
||||||
Action: "{{workflow.parameters.action}}",
|
Action: "{{workflow.parameters.resource-action}}",
|
||||||
Manifest: serviceManifest,
|
Manifest: serviceManifest,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "create-virtual-service-resource",
|
Name: "create-virtual-service-resource",
|
||||||
Resource: &wfv1.ResourceTemplate{
|
Resource: &wfv1.ResourceTemplate{
|
||||||
Action: "{{workflow.parameters.action}}",
|
Action: "{{workflow.parameters.resource-action}}",
|
||||||
Manifest: virtualServiceManifest,
|
Manifest: virtualServiceManifest,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "create-stateful-set-resource",
|
Name: "create-stateful-set-resource",
|
||||||
Resource: &wfv1.ResourceTemplate{
|
Resource: &wfv1.ResourceTemplate{
|
||||||
Action: "{{workflow.parameters.action}}",
|
Action: "{{workflow.parameters.resource-action}}",
|
||||||
Manifest: containersManifest,
|
Manifest: containersManifest,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -7,11 +7,6 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
workspaceSpecManifest = `
|
workspaceSpecManifest = `
|
||||||
arguments:
|
|
||||||
parameters:
|
|
||||||
- name: description
|
|
||||||
value: description
|
|
||||||
type: textarea.textarea
|
|
||||||
containers:
|
containers:
|
||||||
- name: http
|
- name: http
|
||||||
image: nginxdemos/hello
|
image: nginxdemos/hello
|
||||||
|
|||||||
Reference in New Issue
Block a user