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 2020/11/24 14:17:10 UTC

[camel-k] branch master updated (280b623 -> 7b665f0)

This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git.


    from 280b623  Sort the configurations before returning
     new 2089449  Support CLI properties for kamel local run.
     new 7b665f0  Clean-up.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 deploy/resources.go          |  4 +--
 pkg/cmd/local_run.go         | 15 ++++++----
 pkg/cmd/local_run_test.go    | 20 +++++++++++++
 pkg/cmd/run.go               | 13 ++-------
 pkg/cmd/util_commands.go     |  2 +-
 pkg/cmd/util_dependencies.go | 69 ++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 105 insertions(+), 18 deletions(-)


[camel-k] 01/02: Support CLI properties for kamel local run.

Posted by nf...@apache.org.
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 20894493ce2156951d51769412b3448272f56f30
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Nov 18 18:04:08 2020 -0500

    Support CLI properties for kamel local run.
---
 deploy/resources.go          |  4 +--
 pkg/cmd/local_run.go         | 15 ++++++----
 pkg/cmd/local_run_test.go    | 20 +++++++++++++
 pkg/cmd/run.go               | 13 ++-------
 pkg/cmd/util_commands.go     |  2 +-
 pkg/cmd/util_dependencies.go | 69 ++++++++++++++++++++++++++++++++++++++++++++
 6 files changed, 105 insertions(+), 18 deletions(-)

diff --git a/deploy/resources.go b/deploy/resources.go
index f432da1..a76d437 100644
--- a/deploy/resources.go
+++ b/deploy/resources.go
@@ -340,9 +340,9 @@ var assets = func() http.FileSystem {
 		"/traits.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "traits.yaml",
 			modTime:          time.Time{},
-			uncompressedSize: 32828,
+			uncompressedSize: 33738,
 
-			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6d\x73\x1b\x37\x92\xf0\xf7\xfc\x0a\x94\x9e\xa7\x4a\xa2\x8a\x1c\xc9\xd9\xca\x26\xab\xbb\x5c\x4a\xeb\x38\xbb\x72\x62\x5b\x67\x39\xc9\x5d\xe5\xb6\x96\xe0\x4c\x93\x84\x85\x01\x66\x01\x0c\x65\xe6\xea\xfe\xfb\x55\x37\x5e\x06\x33\x1c\x49\x94\x63\xa5\xb4\x55\x57\xf9\x10\x93\x9a\x69\x34\x1a\xfd\xfe\x02\x3a\xc3\x85\xb3\x67\x9f\xcd\x98\xe2\x35\x9c\x31\xbe\x5c\x0a\x25\xdc\xf6\x33\xc6\x1a\xc9\xdd\x52\x9b\xfa\x8c\x2d\xb9\x [...]
+			compressedContent: []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6d\x6f\xdc\xb6\xd6\xe0\xf7\xfe\x0a\xc2\xbb\x80\x3d\xc6\x48\x76\x7a\xd1\xdb\x5e\xef\x76\x0b\x37\x49\xef\x75\xda\x24\xde\x38\x6d\x77\xd1\xbd\xb8\xc3\x91\xce\xcc\x30\xa6\x48\x3d\x24\x35\xce\x74\xb1\xff\x7d\xc1\xc3\x57\x69\x64\x5b\x4e\xe3\xc2\x17\x78\x90\x0f\xb1\xc7\x12\x79\x78\x78\xde\xdf\xc6\x28\xca\x8c\x3e\xfb\xa2\x20\x82\x36\x70\x46\xe8\x6a\xc5\x04\x33\xbb\x2f\x08\x69\x39\x35\x2b\xa9\x9a\x33\xb2\xa2\x5c\x83\x [...]
 		},
 		"/user-cluster-role.yaml": &vfsgen۰CompressedFileInfo{
 			name:             "user-cluster-role.yaml",
diff --git a/pkg/cmd/local_run.go b/pkg/cmd/local_run.go
index f2b86f4..4f45493 100644
--- a/pkg/cmd/local_run.go
+++ b/pkg/cmd/local_run.go
@@ -19,7 +19,6 @@ package cmd
 
 import (
 	"fmt"
-	"strings"
 
 	"github.com/spf13/cobra"
 )
@@ -56,9 +55,8 @@ func newCmdLocalRun(rootCmdOptions *RootCmdOptions) (*cobra.Command, *localRunCm
 	}
 
 	cmd.Flags().StringArray("property-file", nil, "Add a property file to the integration.")
-	cmd.Flags().StringArrayP("dependency", "d", nil, `Additional top-level dependency with the format:
-<type>:<dependency-name>
-where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
+	cmd.Flags().StringArrayP("property", "p", nil, "Add a camel property.")
+	cmd.Flags().StringArrayP("dependency", "d", nil, additionalDependencyUsageMessage)
 
 	return &cmd, &options
 }
@@ -66,6 +64,7 @@ where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
 type localRunCmdOptions struct {
 	*RootCmdOptions
 	PropertyFiles          []string `mapstructure:"property-files"`
+	Properties             []string `mapstructure:"properties"`
 	AdditionalDependencies []string `mapstructure:"dependencies"`
 }
 
@@ -77,7 +76,7 @@ func (command *localRunCmdOptions) validate(args []string) error {
 	}
 
 	// Validate properties file.
-	err = validateFiles(command.PropertyFiles)
+	err = validatePropertyFiles(command.PropertyFiles)
 	if err != nil {
 		return nil
 	}
@@ -96,6 +95,12 @@ func (command *localRunCmdOptions) run(args []string) error {
 		return err
 	}
 
+	// Manage integration properties which may come from files or CLI.
+	err = updateIntegrationProperties(command)
+	if err != nil {
+		return nil
+	}
+
 	// Run the integration locally.
 	err = RunLocalIntegration(command.PropertyFiles, dependencies, args)
 	if err != nil {
diff --git a/pkg/cmd/local_run_test.go b/pkg/cmd/local_run_test.go
index 72f84f2..95f5657 100644
--- a/pkg/cmd/local_run_test.go
+++ b/pkg/cmd/local_run_test.go
@@ -57,6 +57,26 @@ func TestLocalRunPropertyFileFlag(t *testing.T) {
 	}
 }
 
+func TestLocalRunPropertiesFlag(t *testing.T) {
+	options, rootCmd := kamelTestPreAddCommandInit()
+
+	localRunCmdOptions := addTestLocalRunCmd(options, rootCmd)
+
+	kamelTestPostAddCommandInit(t, rootCmd)
+
+	_, err := test.ExecuteCommand(rootCmd, "local", "run", "route.java", "-p", "prop1=value1", "-p", "prop2=value2")
+	if err != nil {
+		t.Fatalf("Unexpected error: %v", err)
+	}
+
+	if len(localRunCmdOptions.Properties) != 2 {
+		t.Fatalf("Additional dependencies expected to contain: \n %v elements\nGot:\n %v elements\n", 2, len(localRunCmdOptions.Properties))
+	}
+	if localRunCmdOptions.Properties[0] != "prop1=value1" || localRunCmdOptions.Properties[1] != "prop2=value2" {
+		t.Fatalf("Additional dependencies expected to be: \n %v\nGot:\n %v\n", "[prop1=value1, prop2=value2]", localRunCmdOptions.Properties)
+	}
+}
+
 func TestLocalRunAdditionalDependenciesFlag(t *testing.T) {
 	options, rootCmd := kamelTestPreAddCommandInit()
 
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index e484d39..5904272 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -218,16 +218,9 @@ func (o *runCmdOptions) validate() error {
 		}
 	}
 
-	for _, fileName := range o.PropertyFiles {
-		if !strings.HasSuffix(fileName, ".properties") {
-			return fmt.Errorf("supported property files must have a .properties extension: %s", fileName)
-		}
-
-		if file, err := os.Stat(fileName); err != nil {
-			return errors.Wrapf(err, "unable to access property file %s", fileName)
-		} else if file.IsDir() {
-			return fmt.Errorf("property file %s is a directory", fileName)
-		}
+	err := validatePropertyFiles(o.PropertyFiles)
+	if err != nil {
+		return err
 	}
 
 	for _, label := range o.Labels {
diff --git a/pkg/cmd/util_commands.go b/pkg/cmd/util_commands.go
index b44243a..4819935 100644
--- a/pkg/cmd/util_commands.go
+++ b/pkg/cmd/util_commands.go
@@ -86,7 +86,7 @@ func RunLocalIntegration(properties []string, dependencies []string, routes []st
 	fmt.Printf("executing: %s", strings.Join(cmd.Args, " "))
 
 	// Add directory where the properties file resides.
-	cmd.Env = append(cmd.Env, "CAMEL_K_CONF_D="+strings.Join(confDirectories(properties), ","))
+	cmd.Env = append(cmd.Env, "CAMEL_K_CONF_D="+getPropertiesDir())
 
 	// Add files to the command line under the CAMEL_K_ROUTES flag.
 	cmd.Env = append(cmd.Env, "CAMEL_K_ROUTES="+strings.Join(formatRoutes(routes), ","))
diff --git a/pkg/cmd/util_dependencies.go b/pkg/cmd/util_dependencies.go
index 30722a7..c73f56b 100644
--- a/pkg/cmd/util_dependencies.go
+++ b/pkg/cmd/util_dependencies.go
@@ -305,6 +305,75 @@ func validateIntegrationForDependencies(args []string, additionalDependencies []
 	return nil
 }
 
+func validatePropertyFiles(propertyFiles []string) error {
+	for _, fileName := range propertyFiles {
+		if !strings.HasSuffix(fileName, ".properties") {
+			return fmt.Errorf("supported property files must have a .properties extension: %s", fileName)
+		}
+
+		if file, err := os.Stat(fileName); err != nil {
+			return errors.Wrapf(err, "unable to access property file %s", fileName)
+		} else if file.IsDir() {
+			return fmt.Errorf("property file %s is a directory", fileName)
+		}
+	}
+
+	return nil
+}
+
+func getPropertiesDir() string {
+	// Directory is created under the maven directory which is removed.
+	return path.Join(mavenWorkingDirectory, "properties")
+}
+
+func createPropertiesDirectory() error {
+	// Check directory exists.
+	directoryExists, err := util.DirectoryExists(getPropertiesDir())
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		err := os.MkdirAll(getPropertiesDir(), 0777)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func updateIntegrationProperties(command *localRunCmdOptions) error {
+	// Create properties directory under Maven working directory. This ensures that
+	// property files of different integrations do not clash.
+	err := createPropertiesDirectory()
+	if err != nil {
+		return err
+	}
+
+	// Relocate properties files to this integration's property directory.
+	relocatedPropertyFiles := []string{}
+	for _, propertyFile := range command.PropertyFiles {
+		relocatedPropertyFile := path.Join(getPropertiesDir(), path.Base(propertyFile))
+		util.CopyFile(propertyFile, relocatedPropertyFile)
+		relocatedPropertyFiles = append(relocatedPropertyFiles, relocatedPropertyFile)
+	}
+
+	// Output list of properties to property file if any CLI properties were given.
+	if len(command.Properties) > 0 {
+		propertyFilePath := path.Join(getPropertiesDir(), "CLI.properties")
+		err = ioutil.WriteFile(propertyFilePath, []byte(strings.Join(command.Properties, "\n")), 0777)
+		if err != nil {
+			return err
+		}
+		relocatedPropertyFiles = append(relocatedPropertyFiles, propertyFilePath)
+	}
+
+	// Update command PropertyFiles.
+	command.PropertyFiles = relocatedPropertyFiles
+
+	return nil
+}
+
 func createMavenWorkingDirectory() error {
 	// Create local Maven context.
 	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")


[camel-k] 02/02: Clean-up.

Posted by nf...@apache.org.
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 7b665f0ad62531523f3119d6f62b59f6dbc8a6b4
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 19 13:30:27 2020 -0500

    Clean-up.
---
 pkg/cmd/local_run.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg/cmd/local_run.go b/pkg/cmd/local_run.go
index 4f45493..01adfa9 100644
--- a/pkg/cmd/local_run.go
+++ b/pkg/cmd/local_run.go
@@ -55,7 +55,7 @@ func newCmdLocalRun(rootCmdOptions *RootCmdOptions) (*cobra.Command, *localRunCm
 	}
 
 	cmd.Flags().StringArray("property-file", nil, "Add a property file to the integration.")
-	cmd.Flags().StringArrayP("property", "p", nil, "Add a camel property.")
+	cmd.Flags().StringArrayP("property", "p", nil, "Add a Camel property to the integration.")
 	cmd.Flags().StringArrayP("dependency", "d", nil, additionalDependencyUsageMessage)
 
 	return &cmd, &options