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

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new e0d6b49cd5 NIFI-11850 - CLI - add keep existing parameter context flag
e0d6b49cd5 is described below

commit e0d6b49cd5919f8a9128953e7ebf8f0c64b9f041
Author: Pierre Villard <[email protected]>
AuthorDate: Mon Jul 24 17:26:26 2023 +0200

    NIFI-11850 - CLI - add keep existing parameter context flag
    
    This closes #7520
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../nifi/toolkit/cli/impl/client/nifi/ProcessGroupClient.java |  3 +++
 .../cli/impl/client/nifi/impl/JerseyProcessGroupClient.java   |  7 +++++++
 .../apache/nifi/toolkit/cli/impl/command/CommandOption.java   |  2 ++
 .../nifi/toolkit/cli/impl/command/nifi/pg/PGImport.java       | 11 ++++++++++-
 4 files changed, 22 insertions(+), 1 deletion(-)

diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessGroupClient.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessGroupClient.java
index edbf08fe99..6c49e92ae8 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessGroupClient.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessGroupClient.java
@@ -38,6 +38,9 @@ public interface ProcessGroupClient {
     ProcessGroupEntity createProcessGroup(String parentGroupdId, 
ProcessGroupEntity entity)
             throws NiFiClientException, IOException;
 
+    ProcessGroupEntity createProcessGroup(String parentGroupdId, 
ProcessGroupEntity entity, boolean keepExisting)
+            throws NiFiClientException, IOException;
+
     ProcessGroupEntity getProcessGroup(String processGroupId) throws 
NiFiClientException, IOException;
 
     ProcessGroupEntity updateProcessGroup(ProcessGroupEntity entity) throws 
NiFiClientException, IOException;
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessGroupClient.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessGroupClient.java
index 4f2ad9e290..2f204e22fa 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessGroupClient.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessGroupClient.java
@@ -58,6 +58,12 @@ public class JerseyProcessGroupClient extends 
AbstractJerseyClient implements Pr
     @Override
     public ProcessGroupEntity createProcessGroup(final String parentGroupdId, 
final ProcessGroupEntity entity)
             throws NiFiClientException, IOException {
+        return createProcessGroup(parentGroupdId, entity, true);
+    }
+
+    @Override
+    public ProcessGroupEntity createProcessGroup(final String parentGroupdId, 
final ProcessGroupEntity entity, boolean keepExisting)
+            throws NiFiClientException, IOException {
 
         if (StringUtils.isBlank(parentGroupdId)) {
             throw new IllegalArgumentException("Parent process group id cannot 
be null or blank");
@@ -70,6 +76,7 @@ public class JerseyProcessGroupClient extends 
AbstractJerseyClient implements Pr
         return executeAction("Error creating process group", () -> {
             final WebTarget target = processGroupsTarget
                     .path("{id}/process-groups")
+                    .queryParam("parameterContextHandlingStrategy", 
keepExisting ? "KEEP_EXISTING" : "REPLACE")
                     .resolveTemplate("id", parentGroupdId);
 
             return getRequestBuilder(target).post(
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/CommandOption.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/CommandOption.java
index 5913871031..6c45f9f033 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/CommandOption.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/CommandOption.java
@@ -83,6 +83,8 @@ public enum CommandOption {
     PG_NAME("pgn", "processGroupName", "The name of a process group", true),
     PG_VAR_NAME("var", "varName", "The name of a variable", true),
     PG_VAR_VALUE("val", "varValue", "The value of a variable", true),
+    KEEP_EXISTING_PARAMETER_CONTEXT("kepc", "keep-existing-parameter-context", 
"If false, only directly associated Parameter Contexts will be copied, "
+            + "inherited Contexts with no direct assignment to a Process Group 
are ignored", true),
 
     POS_X("px", "posX", "The x coordinate of a position", true),
     POS_Y("py", "posY", "The y coordinate of a position", true),
diff --git 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGImport.java
 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGImport.java
index a3a279d107..8afed8b42b 100644
--- 
a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGImport.java
+++ 
b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/command/nifi/pg/PGImport.java
@@ -65,6 +65,7 @@ public class PGImport extends 
AbstractNiFiCommand<StringResult> {
         addOption(CommandOption.FLOW_VERSION.createOption());
         addOption(CommandOption.POS_X.createOption());
         addOption(CommandOption.POS_Y.createOption());
+        
addOption(CommandOption.KEEP_EXISTING_PARAMETER_CONTEXT.createOption());
     }
 
     @Override
@@ -78,6 +79,8 @@ public class PGImport extends 
AbstractNiFiCommand<StringResult> {
         final String posXStr = getArg(properties, CommandOption.POS_X);
         final String posYStr = getArg(properties, CommandOption.POS_Y);
 
+        String keepExistingPC = getArg(properties, 
CommandOption.KEEP_EXISTING_PARAMETER_CONTEXT);
+
         final boolean posXExists = StringUtils.isNotBlank(posXStr);
         final boolean posYExists = StringUtils.isNotBlank(posYStr);
 
@@ -89,6 +92,12 @@ public class PGImport extends 
AbstractNiFiCommand<StringResult> {
             throw new IllegalArgumentException("Missing X position - Please 
specify both X and Y, or specify neither");
         }
 
+        if(StringUtils.isNotBlank(keepExistingPC) && 
!(keepExistingPC.equals("true") || keepExistingPC.equals("false"))) {
+            throw new IllegalArgumentException("Keep Existing Parameter 
Context must be either true or false");
+        } else if (StringUtils.isBlank(keepExistingPC)) {
+            keepExistingPC = "true";
+        }
+
         // if a registry client is specified use it, otherwise see if there is 
only one available and use that,
         // if more than one is available then throw an exception because we 
don't know which one to use
         String registryId = getArg(properties, 
CommandOption.REGISTRY_CLIENT_ID);
@@ -140,7 +149,7 @@ public class PGImport extends 
AbstractNiFiCommand<StringResult> {
         pgEntity.setRevision(getInitialRevisionDTO());
 
         final ProcessGroupClient pgClient = client.getProcessGroupClient();
-        final ProcessGroupEntity createdEntity = 
pgClient.createProcessGroup(parentPgId, pgEntity);
+        final ProcessGroupEntity createdEntity = 
pgClient.createProcessGroup(parentPgId, pgEntity, 
Boolean.parseBoolean(keepExistingPC));
         return new StringResult(createdEntity.getId(), 
getContext().isInteractive());
     }
 

Reply via email to