You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2021/03/05 11:46:49 UTC
[camel-k] 02/05: chore: Remove uneeded DeepCopyObject calls before
Update/Patch
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 <an...@stefanutti.fr>
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)