This is an automated email from the ASF dual-hosted git repository.

tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 817435064a2a8e83a33903074614d3472e680c16
Author: Tadayoshi Sato <sato.tadayo...@gmail.com>
AuthorDate: Thu Jul 14 16:52:48 2022 +0900

    chore(lint): fix forcetypeassert
---
 addons/threescale/3scale_test.go      | 12 ++++++------
 addons/tracing/tracing_test.go        |  5 +++--
 cmd/util/json-schema-gen/main.go      | 14 ++++++++++----
 pkg/client/apply.go                   |  3 ++-
 pkg/cmd/operator/operator.go          |  3 ++-
 pkg/controller/integration/kits.go    | 12 +++++++++++-
 pkg/controller/integration/monitor.go | 18 +++++++++++++++---
 pkg/install/kamelets.go               |  3 ++-
 pkg/trait/openapi.go                  | 16 ++++++++++------
 pkg/trait/pdb_test.go                 |  4 ++--
 pkg/trait/prometheus.go               |  6 ++++--
 pkg/trait/route.go                    |  7 ++++---
 pkg/trait/trait_configure_test.go     | 27 +++++++++++++++++----------
 pkg/trait/trait_types.go              | 15 +++++++++------
 pkg/util/source/inspector_yaml.go     |  4 +++-
 15 files changed, 100 insertions(+), 49 deletions(-)

diff --git a/addons/threescale/3scale_test.go b/addons/threescale/3scale_test.go
index 02ec57c3f..a6c7f4b9a 100644
--- a/addons/threescale/3scale_test.go
+++ b/addons/threescale/3scale_test.go
@@ -27,6 +27,7 @@ import (
        "github.com/stretchr/testify/assert"
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+       "k8s.io/utils/pointer"
 )
 
 func TestThreeScaleDisabled(t *testing.T) {
@@ -46,8 +47,8 @@ func TestThreeScaleDisabled(t *testing.T) {
 func TestThreeScaleInjection(t *testing.T) {
        svc, e := createEnvironment(t)
        threeScale := NewThreeScaleTrait()
-       enabled := true
-       threeScale.(*threeScaleTrait).Enabled = &enabled
+       tst, _ := threeScale.(*threeScaleTrait)
+       tst.Enabled = pointer.Bool(true)
        ok, err := threeScale.Configure(e)
        assert.Nil(t, err)
        assert.True(t, ok)
@@ -65,10 +66,9 @@ func TestThreeScaleInjection(t *testing.T) {
 func TestThreeScaleInjectionNoAPIPath(t *testing.T) {
        svc, e := createEnvironment(t)
        threeScale := NewThreeScaleTrait()
-       enabled := true
-       threeScale.(*threeScaleTrait).Enabled = &enabled
-       noPath := ""
-       threeScale.(*threeScaleTrait).DescriptionPath = &noPath
+       tst, _ := threeScale.(*threeScaleTrait)
+       tst.Enabled = pointer.Bool(true)
+       tst.DescriptionPath = pointer.String("")
        ok, err := threeScale.Configure(e)
        assert.Nil(t, err)
        assert.True(t, ok)
diff --git a/addons/tracing/tracing_test.go b/addons/tracing/tracing_test.go
index fbbb5bd56..3c5663c10 100644
--- a/addons/tracing/tracing_test.go
+++ b/addons/tracing/tracing_test.go
@@ -33,8 +33,9 @@ import (
 func TestTracingTraitOnQuarkus(t *testing.T) {
        e := createEnvironment(t, camel.QuarkusCatalog)
        tracing := NewTracingTrait()
-       tracing.(*tracingTrait).Enabled = pointer.Bool(true)
-       tracing.(*tracingTrait).Endpoint = "http://endpoint3";
+       tt, _ := tracing.(*tracingTrait)
+       tt.Enabled = pointer.Bool(true)
+       tt.Endpoint = "http://endpoint3";
        ok, err := tracing.Configure(e)
        assert.Nil(t, err)
        assert.True(t, ok)
diff --git a/cmd/util/json-schema-gen/main.go b/cmd/util/json-schema-gen/main.go
index 098274e4a..11c1e3666 100644
--- a/cmd/util/json-schema-gen/main.go
+++ b/cmd/util/json-schema-gen/main.go
@@ -112,11 +112,17 @@ func rebaseRefs(schema map[string]interface{}) {
                case k == "$ref" && reflect.TypeOf(v).Kind() == reflect.String:
                        schema[k] = remapRef(fmt.Sprintf("%v", v))
                case reflect.TypeOf(v).Kind() == reflect.Map:
-                       rebaseRefs(v.(map[string]interface{}))
+                       if m, ok := v.(map[string]interface{}); ok {
+                               rebaseRefs(m)
+                       }
                case reflect.TypeOf(v).Kind() == reflect.Slice:
-                       for _, vv := range v.([]interface{}) {
-                               if reflect.TypeOf(vv).Kind() == reflect.Map {
-                                       rebaseRefs(vv.(map[string]interface{}))
+                       if vs, ok := v.([]interface{}); ok {
+                               for _, vv := range vs {
+                                       if reflect.TypeOf(vv).Kind() == 
reflect.Map {
+                                               if m, ok := 
vv.(map[string]interface{}); ok {
+                                                       rebaseRefs(m)
+                                               }
+                                       }
                                }
                        }
                }
diff --git a/pkg/client/apply.go b/pkg/client/apply.go
index 2a63bc20a..ae6815cfc 100644
--- a/pkg/client/apply.go
+++ b/pkg/client/apply.go
@@ -66,7 +66,8 @@ func (a *ServerOrClientSideApplier) Apply(ctx 
context.Context, object ctrl.Objec
                a.tryServerSideApply = sync.Once{}
                return err
        }
-       if v := a.hasServerSideApply.Load(); v.(bool) {
+       v := a.hasServerSideApply.Load()
+       if vb, ok := v.(bool); ok && vb {
                if !once {
                        return a.serverSideApply(ctx, object)
                }
diff --git a/pkg/cmd/operator/operator.go b/pkg/cmd/operator/operator.go
index 4d108d6a3..61b471acb 100644
--- a/pkg/cmd/operator/operator.go
+++ b/pkg/cmd/operator/operator.go
@@ -225,7 +225,8 @@ func Run(healthPort, monitoringPort int32, leaderElection 
bool, leaderElectionID
        exitOnError(
                mgr.GetFieldIndexer().IndexField(context.Background(), 
&corev1.Pod{}, "status.phase",
                        func(obj ctrl.Object) []string {
-                               return 
[]string{string(obj.(*corev1.Pod).Status.Phase)}
+                               pod, _ := obj.(*corev1.Pod)
+                               return []string{string(pod.Status.Phase)}
                        }),
                "unable to set up field indexer for status.phase: %v",
        )
diff --git a/pkg/controller/integration/kits.go 
b/pkg/controller/integration/kits.go
index 06aa5fcf6..fb74286a2 100644
--- a/pkg/controller/integration/kits.go
+++ b/pkg/controller/integration/kits.go
@@ -19,6 +19,7 @@ package integration
 
 import (
        "context"
+       "fmt"
        "reflect"
 
        "k8s.io/apimachinery/pkg/api/errors"
@@ -228,7 +229,16 @@ func matchesComparableTrait(ct trait.ComparableTrait, it 
map[string]interface{},
                return false, err
        }
 
-       return t2.(trait.ComparableTrait).Matches(t1.(trait.Trait)), nil
+       ct2, ok := t2.(trait.ComparableTrait)
+       if !ok {
+               return false, fmt.Errorf("type assertion failed: %v", t2)
+       }
+       tt1, ok := t1.(trait.Trait)
+       if !ok {
+               return false, fmt.Errorf("type assertion failed: %v", t1)
+       }
+
+       return ct2.Matches(tt1), nil
 }
 
 func matchesTrait(it map[string]interface{}, kt map[string]interface{}) bool {
diff --git a/pkg/controller/integration/monitor.go 
b/pkg/controller/integration/monitor.go
index 5413390e4..e67970306 100644
--- a/pkg/controller/integration/monitor.go
+++ b/pkg/controller/integration/monitor.go
@@ -179,20 +179,32 @@ func (action *monitorAction) newController(ctx 
context.Context, env *trait.Envir
        switch {
        case isConditionTrue(integration, 
v1.IntegrationConditionDeploymentAvailable):
                obj = getUpdatedController(env, &appsv1.Deployment{})
+               deploy, ok := obj.(*appsv1.Deployment)
+               if !ok {
+                       return nil, fmt.Errorf("type assertion failed: %v", obj)
+               }
                controller = &deploymentController{
-                       obj:         obj.(*appsv1.Deployment),
+                       obj:         deploy,
                        integration: integration,
                }
        case isConditionTrue(integration, 
v1.IntegrationConditionKnativeServiceAvailable):
                obj = getUpdatedController(env, &servingv1.Service{})
+               svc, ok := obj.(*servingv1.Service)
+               if !ok {
+                       return nil, fmt.Errorf("type assertion failed: %v", obj)
+               }
                controller = &knativeServiceController{
-                       obj:         obj.(*servingv1.Service),
+                       obj:         svc,
                        integration: integration,
                }
        case isConditionTrue(integration, 
v1.IntegrationConditionCronJobAvailable):
                obj = getUpdatedController(env, &batchv1.CronJob{})
+               cj, ok := obj.(*batchv1.CronJob)
+               if !ok {
+                       return nil, fmt.Errorf("type assertion failed: %v", obj)
+               }
                controller = &cronJobController{
-                       obj:         obj.(*batchv1.CronJob),
+                       obj:         cj,
                        integration: integration,
                        client:      action.client,
                }
diff --git a/pkg/install/kamelets.go b/pkg/install/kamelets.go
index 53cf29989..5e877b928 100644
--- a/pkg/install/kamelets.go
+++ b/pkg/install/kamelets.go
@@ -114,7 +114,8 @@ func KameletCatalog(ctx context.Context, c client.Client, 
namespace string) erro
                        if err != nil {
                                return err
                        }
-                       if v := hasServerSideApply.Load(); v.(bool) {
+                       v := hasServerSideApply.Load()
+                       if vb, ok := v.(bool); ok && vb {
                                if !once {
                                        return serverSideApply(gCtx, c, kamelet)
                                }
diff --git a/pkg/trait/openapi.go b/pkg/trait/openapi.go
index 19e7bbef1..b5b54914a 100644
--- a/pkg/trait/openapi.go
+++ b/pkg/trait/openapi.go
@@ -143,12 +143,16 @@ func (t *openAPITrait) generateFromConfigmaps(e 
*Environment, tmpDir string) ([]
                        e.Resources.Add(refCm)
                }
                // Iterate over each configmap key which may hold a different 
OpenAPI spec
-               for k, v := range 
cm.UnstructuredContent()["data"].(map[string]interface{}) {
-                       dataSpecs = append(dataSpecs, v1.DataSpec{
-                               Name:        k,
-                               Content:     v.(string),
-                               Compression: false,
-                       })
+               if dataMap, ok := 
cm.UnstructuredContent()["data"].(map[string]interface{}); ok {
+                       for k, v := range dataMap {
+                               if content, ok := v.(string); ok {
+                                       dataSpecs = append(dataSpecs, 
v1.DataSpec{
+                                               Name:        k,
+                                               Content:     content,
+                                               Compression: false,
+                                       })
+                               }
+                       }
                }
        }
 
diff --git a/pkg/trait/pdb_test.go b/pkg/trait/pdb_test.go
index 803c2430b..af6e27da4 100644
--- a/pkg/trait/pdb_test.go
+++ b/pkg/trait/pdb_test.go
@@ -89,8 +89,8 @@ func pdbCreatedCheck(t *testing.T, pdbTrait *pdbTrait, 
environment *Environment)
 
 func findPdb(resources *kubernetes.Collection) *v1beta1.PodDisruptionBudget {
        for _, a := range resources.Items() {
-               if _, ok := a.(*v1beta1.PodDisruptionBudget); ok {
-                       return a.(*v1beta1.PodDisruptionBudget)
+               if pdb, ok := a.(*v1beta1.PodDisruptionBudget); ok {
+                       return pdb
                }
        }
        return nil
diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index 445dec5c7..1f107dcdf 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -121,8 +121,10 @@ func (t *prometheusTrait) getContainerPort(e *Environment, 
controller Controller
        var port int
 
        if t := e.Catalog.GetTrait(containerTraitID); t != nil {
-               name = t.(*containerTrait).PortName
-               port = t.(*containerTrait).Port
+               if ct, ok := t.(*containerTrait); ok {
+                       name = ct.PortName
+                       port = ct.Port
+               }
        }
 
        // Let's rely on Knative default HTTP negotiation
diff --git a/pkg/trait/route.go b/pkg/trait/route.go
index 08b450114..7a23a0128 100644
--- a/pkg/trait/route.go
+++ b/pkg/trait/route.go
@@ -88,9 +88,10 @@ func (t *routeTrait) Configure(e *Environment) (bool, error) 
{
 
 func (t *routeTrait) Apply(e *Environment) error {
        servicePortName := defaultContainerPortName
-       dt := e.Catalog.GetTrait(containerTraitID)
-       if dt != nil {
-               servicePortName = dt.(*containerTrait).ServicePortName
+       if dt := e.Catalog.GetTrait(containerTraitID); dt != nil {
+               if ct, ok := dt.(*containerTrait); ok {
+                       servicePortName = ct.ServicePortName
+               }
        }
 
        tlsConfig, err := t.getTLSConfig(e)
diff --git a/pkg/trait/trait_configure_test.go 
b/pkg/trait/trait_configure_test.go
index ad4d7020b..ee646a590 100644
--- a/pkg/trait/trait_configure_test.go
+++ b/pkg/trait/trait_configure_test.go
@@ -88,9 +88,11 @@ func TestTraitConfigurationFromAnnotations(t *testing.T) {
        }
        c := NewCatalog(nil)
        assert.NoError(t, c.Configure(&env))
-       assert.True(t, *c.GetTrait("cron").(*cronTrait).Fallback)
-       assert.Equal(t, "annotated-policy", 
c.GetTrait("cron").(*cronTrait).ConcurrencyPolicy)
-       assert.True(t, 
*c.GetTrait("environment").(*environmentTrait).ContainerMeta)
+       ct, _ := c.GetTrait("cron").(*cronTrait)
+       assert.True(t, *ct.Fallback)
+       assert.Equal(t, "annotated-policy", ct.ConcurrencyPolicy)
+       et, _ := c.GetTrait("environment").(*environmentTrait)
+       assert.True(t, *et.ContainerMeta)
 }
 
 func TestFailOnWrongTraitAnnotations(t *testing.T) {
@@ -164,10 +166,12 @@ func TestTraitConfigurationOverrideRulesFromAnnotations(t 
*testing.T) {
        }
        c := NewCatalog(nil)
        assert.NoError(t, c.Configure(&env))
-       assert.Equal(t, "schedule2", c.GetTrait("cron").(*cronTrait).Schedule)
-       assert.Equal(t, "cmp4", c.GetTrait("cron").(*cronTrait).Components)
-       assert.Equal(t, "policy4", 
c.GetTrait("cron").(*cronTrait).ConcurrencyPolicy)
-       assert.Equal(t, pointer.Bool(true), 
c.GetTrait("builder").(*builderTrait).Verbose)
+       ct, _ := c.GetTrait("cron").(*cronTrait)
+       assert.Equal(t, "schedule2", ct.Schedule)
+       assert.Equal(t, "cmp4", ct.Components)
+       assert.Equal(t, "policy4", ct.ConcurrencyPolicy)
+       bt, _ := c.GetTrait("builder").(*builderTrait)
+       assert.True(t, *bt.Verbose)
 }
 
 func TestTraitListConfigurationFromAnnotations(t *testing.T) {
@@ -186,8 +190,10 @@ func TestTraitListConfigurationFromAnnotations(t 
*testing.T) {
        }
        c := NewCatalog(nil)
        assert.NoError(t, c.Configure(&env))
-       assert.Equal(t, []string{"opt1", "opt2"}, 
c.GetTrait("jolokia").(*jolokiaTrait).Options)
-       assert.Equal(t, []string{"Binding:xxx"}, 
c.GetTrait("service-binding").(*serviceBindingTrait).Services)
+       jt, _ := c.GetTrait("jolokia").(*jolokiaTrait)
+       assert.Equal(t, []string{"opt1", "opt2"}, jt.Options)
+       sbt, _ := c.GetTrait("service-binding").(*serviceBindingTrait)
+       assert.Equal(t, []string{"Binding:xxx"}, sbt.Services)
 }
 
 func TestTraitSplitConfiguration(t *testing.T) {
@@ -205,7 +211,8 @@ func TestTraitSplitConfiguration(t *testing.T) {
        }
        c := NewCatalog(nil)
        assert.NoError(t, c.Configure(&env))
-       assert.Equal(t, []string{"opt1", "opt2"}, 
c.GetTrait("owner").(*ownerTrait).TargetLabels)
+       ot, _ := c.GetTrait("owner").(*ownerTrait)
+       assert.Equal(t, []string{"opt1", "opt2"}, ot.TargetLabels)
 }
 
 func TestTraitDecode(t *testing.T) {
diff --git a/pkg/trait/trait_types.go b/pkg/trait/trait_types.go
index 6394cda1c..17504e242 100644
--- a/pkg/trait/trait_types.go
+++ b/pkg/trait/trait_types.go
@@ -666,9 +666,11 @@ func (e *Environment) 
collectConfigurations(configurationType string) []map[stri
 
 func (e *Environment) GetIntegrationContainerName() string {
        containerName := defaultContainerName
-       dt := e.Catalog.GetTrait(containerTraitID)
-       if dt != nil {
-               containerName = dt.(*containerTrait).Name
+
+       if dt := e.Catalog.GetTrait(containerTraitID); dt != nil {
+               if ct, ok := dt.(*containerTrait); ok {
+                       containerName = ct.Name
+               }
        }
        return containerName
 }
@@ -685,9 +687,10 @@ func (e *Environment) getIntegrationContainerPort() 
*corev1.ContainerPort {
        }
 
        portName := ""
-       t := e.Catalog.GetTrait(containerTraitID)
-       if t != nil {
-               portName = t.(*containerTrait).PortName
+       if t := e.Catalog.GetTrait(containerTraitID); t != nil {
+               if ct, ok := t.(*containerTrait); ok {
+                       portName = ct.PortName
+               }
        }
        if portName == "" {
                portName = defaultContainerPortName
diff --git a/pkg/util/source/inspector_yaml.go 
b/pkg/util/source/inspector_yaml.go
index 99ed8b876..a28ac260e 100644
--- a/pkg/util/source/inspector_yaml.go
+++ b/pkg/util/source/inspector_yaml.go
@@ -86,7 +86,9 @@ func (i YAMLInspector) parseStep(key string, content 
interface{}, meta *Metadata
                case string:
                        AddKamelet(meta, "kamelet:"+t)
                case map[interface{}]interface{}:
-                       AddKamelet(meta, "kamelet:"+t["name"].(string))
+                       if name, ok := t["name"].(string); ok {
+                               AddKamelet(meta, "kamelet:"+name)
+                       }
                }
        }
 

Reply via email to