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 387ae53fcc42dfefb801ac9eec68f7cf7af17544 Author: Antonin Stefanutti <anto...@stefanutti.fr> AuthorDate: Thu Jan 23 15:19:45 2020 +0100 chore(trait): Merge Debug trait into the JVM trait --- docs/modules/ROOT/nav.adoc | 1 - docs/modules/ROOT/pages/traits/jvm.adoc | 4 ++ docs/modules/ROOT/pages/traits/traits.adoc | 1 - pkg/trait/debug.go | 58 --------------- pkg/trait/debug_test.go | 111 ----------------------------- pkg/trait/jvm.go | 8 ++- pkg/trait/trait_catalog.go | 6 -- 7 files changed, 11 insertions(+), 178 deletions(-) diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 1251e0a..318f21a 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -21,7 +21,6 @@ ** xref:traits/camel.adoc[Camel] ** xref:traits/container.adoc[Container] ** xref:traits/cron.adoc[Cron] -** xref:traits/debug.adoc[Debug] ** xref:traits/dependencies.adoc[Dependencies] ** xref:traits/deployer.adoc[Deployer] ** xref:traits/deployment.adoc[Deployment] diff --git a/docs/modules/ROOT/pages/traits/jvm.adoc b/docs/modules/ROOT/pages/traits/jvm.adoc index 530c1a7..bdbe13c 100755 --- a/docs/modules/ROOT/pages/traits/jvm.adoc +++ b/docs/modules/ROOT/pages/traits/jvm.adoc @@ -26,6 +26,10 @@ The following configuration options are available: | bool | Can be used to enable or disable a trait. All traits share this common property. +| jvm.debug +| bool +| Activates remote debugging, so that a debugger can be attached to the JVM, e.g., using port-forwarding + | jvm.options | string | A comma-separated list of JVM options diff --git a/docs/modules/ROOT/pages/traits/traits.adoc b/docs/modules/ROOT/pages/traits/traits.adoc index efb3465..f0c4b24 100644 --- a/docs/modules/ROOT/pages/traits/traits.adoc +++ b/docs/modules/ROOT/pages/traits/traits.adoc @@ -39,7 +39,6 @@ See the trait description pages for more information on a specific trait: * xref:traits/camel.adoc[Camel Trait] * xref:traits/container.adoc[Container Trait] * xref:traits/cron.adoc[Cron Trait] -* xref:traits/debug.adoc[Debug Trait] * xref:traits/dependencies.adoc[Dependencies Trait] * xref:traits/deployer.adoc[Deployer Trait] * xref:traits/deployment.adoc[Deployment Trait] diff --git a/pkg/trait/debug.go b/pkg/trait/debug.go deleted file mode 100644 index 38d3c5f..0000000 --- a/pkg/trait/debug.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package trait - -import ( - "fmt" - - v1 "github.com/apache/camel-k/pkg/apis/camel/v1" -) - -// The Debug trait can be used to enable debugging on the integration container, -// so that a remote debugger can be attached. -// -// +camel-k:trait=debug -type debugTrait struct { - BaseTrait `property:",squash"` -} - -func newDebugTrait() *debugTrait { - return &debugTrait{ - BaseTrait: newBaseTrait("debug"), - } -} - -func (t *debugTrait) Configure(e *Environment) (bool, error) { - if t.Enabled != nil && *t.Enabled { - return e.IntegrationInPhase(v1.IntegrationPhaseDeploying, v1.IntegrationPhaseRunning), nil - } - - return false, nil -} - -func (t *debugTrait) Apply(e *Environment) error { - container := e.getIntegrationContainer() - if container == nil { - return fmt.Errorf("unable to find integration container") - } - - // TODO: Add options to configure debugging agent - container.Args = append(container.Args, "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005") - - return nil -} diff --git a/pkg/trait/debug_test.go b/pkg/trait/debug_test.go deleted file mode 100644 index 32b3e1d..0000000 --- a/pkg/trait/debug_test.go +++ /dev/null @@ -1,111 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package trait - -import ( - "context" - "testing" - - "github.com/stretchr/testify/assert" - - appsv1 "k8s.io/api/apps/v1" - corev1 "k8s.io/api/core/v1" - - v1 "github.com/apache/camel-k/pkg/apis/camel/v1" - "github.com/apache/camel-k/pkg/util/camel" - "github.com/apache/camel-k/pkg/util/kubernetes" -) - -func TestDebugTraitApplicability(t *testing.T) { - catalog, err := camel.DefaultCatalog() - assert.Nil(t, err) - - env := Environment{ - CamelCatalog: catalog, - Integration: &v1.Integration{ - Status: v1.IntegrationStatus{ - Phase: v1.IntegrationPhaseDeploying, - }, - Spec: v1.IntegrationSpec{ - Traits: map[string]v1.TraitSpec{ - "debug": { - Configuration: map[string]string{ - "enabled": "true", - }, - }, - }, - }, - }, - } - - trait := newDebugTrait() - - enabled, err := trait.Configure(&env) - assert.Nil(t, err) - assert.False(t, enabled) - - env.Integration.Status.Phase = v1.IntegrationPhaseRunning - - enabled, err = trait.Configure(&env) - assert.Nil(t, err) - assert.False(t, enabled) -} - -func TestApplyDebugTrait(t *testing.T) { - environment := Environment{ - Catalog: NewCatalog(context.TODO(), nil), - Integration: &v1.Integration{ - Status: v1.IntegrationStatus{ - Phase: v1.IntegrationPhaseDeploying, - }, - Spec: v1.IntegrationSpec{ - Traits: map[string]v1.TraitSpec{ - "debug": { - Configuration: map[string]string{ - "enabled": "true", - }, - }, - }, - }, - }, - Resources: kubernetes.NewCollection(), - } - - d := appsv1.Deployment{ - Spec: appsv1.DeploymentSpec{ - Template: corev1.PodTemplateSpec{ - Spec: corev1.PodSpec{ - Containers: []corev1.Container{ - { - Name: defaultContainerName, - }, - }, - }, - }, - }, - } - - environment.Resources.Add(&d) - - trait := newDebugTrait() - - assert.Nil(t, trait.Apply(&environment)) - assert.Equal(t, d.Spec.Template.Spec.Containers[0].Args, []string{ - "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005", - }) -} diff --git a/pkg/trait/jvm.go b/pkg/trait/jvm.go index 348e093..b5ece60 100644 --- a/pkg/trait/jvm.go +++ b/pkg/trait/jvm.go @@ -40,7 +40,8 @@ const ( // +camel-k:trait=jvm type jvmTrait struct { BaseTrait `property:",squash"` - + // Activates remote debugging, so that a debugger can be attached to the JVM, e.g., using port-forwarding + Debug bool `property:"debug"` // A comma-separated list of JVM options Options *string `property:"options"` } @@ -107,6 +108,11 @@ func (t *jvmTrait) Apply(e *Environment) error { container.Command = []string{"java"} container.WorkingDir = "/deployments" + if t.Debug { + // TODO: Add options to configure debugging agent + container.Args = append(container.Args, "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005") + } + // Add JVM options if t.Options != nil { container.Args = append(container.Args, strings.Split(*t.Options, ",")...) diff --git a/pkg/trait/trait_catalog.go b/pkg/trait/trait_catalog.go index 81a3180..41d0fea 100644 --- a/pkg/trait/trait_catalog.go +++ b/pkg/trait/trait_catalog.go @@ -35,7 +35,6 @@ type Catalog struct { tPlatform Trait tAffinity Trait tCamel Trait - tDebug Trait tDependencies Trait tDeployer Trait tCron Trait @@ -67,7 +66,6 @@ func NewCatalog(ctx context.Context, c client.Client) *Catalog { tPlatform: newPlatformTrait(), tAffinity: newAffinityTrait(), tCamel: newCamelTrait(), - tDebug: newDebugTrait(), tRestDsl: newRestDslTrait(), tKnative: newKnativeTrait(), tDependencies: newDependenciesTrait(), @@ -108,7 +106,6 @@ func (c *Catalog) allTraits() []Trait { c.tPlatform, c.tAffinity, c.tCamel, - c.tDebug, c.tRestDsl, c.tKnative, c.tDependencies, @@ -166,7 +163,6 @@ func (c *Catalog) TraitsForProfile(profile v1.TraitProfile) []Trait { c.tPullSecret, c.tJolokia, c.tPrometheus, - c.tDebug, c.tJvm, c.tProbes, c.tRoute, @@ -192,7 +188,6 @@ func (c *Catalog) TraitsForProfile(profile v1.TraitProfile) []Trait { c.tPullSecret, c.tJolokia, c.tPrometheus, - c.tDebug, c.tJvm, c.tProbes, c.tIngress, @@ -219,7 +214,6 @@ func (c *Catalog) TraitsForProfile(profile v1.TraitProfile) []Trait { c.tPullSecret, c.tJolokia, c.tPrometheus, - c.tDebug, c.tJvm, c.tProbes, c.tIstio,