additional generated parameters

This commit is contained in:
rushtehrani
2020-04-24 01:31:57 -07:00
parent 4b06855e00
commit 2913362ba9
3 changed files with 42 additions and 23 deletions

View File

@@ -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 {

View File

@@ -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,
}, },
}, },

View File

@@ -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