From 16d3ff372f38194d420c9ea542d4c9a84b2c0f13 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 16:08:03 -0300 Subject: [PATCH 1/6] add ibm and minikube to distribution analyzer --- pkg/analyze/distribution.go | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/pkg/analyze/distribution.go b/pkg/analyze/distribution.go index 9d9afa8b..3d933839 100644 --- a/pkg/analyze/distribution.go +++ b/pkg/analyze/distribution.go @@ -19,6 +19,8 @@ type providers struct { openShift bool kurl bool aks bool + ibm bool + minikube bool } type Provider int @@ -33,6 +35,8 @@ const ( openShift Provider = iota kurl Provider = iota aks Provider = iota + ibm Provider = iota + minikube Provider = iota ) func CheckOpenShift(foundProviders *providers, apiResources []*metav1.APIResourceList, provider string) string { @@ -68,6 +72,10 @@ func ParseNodesForProviders(nodes []corev1.Node) (providers, string) { foundProviders.aks = true stringProvider = "aks" } + if k == "minikube.k8s.io/version" { + foundProviders.minikube = true + stringProvider = "minikube" + } } if node.Status.NodeInfo.OSImage == "Docker Desktop" { @@ -87,6 +95,10 @@ func ParseNodesForProviders(nodes []corev1.Node) (providers, string) { foundProviders.gke = true stringProvider = "gke" } + if strings.HasPrefix(node.Spec.ProviderID, "ibm:") { + foundProviders.ibm = true + stringProvider = "ibm" + } } if foundMaster { @@ -153,7 +165,6 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte result.IsFail = true result.Message = outcome.Fail.Message result.URI = outcome.Fail.URI - return result, nil } } else if outcome.Warn != nil { @@ -202,6 +213,10 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte } } + if !result.IsFail && !result.IsPass && !result.IsWarn { + result.IsWarn = true + result.Message = "None of the conditionals was met" + } return result, nil } @@ -244,6 +259,10 @@ func compareDistributionConditionalToActual(conditional string, actual providers isMatch = actual.kurl case aks: isMatch = actual.aks + case ibm: + isMatch = actual.ibm + case minikube: + isMatch = actual.minikube } switch parts[0] { @@ -274,6 +293,10 @@ func mustNormalizeDistributionName(raw string) Provider { return kurl case "aks": return aks + case "ibm", "ibmcloud", "ibm cloud": + return ibm + case "minikube": + return minikube } return unknown From e3c954f460baf14c99a6fc83821900d9f131cd20 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 16:17:47 -0300 Subject: [PATCH 2/6] add ibm and minikube to distribution analyzer --- pkg/analyze/distribution.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/analyze/distribution.go b/pkg/analyze/distribution.go index 3d933839..0fb8b048 100644 --- a/pkg/analyze/distribution.go +++ b/pkg/analyze/distribution.go @@ -165,6 +165,7 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte result.IsFail = true result.Message = outcome.Fail.Message result.URI = outcome.Fail.URI + return result, nil } } else if outcome.Warn != nil { @@ -215,7 +216,7 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte if !result.IsFail && !result.IsPass && !result.IsWarn { result.IsWarn = true - result.Message = "None of the conditionals was met" + result.Message = "None of the conditionals were met" } return result, nil } From 74a7e5f19ca9813b197d7a288637753971b3ccb6 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 16:31:52 -0300 Subject: [PATCH 3/6] add ibm and minikube to distribution analyzer --- pkg/analyze/distribution.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pkg/analyze/distribution.go b/pkg/analyze/distribution.go index 0fb8b048..3f70fb82 100644 --- a/pkg/analyze/distribution.go +++ b/pkg/analyze/distribution.go @@ -214,10 +214,9 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte } } - if !result.IsFail && !result.IsPass && !result.IsWarn { - result.IsWarn = true - result.Message = "None of the conditionals were met" - } + result.IsWarn = true + result.Message = "None of the conditionals were met" + return result, nil } From bfa50c96435a3afb2b2cb41e05817ace2f46d6b5 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 17:32:41 -0300 Subject: [PATCH 4/6] add ibm and minikube to distribution analyzer --- pkg/analyze/distribution.go | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/pkg/analyze/distribution.go b/pkg/analyze/distribution.go index 3f70fb82..ca0c61c0 100644 --- a/pkg/analyze/distribution.go +++ b/pkg/analyze/distribution.go @@ -2,6 +2,7 @@ package analyzer import ( "encoding/json" + "fmt" "strings" "github.com/pkg/errors" @@ -113,6 +114,7 @@ func ParseNodesForProviders(nodes []corev1.Node) (providers, string) { } func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollectedFileContents func(string) ([]byte, error)) (*AnalyzeResult, error) { + var unknownDistribution string collected, err := getCollectedFileContents("cluster-resources/nodes.json") if err != nil { return nil, errors.Wrap(err, "failed to get contents of nodes.json") @@ -156,7 +158,7 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte return result, nil } - isMatch, err := compareDistributionConditionalToActual(outcome.Fail.When, foundProviders) + isMatch, err := compareDistributionConditionalToActual(outcome.Fail.When, foundProviders, &unknownDistribution) if err != nil { return result, errors.Wrap(err, "failed to compare distribution conditional") } @@ -177,7 +179,7 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte return result, nil } - isMatch, err := compareDistributionConditionalToActual(outcome.Warn.When, foundProviders) + isMatch, err := compareDistributionConditionalToActual(outcome.Warn.When, foundProviders, &unknownDistribution) if err != nil { return result, errors.Wrap(err, "failed to compare distribution conditional") } @@ -198,7 +200,7 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte return result, nil } - isMatch, err := compareDistributionConditionalToActual(outcome.Pass.When, foundProviders) + isMatch, err := compareDistributionConditionalToActual(outcome.Pass.When, foundProviders, &unknownDistribution) if err != nil { return result, errors.Wrap(err, "failed to compare distribution conditional") } @@ -213,14 +215,19 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte } } + if unknownDistribution != "" { + result.IsWarn = true + result.Message = result.Message + unknownDistribution - result.IsWarn = true - result.Message = "None of the conditionals were met" + } else { + result.IsWarn = true + result.Message = "None of the conditionals were met" + } return result, nil } -func compareDistributionConditionalToActual(conditional string, actual providers) (bool, error) { +func compareDistributionConditionalToActual(conditional string, actual providers, unknownDistribution *string) (bool, error) { parts := strings.Split(strings.TrimSpace(conditional), " ") // we can make this a lot more flexible @@ -238,6 +245,7 @@ func compareDistributionConditionalToActual(conditional string, actual providers normalizedName := mustNormalizeDistributionName(parts[1]) if normalizedName == unknown { + *unknownDistribution = *unknownDistribution + fmt.Sprintf("- Unknown distribution: %s ", parts[1]) return false, nil } From 74c9ff2432b512f7555d91cfb5382f263a8345a3 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 17:36:27 -0300 Subject: [PATCH 5/6] add ibm and minikube to distribution analyzer --- pkg/analyze/distribution.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pkg/analyze/distribution.go b/pkg/analyze/distribution.go index ca0c61c0..d8462370 100644 --- a/pkg/analyze/distribution.go +++ b/pkg/analyze/distribution.go @@ -215,12 +215,11 @@ func analyzeDistribution(analyzer *troubleshootv1beta2.Distribution, getCollecte } } - if unknownDistribution != "" { - result.IsWarn = true - result.Message = result.Message + unknownDistribution + result.IsWarn = true + if unknownDistribution != "" { + result.Message = unknownDistribution } else { - result.IsWarn = true result.Message = "None of the conditionals were met" } @@ -245,7 +244,7 @@ func compareDistributionConditionalToActual(conditional string, actual providers normalizedName := mustNormalizeDistributionName(parts[1]) if normalizedName == unknown { - *unknownDistribution = *unknownDistribution + fmt.Sprintf("- Unknown distribution: %s ", parts[1]) + *unknownDistribution += fmt.Sprintf("- Unknown distribution: %s ", parts[1]) return false, nil } From 0ea4e1d52f231443a28ed9e915ebb4ffe958f570 Mon Sep 17 00:00:00 2001 From: Matias Manavella Date: Tue, 22 Sep 2020 18:10:28 -0300 Subject: [PATCH 6/6] distribution_test fixed --- pkg/analyze/distribution_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/analyze/distribution_test.go b/pkg/analyze/distribution_test.go index 42de3de0..684ee7ed 100644 --- a/pkg/analyze/distribution_test.go +++ b/pkg/analyze/distribution_test.go @@ -9,6 +9,7 @@ import ( ) func Test_compareDistributionConditionalToActual(t *testing.T) { + var unknownDistribution string tests := []struct { name string conditional string @@ -46,7 +47,7 @@ func Test_compareDistributionConditionalToActual(t *testing.T) { defer scopetest.End() req := require.New(t) - actual, err := compareDistributionConditionalToActual(test.conditional, test.input) + actual, err := compareDistributionConditionalToActual(test.conditional, test.input, &unknownDistribution) req.NoError(err) assert.Equal(t, test.expected, actual)