You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2023/07/24 18:15:48 UTC
[nifi] branch support/nifi-1.x updated: NIFI-11850 - CLI - add keep existing parameter context flag
This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
new 7eef97213d NIFI-11850 - CLI - add keep existing parameter context flag
7eef97213d is described below
commit 7eef97213db7f6e3829431de7c320f471cc7e1c1
Author: Pierre Villard <pi...@gmail.com>
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 <ex...@apache.org>
(cherry picked from commit e0d6b49cd5919f8a9128953e7ebf8f0c64b9f041)
---
.../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());
}