Skip to content

Commit

Permalink
Added unit test and made --pull-policy case insensitive
Browse files Browse the repository at this point in the history
  • Loading branch information
vyasgun committed Apr 11, 2022
1 parent 1b3bd2a commit f8fc7af
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 3 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ require (
knative.dev/networking v0.0.0-20220323170318-55757e9c20d6
knative.dev/pkg v0.0.0-20220325200448-1f7514acd0c2
knative.dev/serving v0.30.1-0.20220328163451-15f7a4e393cc
sigs.k8s.io/kustomize/kyaml v0.13.0
sigs.k8s.io/yaml v1.3.0
)
23 changes: 22 additions & 1 deletion pkg/kn/commands/service/configuration_edit_flags_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,33 @@ package service
import (
"testing"

"gotest.tools/v3/assert"
"knative.dev/client/pkg/kn/commands"
"knative.dev/client/pkg/util"
)

func TestAddCreateFlags(t *testing.T) {
func TestApplyPullPolicyFlag(t *testing.T) {
var editFlags ConfigurationEditFlags
knParams := &commands.KnParams{}
cmd, _, _ := commands.CreateTestKnCommand(NewServiceCreateCommand(knParams), knParams)

editFlags.AddCreateFlags(cmd)
svc := createTestService("test-svc", []string{"test-svc-00001", "test-svc-00002"}, goodConditions())
cmd.SetArgs([]string{"--pull-policy", "Always"})
cmd.Execute()
err := editFlags.Apply(&svc, nil, cmd)
assert.NilError(t, err)
}

func TestApplyPullPolicyFlagError(t *testing.T) {
var editFlags ConfigurationEditFlags
knParams := &commands.KnParams{}
cmd, _, _ := commands.CreateTestKnCommand(NewServiceCreateCommand(knParams), knParams)

editFlags.AddCreateFlags(cmd)
svc := createTestService("test-svc", []string{"test-svc-00001", "test-svc-00002"}, goodConditions())
cmd.SetArgs([]string{"--pull-policy", "InvalidPolicy"})
cmd.Execute()
err := editFlags.Apply(&svc, nil, cmd)
assert.Assert(t, util.ContainsAll(err.Error(), "invalid", "InvalidPolicy", "Valid arguments: Always|Never|IfNotPresent"))
}
22 changes: 20 additions & 2 deletions pkg/serving/config_changes.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (
"knative.dev/serving/pkg/apis/autoscaling"
servingconfig "knative.dev/serving/pkg/apis/config"
servingv1 "knative.dev/serving/pkg/apis/serving/v1"
"sigs.k8s.io/kustomize/kyaml/sliceutil"

"knative.dev/client/pkg/kn/flags"
)
Expand Down Expand Up @@ -225,10 +226,23 @@ func UpdateImagePullPolicy(template *servingv1.RevisionTemplateSpec, imagePullPo
if !isValidPullPolicy(imagePullPolicy) {
return fmt.Errorf("invalid --pull-policy %s. Valid arguments: Always|Never|IfNotPresent", imagePullPolicy)
}
template.Spec.Containers[idx].ImagePullPolicy = v1.PullPolicy(imagePullPolicy)
template.Spec.Containers[idx].ImagePullPolicy = actualPolicy(imagePullPolicy)
return nil
}

func actualPolicy(policy string) v1.PullPolicy {
var ret v1.PullPolicy
switch strings.ToLower(policy) {
case "always":
ret = v1.PullAlways
case "ifnotpresent":
ret = v1.PullIfNotPresent
case "never":
ret = v1.PullNever
}
return ret
}

// =======================================================================================

func updateAnnotations(annotations map[string]string, toUpdate map[string]string, toRemove []string) error {
Expand All @@ -242,5 +256,9 @@ func updateAnnotations(annotations map[string]string, toUpdate map[string]string
}

func isValidPullPolicy(policy string) bool {
return policy == string(v1.PullAlways) || policy == string(v1.PullNever) || policy == string(v1.PullIfNotPresent)
validPolicies := []string{string(v1.PullAlways), string(v1.PullNever), string(v1.PullIfNotPresent)}
for i := range validPolicies {
validPolicies[i] = strings.ToLower(validPolicies[i])
}
return sliceutil.Contains(validPolicies, strings.ToLower(policy))
}
1 change: 1 addition & 0 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -957,6 +957,7 @@ sigs.k8s.io/kustomize/api/resmap
sigs.k8s.io/kustomize/api/resource
sigs.k8s.io/kustomize/api/types
# sigs.k8s.io/kustomize/kyaml v0.13.0
## explicit
sigs.k8s.io/kustomize/kyaml/comments
sigs.k8s.io/kustomize/kyaml/errors
sigs.k8s.io/kustomize/kyaml/ext
Expand Down

0 comments on commit f8fc7af

Please sign in to comment.