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) + } } }