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)
