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

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

commit 0c24b3f717a345cfe51848a09846f051be9e32d8
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Wed Mar 3 16:16:22 2021 +0100

    chore: Remove uneeded DeepCopyObject calls before Update/Patch
---
 pkg/cmd/kit_create.go                 |  7 +++----
 pkg/cmd/run.go                        | 22 ++++++++++++++--------
 pkg/platform/defaults.go              | 13 +++++++++----
 pkg/trait/deployer.go                 |  9 ++++++---
 pkg/util/maven/maven_settings.go      | 15 ++++++---------
 pkg/util/maven/maven_settings_test.go |  5 +++--
 6 files changed, 41 insertions(+), 30 deletions(-)

diff --git a/pkg/cmd/kit_create.go b/pkg/cmd/kit_create.go
index e757fe7..0d26e1d 100644
--- a/pkg/cmd/kit_create.go
+++ b/pkg/cmd/kit_create.go
@@ -23,7 +23,6 @@ import (
        "strings"
 
        "github.com/spf13/cobra"
-
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
 
@@ -171,13 +170,13 @@ func (command *kitCreateCommandOptions) run(_ 
*cobra.Command, args []string) err
        err = c.Create(command.Context, &kit)
        if err != nil && k8serrors.IsAlreadyExists(err) {
                existed = true
-               clone := kit.DeepCopy()
-               err = c.Get(command.Context, key, clone)
+               existing := v1.NewIntegrationKit(kit.Namespace, kit.Name)
+               err = c.Get(command.Context, key, &existing)
                if err != nil {
                        fmt.Print(err.Error())
                        return nil
                }
-               kit.ResourceVersion = clone.ResourceVersion
+               kit.ResourceVersion = existing.ResourceVersion
                err = c.Update(command.Context, &kit)
        }
 
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index bf6ad39..a77afa5 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -39,6 +39,7 @@ import (
        corev1 "k8s.io/api/core/v1"
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
        ctrl "sigs.k8s.io/controller-runtime/pkg/client"
 
        v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
@@ -301,13 +302,13 @@ func (o *runCmdOptions) run(cmd *cobra.Command, args 
[]string) error {
                        }
 
                        // The integration watch timed out so recreate it using 
the latest integration resource version
-                       clone := integration.DeepCopy()
-                       err = c.Get(o.Context, ctrl.ObjectKeyFromObject(clone), 
clone)
+                       existing := v1.NewIntegration(integration.Namespace, 
integration.Name)
+                       err = c.Get(o.Context, 
ctrl.ObjectKeyFromObject(&existing), &existing)
                        if err != nil {
                                return err
                        }
 
-                       integration.ObjectMeta.ResourceVersion = 
clone.ObjectMeta.ResourceVersion
+                       integration.ObjectMeta.ResourceVersion = 
existing.ObjectMeta.ResourceVersion
                }
        }
        if o.Logs || o.Dev {
@@ -584,19 +585,24 @@ func (o *runCmdOptions) updateIntegrationCode(c 
client.Client, sources []string,
        err = c.Create(o.Context, &integration)
        if err != nil && k8serrors.IsAlreadyExists(err) {
                existed = true
-               clone := integration.DeepCopy()
-               err = c.Get(o.Context, ctrl.ObjectKeyFromObject(clone), clone)
+               existing := &v1.Integration{
+                       ObjectMeta: metav1.ObjectMeta{
+                               Namespace: integration.Namespace,
+                               Name:      integration.Name,
+                       },
+               }
+               err = c.Get(o.Context, ctrl.ObjectKeyFromObject(existing), 
existing)
                if err != nil {
                        return nil, err
                }
                // Hold the resource from the operator controller
-               clone.Status.Phase = v1.IntegrationPhaseUpdating
-               err = c.Status().Update(o.Context, clone)
+               existing.Status.Phase = v1.IntegrationPhaseUpdating
+               err = c.Status().Update(o.Context, existing)
                if err != nil {
                        return nil, err
                }
                // Update the spec
-               integration.ResourceVersion = clone.ResourceVersion
+               integration.ResourceVersion = existing.ResourceVersion
                err = c.Update(o.Context, &integration)
                if err != nil {
                        return nil, err
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index 22cab53..9e344f0 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -284,7 +284,7 @@ func setPlatformDefaults(ctx context.Context, c 
client.Client, p *v1.Integration
 }
 
 func createDefaultMavenSettingsConfigMap(ctx context.Context, client 
client.Client, p *v1.IntegrationPlatform, settings maven.Settings) error {
-       cm, err := maven.CreateSettingsConfigMap(p.Namespace, p.Name, settings)
+       cm, err := maven.SettingsConfigMap(p.Namespace, p.Name, settings)
        if err != nil {
                return err
        }
@@ -293,13 +293,18 @@ func createDefaultMavenSettingsConfigMap(ctx 
context.Context, client client.Clie
        if err != nil && !k8serrors.IsAlreadyExists(err) {
                return err
        } else if k8serrors.IsAlreadyExists(err) {
-               cmCopy := cm.DeepCopyObject().(ctrl.Object)
-               err = client.Get(ctx, ctrl.ObjectKeyFromObject(cm), cmCopy)
+               existing := &corev1.ConfigMap{
+                       ObjectMeta: metav1.ObjectMeta{
+                               Namespace: cm.Namespace,
+                               Name:      cm.Name,
+                       },
+               }
+               err = client.Get(ctx, ctrl.ObjectKeyFromObject(existing), 
existing)
                if err != nil {
                        return err
                }
 
-               p, err := patch.PositiveMergePatch(cmCopy, cm)
+               p, err := patch.PositiveMergePatch(existing, cm)
                if err != nil {
                        return err
                } else if len(p) != 0 {
diff --git a/pkg/trait/deployer.go b/pkg/trait/deployer.go
index f8a895a..7c7dc96 100644
--- a/pkg/trait/deployer.go
+++ b/pkg/trait/deployer.go
@@ -23,6 +23,7 @@ import (
        "github.com/pkg/errors"
 
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
+       "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
        "k8s.io/apimachinery/pkg/types"
 
        ctrl "sigs.k8s.io/controller-runtime/pkg/client"
@@ -127,9 +128,11 @@ func (t *deployerTrait) clientSideApply(env *Environment, 
resource ctrl.Object)
        } else if !k8serrors.IsAlreadyExists(err) {
                return errors.Wrapf(err, "error during create resource: %v", 
resource)
        }
-       key := ctrl.ObjectKeyFromObject(resource)
-       object := resource.DeepCopyObject().(ctrl.Object)
-       err = env.Client.Get(env.C, key, object)
+       object := &unstructured.Unstructured{}
+       object.SetNamespace(resource.GetNamespace())
+       object.SetName(resource.GetName())
+       object.SetGroupVersionKind(resource.GetObjectKind().GroupVersionKind())
+       err = env.Client.Get(env.C, ctrl.ObjectKeyFromObject(object), object)
        if err != nil {
                return err
        }
diff --git a/pkg/util/maven/maven_settings.go b/pkg/util/maven/maven_settings.go
index 206b3ed..a1bac60 100644
--- a/pkg/util/maven/maven_settings.go
+++ b/pkg/util/maven/maven_settings.go
@@ -21,17 +21,16 @@ import (
        "encoding/xml"
        "strings"
 
-       "github.com/apache/camel-k/pkg/util"
-
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+       "github.com/apache/camel-k/pkg/util"
 )
 
 // DefaultMavenRepositories is a comma separated list of default maven 
repositories
 // This variable can be overridden at build time
 var DefaultMavenRepositories = 
"https://repo.maven.apache.org/maven2@id=central";
 
-// NewSettings --
 func NewSettings() Settings {
        return Settings{
                XMLName:           xml.Name{Local: "settings"},
@@ -41,12 +40,11 @@ func NewSettings() Settings {
        }
 }
 
-// NewDefaultSettings --
 func NewDefaultSettings(repositories []Repository, mirrors []Mirror) Settings {
        settings := NewSettings()
 
        var additionalRepos []Repository
-       for _, defaultRepo := range getDefaultMavenRepositories() {
+       for _, defaultRepo := range defaultMavenRepositories() {
                if !containsRepo(repositories, defaultRepo.ID) {
                        additionalRepos = append(additionalRepos, defaultRepo)
                }
@@ -71,8 +69,7 @@ func NewDefaultSettings(repositories []Repository, mirrors 
[]Mirror) Settings {
        return settings
 }
 
-// CreateSettingsConfigMap --
-func CreateSettingsConfigMap(namespace string, name string, settings Settings) 
(*corev1.ConfigMap, error) {
+func SettingsConfigMap(namespace string, name string, settings Settings) 
(*corev1.ConfigMap, error) {
        data, err := util.EncodeXML(settings)
        if err != nil {
                return nil, err
@@ -81,7 +78,7 @@ func CreateSettingsConfigMap(namespace string, name string, 
settings Settings) (
        cm := &corev1.ConfigMap{
                TypeMeta: metav1.TypeMeta{
                        Kind:       "ConfigMap",
-                       APIVersion: "v1",
+                       APIVersion: corev1.SchemeGroupVersion.String(),
                },
                ObjectMeta: metav1.ObjectMeta{
                        Name:      name + "-maven-settings",
@@ -98,7 +95,7 @@ func CreateSettingsConfigMap(namespace string, name string, 
settings Settings) (
        return cm, nil
 }
 
-func getDefaultMavenRepositories() (repos []Repository) {
+func defaultMavenRepositories() (repos []Repository) {
        for _, repoDesc := range strings.Split(DefaultMavenRepositories, ",") {
                repos = append(repos, NewRepository(repoDesc))
        }
diff --git a/pkg/util/maven/maven_settings_test.go 
b/pkg/util/maven/maven_settings_test.go
index cebada9..aa8b010 100644
--- a/pkg/util/maven/maven_settings_test.go
+++ b/pkg/util/maven/maven_settings_test.go
@@ -20,8 +20,9 @@ package maven
 import (
        "testing"
 
-       "github.com/apache/camel-k/pkg/util"
        "github.com/stretchr/testify/assert"
+
+       "github.com/apache/camel-k/pkg/util"
 )
 
 const expectedSettings = `<?xml version="1.0" encoding="UTF-8"?>
@@ -238,7 +239,7 @@ func TestDefaultSettingsGenerationWithAdditionalRepo(t 
*testing.T) {
 func TestCreateSettingsConfigMap(t *testing.T) {
        settings := NewDefaultSettings([]Repository{}, []Mirror{})
 
-       configMap, err := CreateSettingsConfigMap("foo", "bar", settings)
+       configMap, err := SettingsConfigMap("foo", "bar", settings)
        assert.Nil(t, err)
        assert.NotNil(t, configMap)
 

Reply via email to