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 != "" {

Reply via email to