[ 
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)

Reply via email to