From 1344e26445008fd21aa69b3f75f517f019161a2f Mon Sep 17 00:00:00 2001 From: davutkarabay <47837266+davutkarabay@users.noreply.github.com> Date: Fri, 28 May 2021 13:30:07 -0700 Subject: [PATCH] Changes for using action parameter of orkestra workflow executor (#230) * Changes for using action parameter of orkestra workflow executor * Base64 encode reverse workflow helm release string * Resolved PR feedback * Rebased with the latest main * Changed action strings to lower-case. Removed ExecutorAction.String() method * 1) Updated executor image tag to v0.3.0 2) Rebased with the latest main Co-authored-by: Davut Karabay --- pkg/workflow/argo.go | 43 +++++++++++++++--------------------------- pkg/workflow/consts.go | 2 +- 2 files changed, 16 insertions(+), 29 deletions(-) diff --git a/pkg/workflow/argo.go b/pkg/workflow/argo.go index df5dbf1..7d4ebfc 100644 --- a/pkg/workflow/argo.go +++ b/pkg/workflow/argo.go @@ -21,6 +21,15 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" ) +const ( + // The set of executor actions which can be performed on a helmrelease object + Install ExecutorAction = "install" + Delete ExecutorAction = "delete" +) + +// ExecutorAction defines the set of executor actions which can be performed on a helmrelease object +type ExecutorAction string + type argo struct { scheme *runtime.Scheme cli client.Client @@ -288,7 +297,7 @@ func (a *argo) generateReverseWorkflow(ctx context.Context, l logr.Logger, nodes Parameters: []v1alpha12.Parameter{ { Name: HelmReleaseArg, - Value: utils.ToStrPtr(utils.HrToYaml(hr)), + Value: utils.ToStrPtr(base64.StdEncoding.EncodeToString([]byte(utils.HrToYaml(hr)))), }, }, }, @@ -306,7 +315,7 @@ func (a *argo) generateReverseWorkflow(ctx context.Context, l logr.Logger, nodes updateWorkflowTemplates(a.rwf, entry) - updateWorkflowTemplates(a.rwf, defaultReverseExecutor()) + updateWorkflowTemplates(a.rwf, defaultExecutor(HelmReleaseReverseExecutorName, Delete)) return nil } @@ -344,7 +353,7 @@ func (a *argo) generateAppGroupTpls(ctx context.Context, g *v1alpha1.Application // TODO: Add the executor template // This should eventually be configurable - updateWorkflowTemplates(a.wf, defaultExecutor()) + updateWorkflowTemplates(a.wf, defaultExecutor(HelmReleaseExecutorName, Install)) return nil } @@ -598,10 +607,10 @@ func updateWorkflowTemplates(wf *v1alpha12.Workflow, tpls ...v1alpha12.Template) wf.Spec.Templates = append(wf.Spec.Templates, tpls...) } -func defaultExecutor() v1alpha12.Template { - executorArgs := []string{"--spec", "{{inputs.parameters.helmrelease}}", "--timeout", "{{inputs.parameters.timeout}}", "--interval", "10s"} +func defaultExecutor(tplName string, action ExecutorAction) v1alpha12.Template { + executorArgs := []string{"--spec", "{{inputs.parameters.helmrelease}}", "--action", string(action), "--timeout", "{{inputs.parameters.timeout}}", "--interval", "10s"} return v1alpha12.Template{ - Name: HelmReleaseExecutorName, + Name: tplName, ServiceAccountName: workflowServiceAccountName(), Inputs: v1alpha12.Inputs{ Parameters: []v1alpha12.Parameter{ @@ -626,28 +635,6 @@ func defaultExecutor() v1alpha12.Template { } } -func defaultReverseExecutor() v1alpha12.Template { - return v1alpha12.Template{ - Name: HelmReleaseReverseExecutorName, - ServiceAccountName: workflowServiceAccountName(), - Inputs: v1alpha12.Inputs{ - Parameters: []v1alpha12.Parameter{ - { - Name: "helmrelease", - }, - }, - }, - Executor: &v1alpha12.ExecutorConfig{ - ServiceAccountName: workflowServiceAccountName(), - }, - Resource: &v1alpha12.ResourceTemplate{ - // SetOwnerReference: true, - Action: "delete", - Manifest: "{{inputs.parameters.helmrelease}}", - }, - } -} - func generateSubchartHelmRelease(a v1alpha1.Application, appName, scName, version, repo, targetNS string, isStaged bool) (*fluxhelmv2beta1.HelmRelease, error) { hr := &fluxhelmv2beta1.HelmRelease{ TypeMeta: v1.TypeMeta{ diff --git a/pkg/workflow/consts.go b/pkg/workflow/consts.go index 07b7d4c..eef5adb 100644 --- a/pkg/workflow/consts.go +++ b/pkg/workflow/consts.go @@ -15,7 +15,7 @@ const ( ExecutorName = "executor" ExecutorImage = "azureorkestra/executor" - ExecutorImageTag = "v0.2.0" + ExecutorImageTag = "v0.3.0" ChartMuseumName = "chartmuseum" )