This is an automated email from the ASF dual-hosted git repository. nferraro pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit 9eb3e9896c5127f751b00800708f071be26739f2 Author: Nicola Ferraro <[email protected]> AuthorDate: Mon Dec 9 14:48:30 2019 +0100 Fix #1120: transform timeouts to pointer types --- pkg/apis/camel/v1alpha1/common_types.go | 6 +-- .../camel/v1alpha1/integrationplatform_types.go | 2 +- .../v1alpha1/integrationplatform_types_support.go | 16 ++++++++ pkg/builder/runtime/main.go | 2 +- pkg/builder/runtime/quarkus.go | 2 +- pkg/builder/s2i/publisher.go | 2 +- pkg/cmd/install.go | 5 ++- .../integrationplatform/initialize_test.go | 22 +++++----- pkg/platform/defaults.go | 47 +++++++++++++--------- pkg/trait/rest-dsl.go | 2 +- pkg/util/camel/catalog.go | 2 +- 11 files changed, 68 insertions(+), 40 deletions(-) diff --git a/pkg/apis/camel/v1alpha1/common_types.go b/pkg/apis/camel/v1alpha1/common_types.go index 51a1885..c3472f6 100644 --- a/pkg/apis/camel/v1alpha1/common_types.go +++ b/pkg/apis/camel/v1alpha1/common_types.go @@ -77,9 +77,9 @@ type PlatformInjectable interface { // MavenSpec -- type MavenSpec struct { - LocalRepository string `json:"localRepository,omitempty"` - Settings ValueSource `json:"settings,omitempty"` - Timeout metav1.Duration `json:"timeout,omitempty"` + LocalRepository string `json:"localRepository,omitempty"` + Settings ValueSource `json:"settings,omitempty"` + Timeout *metav1.Duration `json:"timeout,omitempty"` } // ValueSource -- diff --git a/pkg/apis/camel/v1alpha1/integrationplatform_types.go b/pkg/apis/camel/v1alpha1/integrationplatform_types.go index f21b207..770db0b 100644 --- a/pkg/apis/camel/v1alpha1/integrationplatform_types.go +++ b/pkg/apis/camel/v1alpha1/integrationplatform_types.go @@ -109,7 +109,7 @@ type IntegrationPlatformBuildSpec struct { BaseImage string `json:"baseImage,omitempty"` Properties map[string]string `json:"properties,omitempty"` Registry IntegrationPlatformRegistrySpec `json:"registry,omitempty"` - Timeout metav1.Duration `json:"timeout,omitempty"` + Timeout *metav1.Duration `json:"timeout,omitempty"` PersistentVolumeClaim string `json:"persistentVolumeClaim,omitempty"` Maven MavenSpec `json:"maven,omitempty"` HTTPProxySecret string `json:"httpProxySecret,omitempty"` diff --git a/pkg/apis/camel/v1alpha1/integrationplatform_types_support.go b/pkg/apis/camel/v1alpha1/integrationplatform_types_support.go index 6ca9029..82a3fef 100644 --- a/pkg/apis/camel/v1alpha1/integrationplatform_types_support.go +++ b/pkg/apis/camel/v1alpha1/integrationplatform_types_support.go @@ -186,3 +186,19 @@ func (b IntegrationPlatformBuildSpec) IsKanikoCacheEnabled() bool { } return *b.KanikoBuildCache } + +// GetTimeout returns the specified duration or a default one +func (b IntegrationPlatformBuildSpec) GetTimeout() metav1.Duration { + if b.Timeout == nil { + return metav1.Duration{} + } + return *b.Timeout +} + +// GetTimeout returns the specified duration or a default one +func (m MavenSpec) GetTimeout() metav1.Duration { + if m.Timeout == nil { + return metav1.Duration{} + } + return *m.Timeout +} diff --git a/pkg/builder/runtime/main.go b/pkg/builder/runtime/main.go index 4f2cb3e..a191afd 100644 --- a/pkg/builder/runtime/main.go +++ b/pkg/builder/runtime/main.go @@ -87,7 +87,7 @@ func computeDependencies(ctx *builder.Context) error { mc := maven.NewContext(path.Join(ctx.Path, "maven"), ctx.Maven.Project) mc.SettingsContent = ctx.Maven.SettingsData mc.LocalRepository = ctx.Build.Platform.Build.Maven.LocalRepository - mc.Timeout = ctx.Build.Platform.Build.Maven.Timeout.Duration + mc.Timeout = ctx.Build.Platform.Build.Maven.GetTimeout().Duration mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", ctx.Catalog.RuntimeVersion) if err := maven.Run(mc); err != nil { diff --git a/pkg/builder/runtime/quarkus.go b/pkg/builder/runtime/quarkus.go index bd6d92a..f9c9809 100644 --- a/pkg/builder/runtime/quarkus.go +++ b/pkg/builder/runtime/quarkus.go @@ -107,7 +107,7 @@ func computeQuarkusDependencies(ctx *builder.Context) error { mc := maven.NewContext(path.Join(ctx.Path, "maven"), ctx.Maven.Project) mc.SettingsContent = ctx.Maven.SettingsData mc.LocalRepository = ctx.Build.Platform.Build.Maven.LocalRepository - mc.Timeout = ctx.Build.Platform.Build.Maven.Timeout.Duration + mc.Timeout = ctx.Build.Platform.Build.Maven.GetTimeout().Duration // Build the project mc.AddArgument("package") diff --git a/pkg/builder/s2i/publisher.go b/pkg/builder/s2i/publisher.go index 9eadd47..eb8c598 100644 --- a/pkg/builder/s2i/publisher.go +++ b/pkg/builder/s2i/publisher.go @@ -156,7 +156,7 @@ func publisher(ctx *builder.Context) error { } } return false, nil - }, ctx.Build.Platform.Build.Timeout.Duration) + }, ctx.Build.Platform.Build.GetTimeout().Duration) if err != nil { return err diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go index 97b84f5..aa2510c 100644 --- a/pkg/cmd/install.go +++ b/pkg/cmd/install.go @@ -25,6 +25,7 @@ import ( "github.com/apache/camel-k/pkg/util/registry" "go.uber.org/multierr" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "github.com/apache/camel-k/deploy" @@ -235,7 +236,9 @@ func (o *installCmdOptions) install(cobraCmd *cobra.Command, _ []string) error { return err } - platform.Spec.Build.Timeout.Duration = d + platform.Spec.Build.Timeout = &v1.Duration{ + Duration: d, + } } if o.traitProfile != "" { platform.Spec.Profile = v1alpha1.TraitProfileByName(o.traitProfile) diff --git a/pkg/controller/integrationplatform/initialize_test.go b/pkg/controller/integrationplatform/initialize_test.go index d465cbe..112bc87 100644 --- a/pkg/controller/integrationplatform/initialize_test.go +++ b/pkg/controller/integrationplatform/initialize_test.go @@ -53,11 +53,11 @@ func TestTimeouts_Default(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, answer) - n := answer.Status.FullConfig.Build.Timeout.Duration.Seconds() * 0.75 + n := answer.Status.FullConfig.Build.GetTimeout().Duration.Seconds() * 0.75 d := (time.Duration(n) * time.Second).Truncate(time.Second) - assert.Equal(t, d, answer.Status.FullConfig.Build.Maven.Timeout.Duration) - assert.Equal(t, 5*time.Minute, answer.Status.FullConfig.Build.Timeout.Duration) + assert.Equal(t, d, answer.Status.FullConfig.Build.Maven.GetTimeout().Duration) + assert.Equal(t, 5*time.Minute, answer.Status.FullConfig.Build.GetTimeout().Duration) } func TestTimeouts_MavenComputedFromBuild(t *testing.T) { @@ -69,7 +69,7 @@ func TestTimeouts_MavenComputedFromBuild(t *testing.T) { timeout, err := time.ParseDuration("1m1ms") assert.Nil(t, err) - ip.Spec.Build.Timeout = metav1.Duration{ + ip.Spec.Build.Timeout = &metav1.Duration{ Duration: timeout, } @@ -86,11 +86,11 @@ func TestTimeouts_MavenComputedFromBuild(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, answer) - n := answer.Status.FullConfig.Build.Timeout.Duration.Seconds() * 0.75 + n := answer.Status.FullConfig.Build.GetTimeout().Duration.Seconds() * 0.75 d := (time.Duration(n) * time.Second).Truncate(time.Second) - assert.Equal(t, d, answer.Status.FullConfig.Build.Maven.Timeout.Duration) - assert.Equal(t, 1*time.Minute, answer.Status.FullConfig.Build.Timeout.Duration) + assert.Equal(t, d, answer.Status.FullConfig.Build.Maven.GetTimeout().Duration) + assert.Equal(t, 1*time.Minute, answer.Status.FullConfig.Build.GetTimeout().Duration) } func TestTimeouts_Truncated(t *testing.T) { @@ -102,14 +102,14 @@ func TestTimeouts_Truncated(t *testing.T) { bt, err := time.ParseDuration("5m1ms") assert.Nil(t, err) - ip.Spec.Build.Timeout = metav1.Duration{ + ip.Spec.Build.Timeout = &metav1.Duration{ Duration: bt, } mt, err := time.ParseDuration("2m1ms") assert.Nil(t, err) - ip.Spec.Build.Maven.Timeout = metav1.Duration{ + ip.Spec.Build.Maven.Timeout = &metav1.Duration{ Duration: mt, } @@ -126,8 +126,8 @@ func TestTimeouts_Truncated(t *testing.T) { assert.Nil(t, err) assert.NotNil(t, answer) - assert.Equal(t, 2*time.Minute, answer.Status.FullConfig.Build.Maven.Timeout.Duration) - assert.Equal(t, 5*time.Minute, answer.Status.FullConfig.Build.Timeout.Duration) + assert.Equal(t, 2*time.Minute, answer.Status.FullConfig.Build.Maven.GetTimeout().Duration) + assert.Equal(t, 5*time.Minute, answer.Status.FullConfig.Build.GetTimeout().Duration) } func TestDefaultMavenSettingsApplied(t *testing.T) { diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go index e3e768d..1853680 100644 --- a/pkg/platform/defaults.go +++ b/pkg/platform/defaults.go @@ -30,6 +30,7 @@ import ( "github.com/apache/camel-k/pkg/util/openshift" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) // ConfigureDefaults fills with default values all missing details about the integration platform. @@ -84,8 +85,8 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1alpha1.Integra log.Log.Info("No registry specified for publishing images") } - if verbose && p.Status.FullConfig.Build.Maven.Timeout.Duration != 0 { - log.Log.Infof("Maven Timeout set to %s", p.Status.FullConfig.Build.Maven.Timeout.Duration) + if verbose && p.Status.FullConfig.Build.Maven.GetTimeout().Duration != 0 { + log.Log.Infof("Maven Timeout set to %s", p.Status.FullConfig.Build.Maven.GetTimeout().Duration) } return nil @@ -111,31 +112,39 @@ func setPlatformDefaults(ctx context.Context, c client.Client, p *v1alpha1.Integ p.Status.FullConfig.Build.PersistentVolumeClaim = p.Name } - if p.Status.FullConfig.Build.Timeout.Duration != 0 { - d := p.Status.FullConfig.Build.Timeout.Duration.Truncate(time.Second) + if p.Status.FullConfig.Build.GetTimeout().Duration != 0 { + d := p.Status.FullConfig.Build.GetTimeout().Duration.Truncate(time.Second) - if verbose && p.Status.FullConfig.Build.Timeout.Duration != d { - log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.FullConfig.Build.Timeout.Duration, d) + if verbose && p.Status.FullConfig.Build.GetTimeout().Duration != d { + log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.FullConfig.Build.GetTimeout().Duration, d) } - p.Status.FullConfig.Build.Timeout.Duration = d + p.Status.FullConfig.Build.Timeout = &v1.Duration{ + Duration: d, + } } - if p.Status.FullConfig.Build.Timeout.Duration == 0 { - p.Status.FullConfig.Build.Timeout.Duration = 5 * time.Minute + if p.Status.FullConfig.Build.GetTimeout().Duration == 0 { + p.Status.FullConfig.Build.Timeout = &v1.Duration{ + Duration: 5 * time.Minute, + } } - if p.Status.FullConfig.Build.Maven.Timeout.Duration != 0 { - d := p.Status.FullConfig.Build.Maven.Timeout.Duration.Truncate(time.Second) + if p.Status.FullConfig.Build.Maven.GetTimeout().Duration != 0 { + d := p.Status.FullConfig.Build.Maven.GetTimeout().Duration.Truncate(time.Second) - if verbose && p.Status.FullConfig.Build.Maven.Timeout.Duration != d { - log.Log.Infof("Maven timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.FullConfig.Build.Maven.Timeout.Duration, d) + if verbose && p.Status.FullConfig.Build.Maven.GetTimeout().Duration != d { + log.Log.Infof("Maven timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.FullConfig.Build.Maven.GetTimeout().Duration, d) } - p.Status.FullConfig.Build.Maven.Timeout.Duration = d + p.Status.FullConfig.Build.Maven.Timeout = &v1.Duration{ + Duration: d, + } } - if p.Status.FullConfig.Build.Maven.Timeout.Duration == 0 { - n := p.Status.FullConfig.Build.Timeout.Duration.Seconds() * 0.75 - p.Status.FullConfig.Build.Maven.Timeout.Duration = (time.Duration(n) * time.Second).Truncate(time.Second) + if p.Status.FullConfig.Build.Maven.GetTimeout().Duration == 0 { + n := p.Status.FullConfig.Build.GetTimeout().Duration.Seconds() * 0.75 + p.Status.FullConfig.Build.Maven.Timeout = &v1.Duration{ + Duration: (time.Duration(n) * time.Second).Truncate(time.Second), + } } if p.Status.FullConfig.Build.Maven.Settings.ConfigMapKeyRef == nil && p.Status.FullConfig.Build.Maven.Settings.SecretKeyRef == nil { @@ -179,8 +188,8 @@ func setPlatformDefaults(ctx context.Context, c client.Client, p *v1alpha1.Integ log.Log.Infof("RuntimeVersion set to %s", p.Status.FullConfig.Build.RuntimeVersion) log.Log.Infof("BaseImage set to %s", p.Status.FullConfig.Build.BaseImage) log.Log.Infof("LocalRepository set to %s", p.Status.FullConfig.Build.Maven.LocalRepository) - log.Log.Infof("Timeout set to %s", p.Status.FullConfig.Build.Timeout) - log.Log.Infof("Maven Timeout set to %s", p.Status.FullConfig.Build.Maven.Timeout.Duration) + log.Log.Infof("Timeout set to %s", p.Status.FullConfig.Build.GetTimeout()) + log.Log.Infof("Maven Timeout set to %s", p.Status.FullConfig.Build.Maven.GetTimeout().Duration) } return nil diff --git a/pkg/trait/rest-dsl.go b/pkg/trait/rest-dsl.go index 022dbb2..d621f8e 100644 --- a/pkg/trait/rest-dsl.go +++ b/pkg/trait/rest-dsl.go @@ -115,7 +115,7 @@ func (t *restDslTrait) Apply(e *Environment) error { mc := maven.NewContext(tmpDir, project) mc.LocalRepository = e.Platform.Status.FullConfig.Build.Maven.LocalRepository - mc.Timeout = e.Platform.Status.FullConfig.Build.Maven.Timeout.Duration + mc.Timeout = e.Platform.Status.FullConfig.Build.Maven.GetTimeout().Duration mc.AddArgument("-Dopenapi.spec=" + in) mc.AddArgument("-Ddsl.out=" + out) diff --git a/pkg/util/camel/catalog.go b/pkg/util/camel/catalog.go index 4ad5d6b..12289e2 100644 --- a/pkg/util/camel/catalog.go +++ b/pkg/util/camel/catalog.go @@ -90,7 +90,7 @@ func GenerateCatalogWithProvider(ctx context.Context, client k8sclient.Reader, n mc := maven.NewContext(tmpDir, project) mc.LocalRepository = mvn.LocalRepository - mc.Timeout = mvn.Timeout.Duration + mc.Timeout = mvn.GetTimeout().Duration mc.AddSystemProperty("catalog.path", tmpDir) mc.AddSystemProperty("catalog.file", "catalog.yaml") if providerName != "" {
