This is an automated email from the ASF dual-hosted git repository.
pcongiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/main by this push:
new 0b46667aa fix(ctrl): use caSecrets parameters for kamelet download
0b46667aa is described below
commit 0b46667aaf9516e1fc74c852686eca7b921ec921
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Fri Jun 20 15:59:06 2025 +0200
fix(ctrl): use caSecrets parameters for kamelet download
Closes #6060
---
pkg/controller/integrationplatform/create.go | 2 +
pkg/controller/integrationplatform/kamelets.go | 9 ++++-
pkg/util/jvm/keystore.go | 14 +++----
pkg/util/jvm/keystore_test.go | 53 ++++++++++++++++++++++----
pkg/util/maven/maven_command.go | 1 -
5 files changed, 61 insertions(+), 18 deletions(-)
diff --git a/pkg/controller/integrationplatform/create.go
b/pkg/controller/integrationplatform/create.go
index 88ccf1fde..7830ea621 100644
--- a/pkg/controller/integrationplatform/create.go
+++ b/pkg/controller/integrationplatform/create.go
@@ -29,6 +29,7 @@ import (
"github.com/apache/camel-k/v2/pkg/resources"
"github.com/apache/camel-k/v2/pkg/util/camel"
"github.com/apache/camel-k/v2/pkg/util/defaults"
+ "github.com/apache/camel-k/v2/pkg/util/log"
k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
)
@@ -176,6 +177,7 @@ func installKamelets(ctx context.Context, c client.Client,
platform *v1.Integrat
"IntegrationPlatformKameletCatalogAvailable",
fmt.Sprintf("kamelet catalog %s not available.
Error: %v", camelVersion, err),
)
+ log.Errorf(err, "A failure happened while loading
Kamelet catalog %s", camelVersion)
} else {
message := fmt.Sprintf("successfully installed Kamelet
catalog version %s: success %d Kamelets, failed %d Kamelets",
camelVersion, installedKam, erroredKam)
diff --git a/pkg/controller/integrationplatform/kamelets.go
b/pkg/controller/integrationplatform/kamelets.go
index a3ce3c7e8..f7b8ce5d6 100644
--- a/pkg/controller/integrationplatform/kamelets.go
+++ b/pkg/controller/integrationplatform/kamelets.go
@@ -98,8 +98,9 @@ func prepareKameletDirectory() (string, error) {
if err := os.RemoveAll(kameletDir); err != nil {
return kameletDirEnv, err
}
+ err := os.MkdirAll(kameletDir, os.ModePerm)
- return kameletDir, nil
+ return kameletDir, err
}
func downloadKameletDependency(ctx context.Context, c client.Client, platform
*v1.IntegrationPlatform, version, kameletsDir string) error {
@@ -112,6 +113,8 @@ func downloadKameletDependency(ctx context.Context, c
client.Client, platform *v
mc.AddArgument("dependency:copy")
mc.AddArgument(fmt.Sprintf("-Dartifact=org.apache.camel.kamelets:camel-kamelets:%s:jar",
version))
mc.AddArgument("-Dmdep.useBaseVersion=true")
+ // TODO: this one should be already managed during the command execution
+ // This workaround is fixing temporarily the problem
mc.AddArgument("-Dmaven.repo.local=" + mc.LocalRepository)
mc.AddArgument(fmt.Sprintf("-DoutputDirectory=%s", kameletsDir))
@@ -147,6 +150,10 @@ func downloadKameletDependency(ctx context.Context, c
client.Client, platform *v
"-Djavax.net.ssl.trustStore="+trustStoreName,
"-Djavax.net.ssl.trustStorePassword="+trustStorePass,
)
+ // TODO: this one should be already managed during the command
execution
+ // This workaround is fixing temporarily the problem
+ mc.AddArgument("-Djavax.net.ssl.trustStore=" + trustStoreName)
+ mc.AddArgument("-Djavax.net.ssl.trustStorePassword=" +
trustStorePass)
}
timeoutCtx, cancel := context.WithTimeout(ctx,
platform.Status.Build.GetTimeout().Duration)
diff --git a/pkg/util/jvm/keystore.go b/pkg/util/jvm/keystore.go
index 5b4cff9c3..8af6d209d 100644
--- a/pkg/util/jvm/keystore.go
+++ b/pkg/util/jvm/keystore.go
@@ -37,8 +37,8 @@ const (
var (
logger = log.WithName("keytool")
- loggerInfo = func(s string) string { logger.Info(s); return s }
- loggerError = func(s string) string { logger.Error(nil, s); return s }
+ loggerInfo = func(s string) string { logger.Info(s); return s }
+ loggerNil = func(s string) string { return s }
)
func GenerateKeystore(ctx context.Context, keystoreDir, keystoreName,
keystorePass string, data [][]byte) error {
@@ -47,9 +47,8 @@ func GenerateKeystore(ctx context.Context, keystoreDir,
keystoreName, keystorePa
cmd := exec.CommandContext(ctx, "keytool", args...)
cmd.Dir = keystoreDir
cmd.Stdin = bytes.NewReader(data)
- // keytool logs info messages to stderr, as stdout is used to
output results,
- // otherwise it logs error messages to stdout.
- err := util.RunAndLog(ctx, cmd, loggerInfo, loggerError)
+ // keytool logs info messages to stderr, as stdout is used to
output results, we just skip the printout.
+ err := util.RunAndLog(ctx, cmd, loggerInfo, loggerNil)
if err != nil {
return err
}
@@ -64,9 +63,8 @@ func GenerateKeystore(ctx context.Context, keystoreDir,
keystoreName, keystorePa
args := strings.Fields(fmt.Sprintf("-importkeystore -noprompt
-srckeystore %s -srcstorepass %s -destkeystore %s -deststorepass %s",
caCertsPath, "changeit", keystoreName, keystorePass))
cmd := exec.CommandContext(ctx, "keytool", args...)
cmd.Dir = keystoreDir
- // keytool logs info messages to stderr, as stdout is used to
output results,
- // otherwise it logs error messages to stdout.
- err := util.RunAndLog(ctx, cmd, loggerInfo, loggerError)
+ // keytool logs info messages to stderr, as stdout is used to
output results, we just skip the printout.
+ err := util.RunAndLog(ctx, cmd, loggerInfo, loggerNil)
if err != nil {
return err
}
diff --git a/pkg/util/jvm/keystore_test.go b/pkg/util/jvm/keystore_test.go
index be10cbae6..9ac9b4f4b 100644
--- a/pkg/util/jvm/keystore_test.go
+++ b/pkg/util/jvm/keystore_test.go
@@ -19,7 +19,9 @@ package jvm
import (
"context"
- "os"
+ "os/exec"
+ "path"
+ "strings"
"testing"
"github.com/apache/camel-k/v2/pkg/util"
@@ -28,26 +30,61 @@ import (
)
func TestGenerateKeystore(t *testing.T) {
+ ksDir := t.TempDir()
// Nil Data
var data [][]byte
ctx := context.Background()
- err := GenerateKeystore(ctx, "", "/tmp/keystore",
NewKeystorePassword(), data)
+ err := GenerateKeystore(ctx, ksDir, "my-ks", NewKeystorePassword(),
data)
require.NoError(t, err)
// Non-Nil Data
data = [][]byte{{0}, {1}}
- err = GenerateKeystore(ctx, "", "/tmp/keystore", NewKeystorePassword(),
data)
+ err = GenerateKeystore(ctx, ksDir, "my-ks", NewKeystorePassword(), data)
require.Error(t, err)
assert.Equal(t, "keytool error: java.io.IOException: keystore password
was incorrect: exit status 1", err.Error())
// Incorrect password format
- err = GenerateKeystore(ctx, "", "/tmp/keystore", "", data)
+ err = GenerateKeystore(ctx, ksDir, "my-ks", "", data)
require.Error(t, err)
- assert.Equal(t, "Illegal option: /tmp/keystore: exit status 1",
err.Error())
+ assert.Equal(t, "Illegal option: my-ks: exit status 1", err.Error())
- testFileExists, _ := util.FileExists("/tmp/keystore")
- if testFileExists {
- os.Remove("/tmp/keystore")
+}
+
+func TestGenerateValidKeystore(t *testing.T) {
+ ksDir := t.TempDir()
+
+ // Generate a valid sample certificate on the fly
+ ctx := context.Background()
+ args := []string{
+ "-genkeypair",
+ "-alias", "mycert",
+ "-keyalg", "RSA",
+ "-keysize", "2048",
+ "-validity", "7",
+ "-keystore", "my.jks",
+ "-storepass", "changeit",
+ "-keypass", "changeit",
+ "-dname", "CN=example.com, OU=IT, O=MyCompany, L=City,
ST=State, C=US",
}
+ cmd := exec.CommandContext(ctx, "keytool", args...)
+ cmd.Dir = ksDir
+ err := util.RunAndLog(ctx, cmd, loggerInfo, loggerNil)
+ require.NoError(t, err)
+ args = strings.Fields("-exportcert -alias mycert -keystore my.jks
-storepass changeit -rfc -file mycert.crt")
+ cmd = exec.CommandContext(ctx, "keytool", args...)
+ cmd.Dir = ksDir
+ err = util.RunAndLog(ctx, cmd, loggerInfo, loggerNil)
+ require.NoError(t, err)
+
+ content, err := util.ReadFile(path.Join(ksDir, "mycert.crt"))
+ require.NoError(t, err)
+
+ data := [][]byte{content}
+ err = GenerateKeystore(ctx, ksDir, "imported.jks",
NewKeystorePassword(), data)
+ require.NoError(t, err)
+
+ exists, err := util.FileExists(path.Join(ksDir, "imported.jks"))
+ require.NoError(t, err)
+ assert.True(t, exists, "missing the generated keystore")
}
diff --git a/pkg/util/maven/maven_command.go b/pkg/util/maven/maven_command.go
index b853ad560..d82c4512b 100644
--- a/pkg/util/maven/maven_command.go
+++ b/pkg/util/maven/maven_command.go
@@ -73,7 +73,6 @@ func (c *Command) DoSettings(ctx context.Context) error {
if _, err := os.Stat(c.context.LocalRepository); err != nil {
return err
}
-
args = append(args,
"-Dmaven.repo.local="+c.context.LocalRepository)
}