From 86981e0d6d62696a8145e79a77a45026b7d3ab9c Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Wed, 20 Nov 2019 11:21:37 -0500 Subject: [PATCH 01/16] Changed log.info to tidy up using fmt.sprintf --- pkg/ansible/watches/watches.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 1835712a4d2..6647f49e979 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -275,7 +275,8 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { // we don't care why we couldn't parse it just use default - log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + log.Info(fmt.Sprintf("Using default value for workers %d", defValue)) return defValue } @@ -297,7 +298,9 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { )) ansibleVerbosity, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { - log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + log.Info(fmt.Sprintf("Using default value for ansible verbosity %d", defValue)) + return defValue } From 894f3cf39f23f396c645b56084f650b13b6a0e5f Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 21 Nov 2019 10:31:59 -0500 Subject: [PATCH 02/16] maxWorkers logic added for log.info --- pkg/ansible/watches/watches.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 6647f49e979..6eba4d5c5dc 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -272,7 +272,7 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) + /*maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { // we don't care why we couldn't parse it just use default //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) @@ -283,6 +283,15 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { if maxWorkers <= 0 { log.Info("Value %v not valid. Using default %v", maxWorkers, defValue) return defValue + }*/ + maxWorkers := defValue + if val, ok := os.LookupEnv(envVar); ok { + if i, err := strconv.Atoi(val); err != nil { + log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for maxWorkers %d", envVar, defValue)) + + } else { + maxWorkers = i + } } return maxWorkers } @@ -298,9 +307,7 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { )) ansibleVerbosity, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { - //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) - log.Info(fmt.Sprintf("Using default value for ansible verbosity %d", defValue)) - + log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for the ansible verbosity %d", envVar, defValue)) return defValue } From 3d06649f652e9e90e7010827a8e49ed72dd078e7 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Wed, 20 Nov 2019 11:21:37 -0500 Subject: [PATCH 03/16] Changed log.info to tidy up using fmt.sprintf --- pkg/ansible/watches/watches.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 1835712a4d2..6647f49e979 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -275,7 +275,8 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { // we don't care why we couldn't parse it just use default - log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + log.Info(fmt.Sprintf("Using default value for workers %d", defValue)) return defValue } @@ -297,7 +298,9 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { )) ansibleVerbosity, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { - log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) + log.Info(fmt.Sprintf("Using default value for ansible verbosity %d", defValue)) + return defValue } From 2fed3b39d977815432275d3f18ac0fe76b51b08e Mon Sep 17 00:00:00 2001 From: Austin Macdonald Date: Wed, 20 Nov 2019 11:22:08 -0500 Subject: [PATCH 04/16] leader election bugfix: Delete evicted leader pods (#2210) * leader election bugfix: Delete evicted leader pods Before this patch, when the leader pod is hard evicted but not deleted the leader lock configmap is not garbage collected and subsequent operator pods can never become leader. With this patch, an operator attempting to become the leader is able to delete evicted leader pods triggering garbage collection and allowing leader election to continue. Sometimes, evicted operator pods will remain, even with this patch. This occurs when the leader operator pod is evicted and a new operator pod is created on the same node. In this case, the new pod will also be evicted. When an operator pod is created on a non-failing node, leader election will delete only the evicted leader pod, leaving any evicted operator pods that were not the leader. To replicate the evicted state, I used a `kind` cluster with 2 worker nodes with altered kubelet configuration and a memory-hog version of the memcached operator. See the [altered operator docs](https://github.com/asmacdo/go-memcahced-operator/blob/explosive-operator/README.md) --- pkg/leader/leader.go | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/pkg/leader/leader.go b/pkg/leader/leader.go index 7baad819438..48a62b8ae52 100644 --- a/pkg/leader/leader.go +++ b/pkg/leader/leader.go @@ -109,7 +109,35 @@ func Become(ctx context.Context, lockName string) error { log.Info("Became the leader.") return nil case apierrors.IsAlreadyExists(err): - log.Info("Not the leader. Waiting.") + existingOwners := existing.GetOwnerReferences() + switch { + case len(existingOwners) != 1: + log.Info("Leader lock configmap must have exactly one owner reference.", "ConfigMap", existing) + case existingOwners[0].Kind != "Pod": + log.Info("Leader lock configmap owner reference must be a pod.", "OwnerReference", existingOwners[0]) + default: + leaderPod := &corev1.Pod{} + key = crclient.ObjectKey{Namespace: ns, Name: existingOwners[0].Name} + err = client.Get(ctx, key, leaderPod) + switch { + case apierrors.IsNotFound(err): + log.Info("Leader pod has been deleted, waiting for garbage collection do remove the lock.") + case err != nil: + return err + case isPodEvicted(*leaderPod) && leaderPod.GetDeletionTimestamp() == nil: + log.Info("Operator pod with leader lock has been evicted.", "leader", leaderPod.Name) + log.Info("Deleting evicted leader.") + // Pod may not delete immediately, continue with backoff + err := client.Delete(ctx, leaderPod) + if err != nil { + log.Error(err, "Leader pod could not be deleted.") + } + + default: + log.Info("Not the leader. Waiting.") + } + } + select { case <-time.After(wait.Jitter(backoff, .2)): if backoff < maxBackoffInterval { @@ -143,3 +171,9 @@ func myOwnerRef(ctx context.Context, client crclient.Client, ns string) (*metav1 } return owner, nil } + +func isPodEvicted(pod corev1.Pod) bool { + podFailed := pod.Status.Phase == corev1.PodFailed + podEvicted := pod.Status.Reason == "Evicted" + return podFailed && podEvicted +} From d34bf29a0ca603211969bed39e5cb3c819324640 Mon Sep 17 00:00:00 2001 From: Camila Macedo Date: Thu, 21 Nov 2019 15:30:42 +0000 Subject: [PATCH 05/16] feat(linter) : add goconst check and fix issues (#2236) --- hack/go-linter.sh | 2 +- internal/scaffold/olm-catalog/csv_test.go | 19 ++++++++----------- internal/scorecard/plugins/olm_tests.go | 22 ++++++++++++++-------- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/hack/go-linter.sh b/hack/go-linter.sh index 87820d32d6b..6495fd022d1 100755 --- a/hack/go-linter.sh +++ b/hack/go-linter.sh @@ -9,13 +9,13 @@ header_text "Running golangci-lint" golangci-lint run --disable-all \ --deadline 5m \ --enable=nakedret \ + --enable=goconst \ ##todo(camilamacedo86): The following checks requires fixes in the code # --enable=golint # --enable=gocyclo # --enable=goimports # --enable=lll -# --enable=goconst # --enable=gosec # --enable=maligned # --enable=deadcode \ diff --git a/internal/scaffold/olm-catalog/csv_test.go b/internal/scaffold/olm-catalog/csv_test.go index 3eab368a5ba..f350b58e589 100644 --- a/internal/scaffold/olm-catalog/csv_test.go +++ b/internal/scaffold/olm-catalog/csv_test.go @@ -36,7 +36,14 @@ import ( appsv1 "k8s.io/api/apps/v1" ) -const testDataDir = "testdata" +const ( + testDataDir = "testdata" + projectName = "app-operator-dir" + operatorName = "app-operator" + oldCSVVer = "0.1.0" + newCSVVer = "0.2.0" + csvVer = "0.1.0" +) var testDeployDir = filepath.Join(testDataDir, scaffold.DeployDir) @@ -47,9 +54,6 @@ func TestCSVNew(t *testing.T) { return buf, nil }, } - csvVer := "0.1.0" - projectName := "app-operator-dir" - operatorName := "app-operator" sc := &CSV{CSVVersion: csvVer, pathPrefix: testDataDir, OperatorName: operatorName} err := s.Execute(&input.Config{ProjectName: projectName}, sc) @@ -71,9 +75,6 @@ func TestCSVNew(t *testing.T) { func TestCSVFromOld(t *testing.T) { s := &scaffold.Scaffold{Fs: afero.NewMemMapFs()} - projectName := "app-operator-dir" - operatorName := "app-operator" - oldCSVVer, newCSVVer := "0.1.0", "0.2.0" // Write all files in testdata/deploy to fs so manifests are present when // writing a new CSV. @@ -113,10 +114,6 @@ func TestCSVFromOld(t *testing.T) { } func TestUpdateVersion(t *testing.T) { - projectName := "app-operator-dir" - operatorName := "app-operator" - - oldCSVVer, newCSVVer := "0.1.0", "0.2.0" sc := &CSV{ Input: input.Input{ProjectName: projectName}, CSVVersion: newCSVVer, diff --git a/internal/scorecard/plugins/olm_tests.go b/internal/scorecard/plugins/olm_tests.go index 0a9372e081c..1c9873197c6 100644 --- a/internal/scorecard/plugins/olm_tests.go +++ b/internal/scorecard/plugins/olm_tests.go @@ -274,6 +274,8 @@ func (t *CRDsHaveResourcesTest) Run(ctx context.Context) *schelpers.TestResult { } func getUsedResources(proxyPod *v1.Pod) ([]schema.GroupVersionKind, error) { + const api = "api" + const apis = "apis" logs, err := getProxyLogs(proxyPod) if err != nil { return nil, err @@ -322,38 +324,42 @@ func getUsedResources(proxyPod *v1.Pod) ([]schema.GroupVersionKind, error) { splitURI = splitURI[1:] switch len(splitURI) { case 3: - if splitURI[0] == "api" { + if splitURI[0] == api { resources[schema.GroupVersionKind{Version: splitURI[1], Kind: splitURI[2]}] = true break - } else if splitURI[0] == "apis" { + } + if splitURI[0] == apis { // this situation happens when the client enumerates the available resources of the server // Example: "/apis/apps/v1?timeout=32s" break } log.Warnf("Invalid URI: \"%s\"", uri) case 4: - if splitURI[0] == "api" { + if splitURI[0] == api { resources[schema.GroupVersionKind{Version: splitURI[1], Kind: splitURI[2]}] = true break - } else if splitURI[0] == "apis" { + } + if splitURI[0] == apis { resources[schema.GroupVersionKind{Group: splitURI[1], Version: splitURI[2], Kind: splitURI[3]}] = true break } log.Warnf("Invalid URI: \"%s\"", uri) case 5: - if splitURI[0] == "api" { + if splitURI[0] == api { resources[schema.GroupVersionKind{Version: splitURI[1], Kind: splitURI[4]}] = true break - } else if splitURI[0] == "apis" { + } + if splitURI[0] == apis { resources[schema.GroupVersionKind{Group: splitURI[1], Version: splitURI[2], Kind: splitURI[3]}] = true break } log.Warnf("Invalid URI: \"%s\"", uri) case 6, 7: - if splitURI[0] == "api" { + if splitURI[0] == api { resources[schema.GroupVersionKind{Version: splitURI[1], Kind: splitURI[4]}] = true break - } else if splitURI[0] == "apis" { + } + if splitURI[0] == apis { resources[schema.GroupVersionKind{Group: splitURI[1], Version: splitURI[2], Kind: splitURI[5]}] = true break } From 681e441d085350aceec8104d6e5429926b1c439d Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 21 Nov 2019 10:31:59 -0500 Subject: [PATCH 06/16] maxWorkers logic added for log.info --- pkg/ansible/watches/watches.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 6647f49e979..6eba4d5c5dc 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -272,7 +272,7 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) + /*maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { // we don't care why we couldn't parse it just use default //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) @@ -283,6 +283,15 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { if maxWorkers <= 0 { log.Info("Value %v not valid. Using default %v", maxWorkers, defValue) return defValue + }*/ + maxWorkers := defValue + if val, ok := os.LookupEnv(envVar); ok { + if i, err := strconv.Atoi(val); err != nil { + log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for maxWorkers %d", envVar, defValue)) + + } else { + maxWorkers = i + } } return maxWorkers } @@ -298,9 +307,7 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { )) ansibleVerbosity, err := strconv.Atoi(os.Getenv(envVar)) if err != nil { - //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) - log.Info(fmt.Sprintf("Using default value for ansible verbosity %d", defValue)) - + log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for the ansible verbosity %d", envVar, defValue)) return defValue } From bd4d60a7a48df05a1b286a061a1c3d1d6eab568c Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 21 Nov 2019 11:35:47 -0500 Subject: [PATCH 07/16] logic added --- pkg/ansible/watches/watches.go | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 6eba4d5c5dc..46dd39e4c51 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -272,23 +272,10 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - /*maxWorkers, err := strconv.Atoi(os.Getenv(envVar)) - if err != nil { - // we don't care why we couldn't parse it just use default - //log.Info("Failed to parse %v from environment. Using default %v", envVar, defValue) - log.Info(fmt.Sprintf("Using default value for workers %d", defValue)) - return defValue - } - - if maxWorkers <= 0 { - log.Info("Value %v not valid. Using default %v", maxWorkers, defValue) - return defValue - }*/ maxWorkers := defValue if val, ok := os.LookupEnv(envVar); ok { if i, err := strconv.Atoi(val); err != nil { log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for maxWorkers %d", envVar, defValue)) - } else { maxWorkers = i } From d3870fd5cfbd2cbd1cb3d78adb6f8f013be04b06 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 21 Nov 2019 12:04:08 -0500 Subject: [PATCH 08/16] 2246 PR log addedin CHANGELOG file --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17a04bf104d..e5b85ed029e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ ### Removed ### Bug Fixes +- Changed watches.go to fix log.Info to modify message,and maxWorkers logic ([#2246](https://github.com/operator-framework/operator-sdk/pull/2246/files)) ## v0.12.0 From e2fc7998e630f8c5d4bc1d87ae9b93e37549e859 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Wed, 4 Dec 2019 04:52:03 -0500 Subject: [PATCH 09/16] Added getIntegerEnvWithDefault func --- pkg/ansible/watches/watches.go | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 46dd39e4c51..5841b90d9b3 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -272,14 +272,7 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - maxWorkers := defValue - if val, ok := os.LookupEnv(envVar); ok { - if i, err := strconv.Atoi(val); err != nil { - log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for maxWorkers %d", envVar, defValue)) - } else { - maxWorkers = i - } - } + maxWorkers := getIntegerEnvWithDefault(envVar, defValue) return maxWorkers } @@ -292,11 +285,8 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - ansibleVerbosity, err := strconv.Atoi(os.Getenv(envVar)) - if err != nil { - log.Info(fmt.Sprintf("Unable to find a value for %v. Using default value for the ansible verbosity %d", envVar, defValue)) - return defValue - } + + ansibleVerbosity := getIntegerEnvWithDefault(envVar, defValue) // Use default value when value doesn't make sense if ansibleVerbosity < 0 { @@ -309,3 +299,19 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { } return ansibleVerbosity } + +// Returns value for MaxWorkers/Ansibleverbosity based on if envVar is set or a defvalue is used. +func getIntegerEnvWithDefault(envVar string, defValue int) int { + val := defValue + if envVal, ok := os.LookupEnv(envVar); ok { + if i, err := strconv.Atoi(envVal); err != nil { + log.Info("could not parse environment variable as an integer; using default value", "envVar", envVar, "default", defValue) + + } else { + val = i + } + } else if ok==false { + log.Info("environment variable not set; using default value", "envVar", envVar, "default", defValue) + } + return val +} From fa18fa6e29fbeeece3203d6bc793745283133198 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Wed, 4 Dec 2019 04:55:27 -0500 Subject: [PATCH 10/16] Added CHANGELOG comment for PR2246 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71b69847c78..42455df58be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,7 @@ ### Removed ### Bug Fixes -- Changed watches.go to fix log.Info to modify message,and maxWorkers logic ([#2246](https://github.com/operator-framework/operator-sdk/pull/2246/files)) +- Fixed log formatting issue that occurred while loading the configuration for Ansible-based operators. ([#2246](https://github.com/operator-framework/operator-sdk/pull/2246)) - Fix issue faced in the Ansible based operators when `jmespath` queries are used because it was not installed. ([#2252](https://github.com/operator-framework/operator-sdk/pull/2252)) ## v0.12.0 From 155020f09ff4be877794c014bb523f04ea579eae Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Wed, 4 Dec 2019 10:43:12 -0500 Subject: [PATCH 11/16] Restored Go.mod with upstream --- go.mod | 1 - 1 file changed, 1 deletion(-) diff --git a/go.mod b/go.mod index b6d2f665fe5..1e425f54fae 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,6 @@ require ( github.com/ziutek/mymysql v1.5.4 // indirect go.uber.org/zap v1.10.0 golang.org/x/tools v0.0.0-20191018212557-ed542cd5b28a - google.golang.org/genproto v0.0.0-20181016170114-94acd270e44e // indirect gopkg.in/gorp.v1 v1.7.2 // indirect gopkg.in/yaml.v2 v2.2.4 k8s.io/api v0.0.0 From 24d80f58f4eb74194d5671e9ddefaeed8fba9eb0 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 5 Dec 2019 10:31:07 -0500 Subject: [PATCH 12/16] Removed empty lines, ok==false changed --- go.mod | 2 +- go.sum | 2 ++ pkg/ansible/watches/watches.go | 5 +---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 1e425f54fae..049e3507cd1 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.uber.org/zap v1.10.0 golang.org/x/tools v0.0.0-20191018212557-ed542cd5b28a gopkg.in/gorp.v1 v1.7.2 // indirect - gopkg.in/yaml.v2 v2.2.4 + gopkg.in/yaml.v2 v2.2.7 k8s.io/api v0.0.0 k8s.io/apiextensions-apiserver v0.0.0 k8s.io/apimachinery v0.0.0 diff --git a/go.sum b/go.sum index d323a0759fe..5e143c6d38e 100644 --- a/go.sum +++ b/go.sum @@ -872,6 +872,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 5841b90d9b3..ba4debb9e6e 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -285,9 +285,7 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { "_", -1, )) - ansibleVerbosity := getIntegerEnvWithDefault(envVar, defValue) - // Use default value when value doesn't make sense if ansibleVerbosity < 0 { log.Info("Value %v not valid. Using default %v", ansibleVerbosity, defValue) @@ -306,11 +304,10 @@ func getIntegerEnvWithDefault(envVar string, defValue int) int { if envVal, ok := os.LookupEnv(envVar); ok { if i, err := strconv.Atoi(envVal); err != nil { log.Info("could not parse environment variable as an integer; using default value", "envVar", envVar, "default", defValue) - } else { val = i } - } else if ok==false { + } else if !ok { log.Info("environment variable not set; using default value", "envVar", envVar, "default", defValue) } return val From 10fae312418238c0c3c62659d9b346236ea4e6d5 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Thu, 5 Dec 2019 10:34:39 -0500 Subject: [PATCH 13/16] Restored go.mod, and go.sum --- go.mod | 2 +- go.sum | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 049e3507cd1..1e425f54fae 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.uber.org/zap v1.10.0 golang.org/x/tools v0.0.0-20191018212557-ed542cd5b28a gopkg.in/gorp.v1 v1.7.2 // indirect - gopkg.in/yaml.v2 v2.2.7 + gopkg.in/yaml.v2 v2.2.4 k8s.io/api v0.0.0 k8s.io/apiextensions-apiserver v0.0.0 k8s.io/apimachinery v0.0.0 diff --git a/go.sum b/go.sum index 5e143c6d38e..d323a0759fe 100644 --- a/go.sum +++ b/go.sum @@ -872,8 +872,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20190905181640-827449938966/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= From 59819b5b1b9b9272f8a01917e363d80270048e1c Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Fri, 6 Dec 2019 09:40:48 -0500 Subject: [PATCH 14/16] Fixed case for Log messages --- pkg/ansible/watches/watches.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index ba4debb9e6e..b76792d3239 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -298,17 +298,17 @@ func getAnsibleVerbosity(gvk schema.GroupVersionKind, defValue int) int { return ansibleVerbosity } -// Returns value for MaxWorkers/Ansibleverbosity based on if envVar is set or a defvalue is used. +// getIntegerEnvWithDefault returns value for MaxWorkers/Ansibleverbosity based on if envVar is set or a defvalue is used. func getIntegerEnvWithDefault(envVar string, defValue int) int { val := defValue if envVal, ok := os.LookupEnv(envVar); ok { if i, err := strconv.Atoi(envVal); err != nil { - log.Info("could not parse environment variable as an integer; using default value", "envVar", envVar, "default", defValue) + log.Info("Could not parse environment variable as an integer; using default value", "envVar", envVar, "default", defValue) } else { val = i } } else if !ok { - log.Info("environment variable not set; using default value", "envVar", envVar, "default", defValue) + log.Info("Environment variable not set; using default value", "envVar", envVar, "default", defValue) } return val } From f2c7fd3a3a5d49e9c63394e905d0d83c1e71ff69 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Fri, 6 Dec 2019 11:29:14 -0500 Subject: [PATCH 15/16] Ran make format --- pkg/ansible/watches/watches.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index b76792d3239..1ca53f17ca3 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -308,7 +308,7 @@ func getIntegerEnvWithDefault(envVar string, defValue int) int { val = i } } else if !ok { - log.Info("Environment variable not set; using default value", "envVar", envVar, "default", defValue) + log.Info("Environment variable not set; using default value", "envVar", envVar, "default", defValue) } - return val + return val } From d9066111e72d086f434c66788ea4f3921b302926 Mon Sep 17 00:00:00 2001 From: Bharathi Tenneti Date: Mon, 9 Dec 2019 10:41:50 -0500 Subject: [PATCH 16/16] maxWorkers<=0 check added --- pkg/ansible/watches/watches.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/ansible/watches/watches.go b/pkg/ansible/watches/watches.go index 1ca53f17ca3..c531f49c409 100644 --- a/pkg/ansible/watches/watches.go +++ b/pkg/ansible/watches/watches.go @@ -273,6 +273,10 @@ func getMaxWorkers(gvk schema.GroupVersionKind, defValue int) int { -1, )) maxWorkers := getIntegerEnvWithDefault(envVar, defValue) + if maxWorkers <= 0 { + log.Info("Value %v not valid. Using default %v", maxWorkers, defValue) + return defValue + } return maxWorkers }