This is an automated email from the ASF dual-hosted git repository.
pvillard 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 c0995a8824 NIFI-14781: Adding ParameterProvider support in resolving
compatible bundles during PG replace-request
c0995a8824 is described below
commit c0995a882482d6fb92a6387abf4e6aca4ae4c32e
Author: Joe Gresock <[email protected]>
AuthorDate: Wed Jul 23 16:58:39 2025 -0400
NIFI-14781: Adding ParameterProvider support in resolving compatible
bundles during PG replace-request
Signed-off-by: Pierre Villard <[email protected]>
This closes #10130.
---
.../src/main/java/org/apache/nifi/util/BundleUtils.java | 15 +++++++++++++++
.../main/java/org/apache/nifi/web/NiFiServiceFacade.java | 8 ++++++++
.../org/apache/nifi/web/StandardNiFiServiceFacade.java | 4 ++++
.../java/org/apache/nifi/web/api/FlowUpdateResource.java | 1 +
4 files changed, 28 insertions(+)
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
index 444ff8ed46..b596172705 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-framework-components/src/main/java/org/apache/nifi/util/BundleUtils.java
@@ -18,6 +18,7 @@ package org.apache.nifi.util;
import org.apache.nifi.bundle.Bundle;
import org.apache.nifi.bundle.BundleCoordinate;
+import org.apache.nifi.flow.ParameterProviderReference;
import org.apache.nifi.flow.VersionedConfigurableExtension;
import org.apache.nifi.flow.VersionedProcessGroup;
import org.apache.nifi.flow.VersionedReportingTaskSnapshot;
@@ -27,6 +28,7 @@ import org.apache.nifi.nar.PythonBundle;
import org.apache.nifi.web.api.dto.BundleDTO;
import java.util.List;
+import java.util.Map;
import java.util.Optional;
/**
@@ -240,6 +242,19 @@ public final class BundleUtils {
}
}
+ public static void discoverCompatibleBundles(final ExtensionManager
extensionManager, final Map<String, ParameterProviderReference>
parameterProviders) {
+ if (parameterProviders != null) {
+ parameterProviders.values().forEach(parameterProvider ->
discoverCompatibleBundle(extensionManager, parameterProvider));
+ }
+ }
+
+ public static void discoverCompatibleBundle(final ExtensionManager
extensionManager, final ParameterProviderReference parameterProviderReference) {
+ final BundleDTO dto =
createBundleDto(parameterProviderReference.getBundle());
+ final BundleCoordinate coordinate =
getOptionalCompatibleBundle(extensionManager,
parameterProviderReference.getType(), dto).orElse(
+ new BundleCoordinate(dto.getGroup(), dto.getArtifact(),
dto.getVersion()));
+ parameterProviderReference.setBundle(createBundle(coordinate));
+ }
+
public static void discoverCompatibleBundle(final ExtensionManager
extensionManager, final VersionedConfigurableExtension extension) {
final BundleDTO dto = createBundleDto(extension.getBundle());
final BundleCoordinate coordinate =
getOptionalCompatibleBundle(extensionManager, extension.getType(), dto).orElse(
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
index 15ebf20d4a..480e7383f1 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
@@ -2782,6 +2782,14 @@ public interface NiFiServiceFacade {
*/
void discoverCompatibleBundles(VersionedProcessGroup versionedGroup);
+ /**
+ * Discovers the compatible bundle details for the components in the
specified Parameter Providers and updates them
+ * to reflect the appropriate bundles.
+ *
+ * @param parameterProviders the parameter provider map
+ */
+ void discoverCompatibleBundles(Map<String, ParameterProviderReference>
parameterProviders);
+
/**
* Discovers the compatible bundle details for the components in the
specified snapshot and updates the snapshot to reflect the appropriate bundles.
*
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
index 3aed540382..e04112118f 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
@@ -4108,6 +4108,10 @@ public class StandardNiFiServiceFacade implements
NiFiServiceFacade {
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(),
versionedGroup);
}
+ public void discoverCompatibleBundles(final Map<String,
ParameterProviderReference> parameterProviders) {
+
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(),
parameterProviders);
+ }
+
@Override
public void discoverCompatibleBundles(final VersionedReportingTaskSnapshot
reportingTaskSnapshot) {
BundleUtils.discoverCompatibleBundles(controllerFacade.getExtensionManager(),
reportingTaskSnapshot);
diff --git
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
index 6c502b1ee6..63dadca337 100644
---
a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
+++
b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowUpdateResource.java
@@ -193,6 +193,7 @@ public abstract class FlowUpdateResource<T extends
ProcessGroupDescriptorEntity,
// The new flow may not contain the same versions of components in
existing flow. As a result, we need to update
// the flow snapshot to contain compatible bundles.
serviceFacade.discoverCompatibleBundles(flowSnapshot.getFlowContents());
+
serviceFacade.discoverCompatibleBundles(flowSnapshot.getParameterProviders());
// If there are any Controller Services referenced that are inherited
from the parent group, resolve those to point to the appropriate Controller
Service, if we are able to.
final Set<String> unresolvedControllerServices =
serviceFacade.resolveInheritedControllerServices(flowSnapshotContainer,
groupId, user);