[
https://issues.apache.org/jira/browse/NIFI-14995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18021948#comment-18021948
]
ASF subversion and git services commented on NIFI-14995:
--------------------------------------------------------
Commit 3a26536ff9aef331542c99883936b66c0e71ed84 in nifi's branch
refs/heads/main from Pierre Villard
[ https://gitbox.apache.org/repos/asf?p=nifi.git;h=3a26536ff9 ]
NIFI-14995 Improved Flow Differences Filter to handle renameProperty and
createControllerService (#10327)
Signed-off-by: David Handermann <[email protected]>
> Improve Flow Differences Filter to account for renameProperty and
> createControllerService
> -----------------------------------------------------------------------------------------
>
> Key: NIFI-14995
> URL: https://issues.apache.org/jira/browse/NIFI-14995
> Project: Apache NiFi
> Issue Type: Improvement
> Reporter: Pierre Villard
> Assignee: Pierre Villard
> Priority: Major
> Time Spent: 40m
> Remaining Estimate: 0h
>
> As we use more and more the migrateProperties capabilities, we see that we
> have some corner cases where the automated changes are showing as local
> changes which is confusing because a user is upgrading without making any
> changes and the UI is showing that some local modifications have been made.
> Such scenarios should be better handled to not show local changes.
> One scenario has been handled in NIFI-14985 to better deal with removed
> properties.
> This Jira is to handle two additional scenarios (this is combined in a single
> Jira because of the approach taken that is introducing a concept of
> environmental context)
> h3. Rename property with parameters
> Let's consider a processor version N with
>
> {code:java}
> public static final PropertyDescriptor ACCESS_KEY_ID = new
> PropertyDescriptor.Builder()
> .name("Access Key")
> .displayName("Access Key ID")
> .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
> .required(false)
> .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
> .sensitive(true)
> .build(); {code}
> And then version N+1 with
>
>
> {code:java}
> public static final PropertyDescriptor ACCESS_KEY_ID = new
> PropertyDescriptor.Builder()
> .name("Access Key ID")
> .expressionLanguageSupported(ExpressionLanguageScope.ENVIRONMENT)
> .required(false)
> .addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
> .sensitive(true)
> .build();
> ...
> public void migrateProperties(PropertyConfiguration config) {
> config.renameProperty("Access Key", ACCESS_KEY_ID.getName());
> }{code}
> If the versioned flow is containing:
>
>
> {code:java}
> "groupIdentifier" : "flow-contents-group",
> "identifier" : "8de3b31b-0a70-3e01-a01c-4ed2fe3a4cbe",
> "name" : "AWS Credentials Provider",
> "properties" : {
> "Access Key" : "#{AWS Access Key ID}",
> "default-credentials" : "false",
> "Session Time" : "3600",
> "assume-role-sts-signer-override" : "Default Signature",
> "assume-role-sts-region" : "us-west-2",
> "Secret Key" : "#{AWS Secret Access Key}",
> "anonymous-credentials" : "false"
> }, {code}
> Then we would show two local changes:
>
> * Property Parameterization Removed - Property 'Access Key ID' is no longer
> a parameter reference
> * Property Parameterized - Property 'Access Key ID' was parameterized
> We should not be showing this as local changes.
> h3. Create Controller Service
> When using something like:
>
> {code:java}
> @Override
> public void migrateProperties(final PropertyConfiguration config) {
> if (!config.isPropertySet(ABC.getName())) {
> final String serviceId = config.createControllerService(
> "org.apache.nifi.foo",
> Map.of());
> config.setProperty(ABC, serviceId);
> }
> super.migrateProperties(config);
> } {code}
> Then we would be showing two local changes:
>
> * Property Added: the property ABC has been added
> * Component Created: a controller service has been created
> We should check that if the property being added is not a dynamic property,
> and is referencing the UUID of the created controller service, then both
> changes should not be showing as local changes.
> h3. Approach
> Introducing a richer EnvironmentalChangeContext that is reused across all
> comparisons. This is how we can link a couple of differences as related to
> the same change and decide to filter out the differences or not.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)