You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2019/12/11 18:37:54 UTC
[camel-k] 04/08: Fix #1120: transform timeouts to pointer types
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 <ni...@gmail.com>
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 != "" {