You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jg...@apache.org on 2021/10/18 15:43:05 UTC
[nifi] branch main updated: NIFI-9288: Updated data model to use
for cnofig verification requests so that only properties are necessary not
the full component/config dtos. Also added endpoint necessary for
determining which attributes are referenced by a component's properties and
removed the referencedAttributes field from the compnoents themselves,
since there's now a new endpoint for it. Also fixed a bug that was
encountered where the VerifyConfigRequestDTO's complete flag was incorrect
in case of failures
This is an automated email from the ASF dual-hosted git repository.
jgresock 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 151a936 NIFI-9288: Updated data model to use for cnofig verification requests so that only properties are necessary not the full component/config dtos. Also added endpoint necessary for determining which attributes are referenced by a component's properties and removed the referencedAttributes field from the compnoents themselves, since there's now a new endpoint for it. Also fixed a bug that was encountered where the VerifyConfigRequestDTO's complete flag was incorrect in case [...]
151a936 is described below
commit 151a9361facfe8d0a71203584b7bf4330e8e8f38
Author: Mark Payne <ma...@hotmail.com>
AuthorDate: Mon Oct 11 11:18:42 2021 -0400
NIFI-9288: Updated data model to use for cnofig verification requests so that only properties are necessary not the full component/config dtos. Also added endpoint necessary for determining which attributes are referenced by a component's properties and removed the referencedAttributes field from the compnoents themselves, since there's now a new endpoint for it. Also fixed a bug that was encountered where the VerifyConfigRequestDTO's complete flag was incorrect in case of failures
Signed-off-by: Joe Gresock <jg...@gmail.com>
This closes #5452.
---
.../nifi/web/api/dto/ConfigurationAnalysisDTO.java | 57 +++++++++
.../nifi/web/api/dto/ControllerServiceDTO.java | 11 --
.../nifi/web/api/dto/ProcessorConfigDTO.java | 10 --
...RequestDTO.java => VerifyConfigRequestDTO.java} | 28 ++---
.../VerifyControllerServiceConfigRequestDTO.java | 69 -----------
.../dto/VerifyReportingTaskConfigRequestDTO.java | 58 ---------
...ntity.java => ConfigurationAnalysisEntity.java} | 18 +--
...tEntity.java => VerifyConfigRequestEntity.java} | 12 +-
.../VerifyReportingTaskConfigRequestEntity.java | 37 ------
.../http/StandardHttpResponseMapper.java | 8 +-
...Merger.java => VerifyConfigEndpointMerger.java} | 24 ++--
...erifyControllerServiceConfigEndpointMerger.java | 73 ------------
.../VerifyReportingTaskConfigEndpointMerger.java | 71 -----------
.../nifi/controller/AbstractComponentNode.java | 4 +-
.../org/apache/nifi/controller/TemplateUtils.java | 2 -
.../org/apache/nifi/web/NiFiServiceFacade.java | 39 +++++--
.../apache/nifi/web/StandardNiFiServiceFacade.java | 87 +++++++++++++-
.../nifi/web/api/ControllerServiceResource.java | 126 +++++++++++++++-----
.../org/apache/nifi/web/api/ProcessorResource.java | 130 +++++++++++++++------
.../apache/nifi/web/api/ReportingTaskResource.java | 126 +++++++++++++++-----
.../web/api/concurrent/StandardUpdateStep.java | 2 +-
.../org/apache/nifi/web/api/dto/DtoFactory.java | 4 -
.../apache/nifi/web/dao/ControllerServiceDAO.java | 4 +-
.../java/org/apache/nifi/web/dao/ProcessorDAO.java | 5 +-
.../org/apache/nifi/web/dao/ReportingTaskDAO.java | 5 +-
.../web/dao/impl/StandardControllerServiceDAO.java | 4 +-
.../nifi/web/dao/impl/StandardProcessorDAO.java | 4 +-
.../web/dao/impl/StandardReportingTaskDAO.java | 4 +-
.../apache/nifi/tests/system/NiFiClientUtil.java | 45 +++----
.../impl/client/nifi/ControllerServicesClient.java | 8 +-
.../cli/impl/client/nifi/ProcessorClient.java | 8 +-
.../cli/impl/client/nifi/ReportingTasksClient.java | 8 +-
.../nifi/impl/JerseyControllerServicesClient.java | 22 ++--
.../client/nifi/impl/JerseyProcessorClient.java | 22 ++--
.../nifi/impl/JerseyReportingTasksClient.java | 22 ++--
35 files changed, 578 insertions(+), 579 deletions(-)
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ConfigurationAnalysisDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ConfigurationAnalysisDTO.java
new file mode 100644
index 0000000..29481f0
--- /dev/null
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ConfigurationAnalysisDTO.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.nifi.web.api.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.xml.bind.annotation.XmlType;
+import java.util.Map;
+
+@XmlType(name = "configurationAnalysis")
+public class ConfigurationAnalysisDTO {
+ private String componentId;
+ private Map<String, String> properties;
+ private Map<String, String> referencedAttributes;
+
+ @ApiModelProperty("The ID of the component")
+ public String getComponentId() {
+ return componentId;
+ }
+
+ public void setComponentId(final String componentId) {
+ this.componentId = componentId;
+ }
+
+ @ApiModelProperty("The configured properties for the component")
+ public Map<String, String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(final Map<String, String> properties) {
+ this.properties = properties;
+ }
+
+ @ApiModelProperty("The attributes that are referenced by the properties, mapped to recently used values")
+ public Map<String, String> getReferencedAttributes() {
+ return referencedAttributes;
+ }
+
+ public void setReferencedAttributes(final Map<String, String> referencedAttributes) {
+ this.referencedAttributes = referencedAttributes;
+ }
+}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ControllerServiceDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ControllerServiceDTO.java
index bf88780..cb3824f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ControllerServiceDTO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ControllerServiceDTO.java
@@ -17,7 +17,6 @@
package org.apache.nifi.web.api.dto;
import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiModelProperty.AccessMode;
import org.apache.nifi.web.api.entity.ControllerServiceReferencingComponentEntity;
import javax.xml.bind.annotation.XmlType;
@@ -46,7 +45,6 @@ public class ControllerServiceDTO extends ComponentDTO {
private Boolean deprecated;
private Boolean isExtensionMissing;
private Boolean multipleVersionsAvailable;
- private Set<String> referencedAttributes;
private Map<String, String> properties;
private Map<String, PropertyDescriptorDTO> descriptors;
@@ -315,15 +313,6 @@ public class ControllerServiceDTO extends ComponentDTO {
this.validationStatus = validationStatus;
}
- @ApiModelProperty(value = "The set of FlowFile Attributes that are referenced via Expression Language by the configured properties", accessMode = AccessMode.READ_ONLY)
- public Set<String> getReferencedAttributes() {
- return referencedAttributes;
- }
-
- public void setReferencedAttributes(final Set<String> referencedAttributes) {
- this.referencedAttributes = referencedAttributes;
- }
-
@Override
public int hashCode() {
final String id = getId();
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessorConfigDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessorConfigDTO.java
index 3d40e60..780e8ac 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessorConfigDTO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/ProcessorConfigDTO.java
@@ -17,7 +17,6 @@
package org.apache.nifi.web.api.dto;
import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiModelProperty.AccessMode;
import javax.xml.bind.annotation.XmlType;
import java.util.Map;
@@ -51,7 +50,6 @@ public class ProcessorConfigDTO {
private Map<String, String> defaultConcurrentTasks;
private Map<String, String> defaultSchedulingPeriod;
- private Set<String> referencedAttributes;
public ProcessorConfigDTO() {
@@ -310,12 +308,4 @@ public class ProcessorConfigDTO {
this.defaultSchedulingPeriod = defaultSchedulingPeriod;
}
- @ApiModelProperty(value = "The set of FlowFile Attributes that are referenced via Expression Language by the configured properties", accessMode = AccessMode.READ_ONLY)
- public Set<String> getReferencedAttributes() {
- return referencedAttributes;
- }
-
- public void setReferencedAttributes(final Set<String> referencedAttributes) {
- this.referencedAttributes = referencedAttributes;
- }
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyProcessorConfigRequestDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyConfigRequestDTO.java
similarity index 70%
rename from nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyProcessorConfigRequestDTO.java
rename to nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyConfigRequestDTO.java
index 744cfad..d10af04 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyProcessorConfigRequestDTO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyConfigRequestDTO.java
@@ -24,29 +24,29 @@ import javax.xml.bind.annotation.XmlType;
import java.util.List;
import java.util.Map;
-@XmlType(name = "verifyProcessorConfigRequest")
-public class VerifyProcessorConfigRequestDTO extends AsynchronousRequestDTO<VerifyConfigUpdateStepDTO> {
- private String processorId;
- private ProcessorConfigDTO processorConfigDTO;
+@XmlType(name = "verifyConfigRequest")
+public class VerifyConfigRequestDTO extends AsynchronousRequestDTO<VerifyConfigUpdateStepDTO> {
+ private String componentId;
+ private Map<String, String> properties;
private Map<String, String> attributes;
private List<ConfigVerificationResultDTO> results;
- @ApiModelProperty("The ID of the Processor whose configuration was verified")
- public String getProcessorId() {
- return processorId;
+ @ApiModelProperty("The ID of the component whose configuration was verified")
+ public String getComponentId() {
+ return componentId;
}
- public void setProcessorId(final String processorId) {
- this.processorId = processorId;
+ public void setComponentId(final String componentId) {
+ this.componentId = componentId;
}
- @ApiModelProperty("The configuration for the Processor")
- public ProcessorConfigDTO getProcessorConfig() {
- return processorConfigDTO;
+ @ApiModelProperty("The configured component properties")
+ public Map<String, String> getProperties() {
+ return properties;
}
- public void setProcessorConfig(final ProcessorConfigDTO processorConfigDTO) {
- this.processorConfigDTO = processorConfigDTO;
+ public void setProperties(final Map<String, String> properties) {
+ this.properties = properties;
}
@ApiModelProperty("FlowFile Attributes that should be used to evaluate Expression Language for resolving property values")
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyControllerServiceConfigRequestDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyControllerServiceConfigRequestDTO.java
deleted file mode 100644
index e0bb49c..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyControllerServiceConfigRequestDTO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.web.api.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiModelProperty.AccessMode;
-
-import javax.xml.bind.annotation.XmlType;
-import java.util.List;
-import java.util.Map;
-
-@XmlType(name = "verifyControllerServiceConfigRequest")
-public class VerifyControllerServiceConfigRequestDTO extends AsynchronousRequestDTO<VerifyConfigUpdateStepDTO> {
- private String controllerServiceId;
- private ControllerServiceDTO controllerService;
- private Map<String, String> attributes;
- private List<ConfigVerificationResultDTO> results;
-
- @ApiModelProperty("The ID of the Controller Service whose configuration was verified")
- public String getControllerServiceId() {
- return controllerServiceId;
- }
-
- public void setControllerServiceId(final String controllerServiceId) {
- this.controllerServiceId = controllerServiceId;
- }
-
- @ApiModelProperty("The Controller Service")
- public ControllerServiceDTO getControllerService() {
- return controllerService;
- }
-
- public void setControllerService(final ControllerServiceDTO controllerService) {
- this.controllerService = controllerService;
- }
-
- @ApiModelProperty("FlowFile Attributes that should be used to evaluate Expression Language for resolving property values")
- public Map<String, String> getAttributes() {
- return attributes;
- }
-
- public void setAttributes(final Map<String, String> attributes) {
- this.attributes = attributes;
- }
-
- @ApiModelProperty(value="The Results of the verification", accessMode = AccessMode.READ_ONLY)
- public List<ConfigVerificationResultDTO> getResults() {
- return results;
- }
-
- public void setResults(final List<ConfigVerificationResultDTO> results) {
- this.results = results;
- }
-}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyReportingTaskConfigRequestDTO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyReportingTaskConfigRequestDTO.java
deleted file mode 100644
index 07a87c8..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/dto/VerifyReportingTaskConfigRequestDTO.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.web.api.dto;
-
-import io.swagger.annotations.ApiModelProperty;
-import io.swagger.annotations.ApiModelProperty.AccessMode;
-
-import javax.xml.bind.annotation.XmlType;
-import java.util.List;
-
-@XmlType(name = "verifyReportingTaskConfigRequest")
-public class VerifyReportingTaskConfigRequestDTO extends AsynchronousRequestDTO<VerifyConfigUpdateStepDTO> {
- private String reportingTaskId;
- private ReportingTaskDTO reportingTask;
- private List<ConfigVerificationResultDTO> results;
-
- @ApiModelProperty("The ID of the Controller Service whose configuration was verified")
- public String getReportingTaskId() {
- return reportingTaskId;
- }
-
- public void setReportingTaskId(final String reportingTaskId) {
- this.reportingTaskId = reportingTaskId;
- }
-
- @ApiModelProperty("The Controller Service")
- public ReportingTaskDTO getReportingTask() {
- return reportingTask;
- }
-
- public void setReportingTask(final ReportingTaskDTO reportingTask) {
- this.reportingTask = reportingTask;
- }
-
- @ApiModelProperty(value="The Results of the verification", accessMode = AccessMode.READ_ONLY)
- public List<ConfigVerificationResultDTO> getResults() {
- return results;
- }
-
- public void setResults(final List<ConfigVerificationResultDTO> results) {
- this.results = results;
- }
-}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyControllerServiceConfigRequestEntity.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ConfigurationAnalysisEntity.java
similarity index 64%
rename from nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyControllerServiceConfigRequestEntity.java
rename to nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ConfigurationAnalysisEntity.java
index 822a689..ff1b60d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyControllerServiceConfigRequestEntity.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/ConfigurationAnalysisEntity.java
@@ -18,20 +18,20 @@
package org.apache.nifi.web.api.entity;
import io.swagger.annotations.ApiModelProperty;
-import org.apache.nifi.web.api.dto.VerifyControllerServiceConfigRequestDTO;
+import org.apache.nifi.web.api.dto.ConfigurationAnalysisDTO;
import javax.xml.bind.annotation.XmlRootElement;
-@XmlRootElement(name="verifyControllerServiceConfigRequest")
-public class VerifyControllerServiceConfigRequestEntity extends Entity {
- private VerifyControllerServiceConfigRequestDTO request;
+@XmlRootElement(name = "configurationAnalysis")
+public class ConfigurationAnalysisEntity extends Entity {
+ private ConfigurationAnalysisDTO configurationAnalysis;
- @ApiModelProperty("The request")
- public VerifyControllerServiceConfigRequestDTO getRequest() {
- return request;
+ @ApiModelProperty("The configuration analysis")
+ public ConfigurationAnalysisDTO getConfigurationAnalysis() {
+ return configurationAnalysis;
}
- public void setRequest(final VerifyControllerServiceConfigRequestDTO request) {
- this.request = request;
+ public void setConfigurationAnalysis(final ConfigurationAnalysisDTO configurationAnalysis) {
+ this.configurationAnalysis = configurationAnalysis;
}
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyProcessorConfigRequestEntity.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyConfigRequestEntity.java
similarity index 73%
rename from nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyProcessorConfigRequestEntity.java
rename to nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyConfigRequestEntity.java
index 8b0dd9a..c5b444c 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyProcessorConfigRequestEntity.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyConfigRequestEntity.java
@@ -18,20 +18,20 @@
package org.apache.nifi.web.api.entity;
import io.swagger.annotations.ApiModelProperty;
-import org.apache.nifi.web.api.dto.VerifyProcessorConfigRequestDTO;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
import javax.xml.bind.annotation.XmlRootElement;
-@XmlRootElement(name="verifyProcessorConfigRequest")
-public class VerifyProcessorConfigRequestEntity extends Entity {
- private VerifyProcessorConfigRequestDTO request;
+@XmlRootElement(name="verifyConfigRequest")
+public class VerifyConfigRequestEntity extends Entity {
+ private VerifyConfigRequestDTO request;
@ApiModelProperty("The request")
- public VerifyProcessorConfigRequestDTO getRequest() {
+ public VerifyConfigRequestDTO getRequest() {
return request;
}
- public void setRequest(final VerifyProcessorConfigRequestDTO request) {
+ public void setRequest(final VerifyConfigRequestDTO request) {
this.request = request;
}
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyReportingTaskConfigRequestEntity.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyReportingTaskConfigRequestEntity.java
deleted file mode 100644
index 318bf0b..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-client-dto/src/main/java/org/apache/nifi/web/api/entity/VerifyReportingTaskConfigRequestEntity.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.web.api.entity;
-
-import io.swagger.annotations.ApiModelProperty;
-import org.apache.nifi.web.api.dto.VerifyReportingTaskConfigRequestDTO;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement(name="verifyReportingTaskConfigRequest")
-public class VerifyReportingTaskConfigRequestEntity extends Entity {
- private VerifyReportingTaskConfigRequestDTO request;
-
- @ApiModelProperty("The request")
- public VerifyReportingTaskConfigRequestDTO getRequest() {
- return request;
- }
-
- public void setRequest(final VerifyReportingTaskConfigRequestDTO request) {
- this.request = request;
- }
-}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/StandardHttpResponseMapper.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/StandardHttpResponseMapper.java
index 76fa4a8..fde9097 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/StandardHttpResponseMapper.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/StandardHttpResponseMapper.java
@@ -77,9 +77,7 @@ import org.apache.nifi.cluster.coordination.http.endpoints.UserGroupEndpointMerg
import org.apache.nifi.cluster.coordination.http.endpoints.UserGroupsEndpointMerger;
import org.apache.nifi.cluster.coordination.http.endpoints.UsersEndpointMerger;
import org.apache.nifi.cluster.coordination.http.endpoints.VariableRegistryEndpointMerger;
-import org.apache.nifi.cluster.coordination.http.endpoints.VerifyControllerServiceConfigEndpointMerger;
-import org.apache.nifi.cluster.coordination.http.endpoints.VerifyProcessorConfigEndpointMerger;
-import org.apache.nifi.cluster.coordination.http.endpoints.VerifyReportingTaskConfigEndpointMerger;
+import org.apache.nifi.cluster.coordination.http.endpoints.VerifyConfigEndpointMerger;
import org.apache.nifi.cluster.coordination.http.replication.RequestReplicator;
import org.apache.nifi.cluster.manager.NodeResponse;
import org.apache.nifi.stream.io.NullOutputStream;
@@ -172,9 +170,7 @@ public class StandardHttpResponseMapper implements HttpResponseMapper {
endpointMergers.add(new ParameterContextsEndpointMerger());
endpointMergers.add(new ParameterContextEndpointMerger());
endpointMergers.add(new ParameterContextUpdateEndpointMerger());
- endpointMergers.add(new VerifyProcessorConfigEndpointMerger());
- endpointMergers.add(new VerifyControllerServiceConfigEndpointMerger());
- endpointMergers.add(new VerifyReportingTaskConfigEndpointMerger());
+ endpointMergers.add(new VerifyConfigEndpointMerger());
}
@Override
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyProcessorConfigEndpointMerger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyConfigEndpointMerger.java
similarity index 65%
rename from nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyProcessorConfigEndpointMerger.java
rename to nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyConfigEndpointMerger.java
index 40db230..0c45bec 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyProcessorConfigEndpointMerger.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyConfigEndpointMerger.java
@@ -20,8 +20,8 @@ package org.apache.nifi.cluster.coordination.http.endpoints;
import org.apache.nifi.cluster.manager.NodeResponse;
import org.apache.nifi.cluster.protocol.NodeIdentifier;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
-import org.apache.nifi.web.api.dto.VerifyProcessorConfigRequestDTO;
-import org.apache.nifi.web.api.entity.VerifyProcessorConfigRequestEntity;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import java.net.URI;
import java.util.List;
@@ -29,24 +29,28 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
-public class VerifyProcessorConfigEndpointMerger extends AbstractSingleEntityEndpoint<VerifyProcessorConfigRequestEntity> {
+public class VerifyConfigEndpointMerger extends AbstractSingleEntityEndpoint<VerifyConfigRequestEntity> {
public static final Pattern VERIFY_PROCESSOR_CONFIG_URI_PATTERN = Pattern.compile("/nifi-api/processors/[a-f0-9\\-]{36}/config/verification-requests(/[a-f0-9\\-]{36})?");
+ public static final Pattern VERIFY_CONTROLLER_SERVICE_CONFIG_URI_PATTERN = Pattern.compile("/nifi-api/controller-services/[a-f0-9\\-]{36}/config/verification-requests(/[a-f0-9\\-]{36})?");
+ public static final Pattern VERIFY_REPORTING_TASK_CONFIG_URI_PATTERN = Pattern.compile("/nifi-api/reporting-tasks/[a-f0-9\\-]{36}/config/verification-requests(/[a-f0-9\\-]{36})?");
@Override
- protected Class<VerifyProcessorConfigRequestEntity> getEntityClass() {
- return VerifyProcessorConfigRequestEntity.class;
+ protected Class<VerifyConfigRequestEntity> getEntityClass() {
+ return VerifyConfigRequestEntity.class;
}
@Override
public boolean canHandle(final URI uri, final String method) {
- return VERIFY_PROCESSOR_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches();
+ return VERIFY_PROCESSOR_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches()
+ || VERIFY_CONTROLLER_SERVICE_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches()
+ || VERIFY_REPORTING_TASK_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches();
}
@Override
- protected void mergeResponses(final VerifyProcessorConfigRequestEntity clientEntity, final Map<NodeIdentifier, VerifyProcessorConfigRequestEntity> entityMap,
+ protected void mergeResponses(final VerifyConfigRequestEntity clientEntity, final Map<NodeIdentifier, VerifyConfigRequestEntity> entityMap,
final Set<NodeResponse> successfulResponses, final Set<NodeResponse> problematicResponses) {
- final VerifyProcessorConfigRequestDTO requestDto = clientEntity.getRequest();
+ final VerifyConfigRequestDTO requestDto = clientEntity.getRequest();
final List<ConfigVerificationResultDTO> results = requestDto.getResults();
// If the result hasn't been set, the task is not yet complete, so we don't have to bother merging the results.
@@ -56,9 +60,9 @@ public class VerifyProcessorConfigEndpointMerger extends AbstractSingleEntityEnd
// Aggregate the Config Verification Results across all nodes into a single List
final ConfigVerificationResultMerger resultMerger = new ConfigVerificationResultMerger();
- for (final Map.Entry<NodeIdentifier, VerifyProcessorConfigRequestEntity> entry : entityMap.entrySet()) {
+ for (final Map.Entry<NodeIdentifier, VerifyConfigRequestEntity> entry : entityMap.entrySet()) {
final NodeIdentifier nodeId = entry.getKey();
- final VerifyProcessorConfigRequestEntity entity = entry.getValue();
+ final VerifyConfigRequestEntity entity = entry.getValue();
final List<ConfigVerificationResultDTO> nodeResults = entity.getRequest().getResults();
resultMerger.addNodeResults(nodeId, nodeResults);
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyControllerServiceConfigEndpointMerger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyControllerServiceConfigEndpointMerger.java
deleted file mode 100644
index cee27b2..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyControllerServiceConfigEndpointMerger.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.cluster.coordination.http.endpoints;
-
-import org.apache.nifi.cluster.manager.NodeResponse;
-import org.apache.nifi.cluster.protocol.NodeIdentifier;
-import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
-import org.apache.nifi.web.api.dto.VerifyControllerServiceConfigRequestDTO;
-import org.apache.nifi.web.api.entity.VerifyControllerServiceConfigRequestEntity;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-public class VerifyControllerServiceConfigEndpointMerger extends AbstractSingleEntityEndpoint<VerifyControllerServiceConfigRequestEntity> {
- public static final Pattern VERIFY_PROCESSOR_CONFIG_URI_PATTERN = Pattern.compile("/nifi-api/controller-services/[a-f0-9\\-]{36}/config/verification-requests(/[a-f0-9\\-]{36})?");
-
- @Override
- protected Class<VerifyControllerServiceConfigRequestEntity> getEntityClass() {
- return VerifyControllerServiceConfigRequestEntity.class;
- }
-
- @Override
- public boolean canHandle(final URI uri, final String method) {
- return VERIFY_PROCESSOR_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches();
- }
-
- @Override
- protected void mergeResponses(final VerifyControllerServiceConfigRequestEntity clientEntity, final Map<NodeIdentifier, VerifyControllerServiceConfigRequestEntity> entityMap,
- final Set<NodeResponse> successfulResponses, final Set<NodeResponse> problematicResponses) {
-
- final VerifyControllerServiceConfigRequestDTO requestDto = clientEntity.getRequest();
- final List<ConfigVerificationResultDTO> results = requestDto.getResults();
-
- // If the result hasn't been set, the task is not yet complete, so we don't have to bother merging the results.
- if (results == null) {
- return;
- }
-
- // Aggregate the Config Verification Results across all nodes into a single List
- final ConfigVerificationResultMerger resultMerger = new ConfigVerificationResultMerger();
- for (final Map.Entry<NodeIdentifier, VerifyControllerServiceConfigRequestEntity> entry : entityMap.entrySet()) {
- final NodeIdentifier nodeId = entry.getKey();
- final VerifyControllerServiceConfigRequestEntity entity = entry.getValue();
-
- final List<ConfigVerificationResultDTO> nodeResults = entity.getRequest().getResults();
- resultMerger.addNodeResults(nodeId, nodeResults);
- }
-
- final List<ConfigVerificationResultDTO> aggregateResults = resultMerger.computeAggregateResults();
-
-
- clientEntity.getRequest().setResults(aggregateResults);
- }
-
-}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyReportingTaskConfigEndpointMerger.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyReportingTaskConfigEndpointMerger.java
deleted file mode 100644
index eef079b..0000000
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-cluster/src/main/java/org/apache/nifi/cluster/coordination/http/endpoints/VerifyReportingTaskConfigEndpointMerger.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.nifi.cluster.coordination.http.endpoints;
-
-import org.apache.nifi.cluster.manager.NodeResponse;
-import org.apache.nifi.cluster.protocol.NodeIdentifier;
-import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
-import org.apache.nifi.web.api.dto.VerifyReportingTaskConfigRequestDTO;
-import org.apache.nifi.web.api.entity.VerifyReportingTaskConfigRequestEntity;
-
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-public class VerifyReportingTaskConfigEndpointMerger extends AbstractSingleEntityEndpoint<VerifyReportingTaskConfigRequestEntity> {
- public static final Pattern VERIFY_REPORTING_TASK_CONFIG_URI_PATTERN = Pattern.compile("/nifi-api/reporting-tasks/[a-f0-9\\-]{36}/config/verification-requests(/[a-f0-9\\-]{36})?");
-
- @Override
- protected Class<VerifyReportingTaskConfigRequestEntity> getEntityClass() {
- return VerifyReportingTaskConfigRequestEntity.class;
- }
-
- @Override
- public boolean canHandle(final URI uri, final String method) {
- return VERIFY_REPORTING_TASK_CONFIG_URI_PATTERN.matcher(uri.getPath()).matches();
- }
-
- @Override
- protected void mergeResponses(final VerifyReportingTaskConfigRequestEntity clientEntity, final Map<NodeIdentifier, VerifyReportingTaskConfigRequestEntity> entityMap,
- final Set<NodeResponse> successfulResponses, final Set<NodeResponse> problematicResponses) {
-
- final VerifyReportingTaskConfigRequestDTO requestDto = clientEntity.getRequest();
- final List<ConfigVerificationResultDTO> results = requestDto.getResults();
-
- // If the result hasn't been set, the task is not yet complete, so we don't have to bother merging the results.
- if (results == null) {
- return;
- }
-
- // Aggregate the Config Verification Results across all nodes into a single List
- final ConfigVerificationResultMerger resultMerger = new ConfigVerificationResultMerger();
- for (final Map.Entry<NodeIdentifier, VerifyReportingTaskConfigRequestEntity> entry : entityMap.entrySet()) {
- final NodeIdentifier nodeId = entry.getKey();
- final VerifyReportingTaskConfigRequestEntity entity = entry.getValue();
-
- final List<ConfigVerificationResultDTO> nodeResults = entity.getRequest().getResults();
- resultMerger.addNodeResults(nodeId, nodeResults);
- }
-
- final List<ConfigVerificationResultDTO> aggregateResults = resultMerger.computeAggregateResults();
- clientEntity.getRequest().setResults(aggregateResults);
- }
-
-}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java
index 603dec2..399a484 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core-api/src/main/java/org/apache/nifi/controller/AbstractComponentNode.java
@@ -563,7 +563,9 @@ public abstract class AbstractComponentNode implements ComponentNode {
final Map<PropertyDescriptor, String> props = new LinkedHashMap<>();
for (final PropertyDescriptor descriptor : supported) {
- props.put(descriptor, null);
+ if (descriptor != null) {
+ props.put(descriptor, descriptor.getDefaultValue());
+ }
}
properties.forEach((descriptor, config) -> props.put(descriptor, valueFunction.apply(config)));
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/TemplateUtils.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/TemplateUtils.java
index f7053d4..26db5c8 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/TemplateUtils.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/TemplateUtils.java
@@ -238,7 +238,6 @@ public class TemplateUtils {
processorConfig.setCustomUiUrl(null);
processorConfig.setDefaultConcurrentTasks(null);
processorConfig.setDefaultSchedulingPeriod(null);
- processorConfig.setReferencedAttributes(null);
processorConfig.setAutoTerminatedRelationships(null);
}
@@ -307,7 +306,6 @@ public class TemplateUtils {
serviceDTO.setCustomUiUrl(null);
serviceDTO.setValidationErrors(null);
serviceDTO.setValidationStatus(null);
- serviceDTO.setReferencedAttributes(null);
}
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
index 84c2230..6e5f425 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/NiFiServiceFacade.java
@@ -25,13 +25,13 @@ import org.apache.nifi.components.ConfigurableComponent;
import org.apache.nifi.controller.ScheduledState;
import org.apache.nifi.controller.repository.claim.ContentDirection;
import org.apache.nifi.controller.service.ControllerServiceState;
+import org.apache.nifi.flow.VersionedProcessGroup;
import org.apache.nifi.groups.ProcessGroup;
import org.apache.nifi.parameter.ParameterContext;
import org.apache.nifi.registry.flow.ExternalControllerServiceReference;
import org.apache.nifi.registry.flow.VersionedFlow;
import org.apache.nifi.registry.flow.VersionedFlowSnapshot;
import org.apache.nifi.registry.flow.VersionedParameterContext;
-import org.apache.nifi.flow.VersionedProcessGroup;
import org.apache.nifi.web.api.dto.AccessPolicyDTO;
import org.apache.nifi.web.api.dto.AffectedComponentDTO;
import org.apache.nifi.web.api.dto.BulletinBoardDTO;
@@ -59,7 +59,6 @@ import org.apache.nifi.web.api.dto.NodeDTO;
import org.apache.nifi.web.api.dto.ParameterContextDTO;
import org.apache.nifi.web.api.dto.PortDTO;
import org.apache.nifi.web.api.dto.ProcessGroupDTO;
-import org.apache.nifi.web.api.dto.ProcessorConfigDTO;
import org.apache.nifi.web.api.dto.ProcessorDTO;
import org.apache.nifi.web.api.dto.PropertyDescriptorDTO;
import org.apache.nifi.web.api.dto.RegistryDTO;
@@ -89,6 +88,7 @@ import org.apache.nifi.web.api.entity.AffectedComponentEntity;
import org.apache.nifi.web.api.entity.BucketEntity;
import org.apache.nifi.web.api.entity.BulletinEntity;
import org.apache.nifi.web.api.entity.ComponentValidationResultEntity;
+import org.apache.nifi.web.api.entity.ConfigurationAnalysisEntity;
import org.apache.nifi.web.api.entity.ConnectionEntity;
import org.apache.nifi.web.api.entity.ConnectionStatisticsEntity;
import org.apache.nifi.web.api.entity.ConnectionStatusEntity;
@@ -638,11 +638,19 @@ public interface NiFiServiceFacade {
/**
* Performs verification of the given Processor Configuration for the Processor with the given ID
* @param processorId the id of the processor
- * @param processorConfig the configuration to verify
+ * @param properties the configured properties to verify
* @param attributes a map of values that can be used for resolving FlowFile attributes for Expression Language
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyProcessorConfiguration(String processorId, ProcessorConfigDTO processorConfig, Map<String, String> attributes);
+ List<ConfigVerificationResultDTO> verifyProcessorConfiguration(String processorId, Map<String, String> properties, Map<String, String> attributes);
+
+ /**
+ * Performs analysis of the given properties, determining which attributes are referenced by properties
+ * @param processorId the ID of the processor
+ * @param properties the properties
+ * @return analysis results
+ */
+ ConfigurationAnalysisEntity analyzeProcessorConfiguration(String processorId, Map<String, String> properties);
/**
* Verifies the specified processor can be removed.
@@ -2046,12 +2054,19 @@ public interface NiFiServiceFacade {
/**
* Performs verification of the given Configuration for the Controller Service with the given ID
* @param controllerServiceId the id of the controller service
- * @param controllerService the configuration to verify
+ * @param properties the configured properties to verify
* @param variables a map of values that can be used for resolving FlowFile attributes for Expression Language
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyControllerServiceConfiguration(String controllerServiceId, ControllerServiceDTO controllerService, Map<String, String> variables);
+ List<ConfigVerificationResultDTO> verifyControllerServiceConfiguration(String controllerServiceId, Map<String, String> properties, Map<String, String> variables);
+ /**
+ * Performs analysis of the given properties, determining which attributes are referenced by properties
+ * @param controllerServiceId the ID of the Controller Service
+ * @param properties the properties
+ * @return analysis results
+ */
+ ConfigurationAnalysisEntity analyzeControllerServiceConfiguration(String controllerServiceId, Map<String, String> properties);
/**
* Deletes the specified label.
@@ -2141,10 +2156,18 @@ public interface NiFiServiceFacade {
/**
* Performs verification of the given Configuration for the Reporting Task with the given ID
* @param reportingTaskId the id of the reporting task
- * @param reportingTask the configuration to verify
+ * @param properties the configured properties to verify
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyReportingTaskConfiguration(String reportingTaskId, ReportingTaskDTO reportingTask);
+ List<ConfigVerificationResultDTO> verifyReportingTaskConfiguration(String reportingTaskId, Map<String, String> properties);
+
+ /**
+ * Performs analysis of the given properties, determining which attributes are referenced by properties
+ * @param reportingTaskId the ID of the Reporting Task
+ * @param properties the properties
+ * @return analysis results
+ */
+ ConfigurationAnalysisEntity analyzeReportingTaskConfiguration(String reportingTaskId, Map<String, String> properties);
/**
* Deletes the specified reporting task.
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
index 4d31a11..721d6a0 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/StandardNiFiServiceFacade.java
@@ -25,6 +25,7 @@ import org.apache.nifi.action.FlowChangeAction;
import org.apache.nifi.action.Operation;
import org.apache.nifi.action.details.FlowChangePurgeDetails;
import org.apache.nifi.admin.service.AuditService;
+import org.apache.nifi.attribute.expression.language.Query;
import org.apache.nifi.authorization.AccessDeniedException;
import org.apache.nifi.authorization.AccessPolicy;
import org.apache.nifi.authorization.AuthorizableLookup;
@@ -74,6 +75,8 @@ import org.apache.nifi.controller.ControllerService;
import org.apache.nifi.controller.Counter;
import org.apache.nifi.controller.FlowController;
import org.apache.nifi.controller.ProcessorNode;
+import org.apache.nifi.controller.PropertyConfiguration;
+import org.apache.nifi.controller.PropertyConfigurationMapper;
import org.apache.nifi.controller.ReportingTaskNode;
import org.apache.nifi.controller.ScheduledState;
import org.apache.nifi.controller.Snippet;
@@ -91,6 +94,7 @@ import org.apache.nifi.controller.status.ProcessGroupStatus;
import org.apache.nifi.controller.status.ProcessorStatus;
import org.apache.nifi.diagnostics.SystemDiagnostics;
import org.apache.nifi.events.BulletinFactory;
+import org.apache.nifi.expression.ExpressionLanguageScope;
import org.apache.nifi.flow.VersionedComponent;
import org.apache.nifi.flow.VersionedConfigurableComponent;
import org.apache.nifi.flow.VersionedConnection;
@@ -111,6 +115,7 @@ import org.apache.nifi.parameter.Parameter;
import org.apache.nifi.parameter.ParameterContext;
import org.apache.nifi.parameter.ParameterContextLookup;
import org.apache.nifi.parameter.ParameterDescriptor;
+import org.apache.nifi.parameter.ParameterLookup;
import org.apache.nifi.parameter.ParameterReferenceManager;
import org.apache.nifi.parameter.StandardParameterContext;
import org.apache.nifi.prometheus.util.BulletinMetricsRegistry;
@@ -174,6 +179,7 @@ import org.apache.nifi.web.api.dto.ComponentRestrictionPermissionDTO;
import org.apache.nifi.web.api.dto.ComponentStateDTO;
import org.apache.nifi.web.api.dto.ComponentValidationResultDTO;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
+import org.apache.nifi.web.api.dto.ConfigurationAnalysisDTO;
import org.apache.nifi.web.api.dto.ConnectionDTO;
import org.apache.nifi.web.api.dto.ControllerConfigurationDTO;
import org.apache.nifi.web.api.dto.ControllerDTO;
@@ -251,6 +257,7 @@ import org.apache.nifi.web.api.entity.BucketEntity;
import org.apache.nifi.web.api.entity.BulletinEntity;
import org.apache.nifi.web.api.entity.ComponentReferenceEntity;
import org.apache.nifi.web.api.entity.ComponentValidationResultEntity;
+import org.apache.nifi.web.api.entity.ConfigurationAnalysisEntity;
import org.apache.nifi.web.api.entity.ConnectionEntity;
import org.apache.nifi.web.api.entity.ConnectionStatisticsEntity;
import org.apache.nifi.web.api.entity.ConnectionStatusEntity;
@@ -765,8 +772,59 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public List<ConfigVerificationResultDTO> verifyProcessorConfiguration(final String processorId, final ProcessorConfigDTO processorConfig, final Map<String, String> attributes) {
- return processorDAO.verifyProcessorConfiguration(processorId, processorConfig, attributes);
+ public List<ConfigVerificationResultDTO> verifyProcessorConfiguration(final String processorId, final Map<String, String> properties, final Map<String, String> attributes) {
+ return processorDAO.verifyProcessorConfiguration(processorId, properties, attributes);
+ }
+
+ @Override
+ public ConfigurationAnalysisEntity analyzeProcessorConfiguration(final String processorId, final Map<String, String> properties) {
+ final ProcessorNode processorNode = processorDAO.getProcessor(processorId);
+ final ProcessGroup processGroup = processorNode.getProcessGroup();
+ final ParameterContext parameterContext = processGroup.getParameterContext();
+
+ final ConfigurationAnalysisEntity configurationAnalysisEntity = analyzeConfiguration(processorNode, properties, parameterContext);
+ return configurationAnalysisEntity;
+ }
+
+ private ConfigurationAnalysisEntity analyzeConfiguration(final ComponentNode componentNode, final Map<String, String> properties, final ParameterContext parameterContext) {
+ final Map<String, String> referencedAttributes = determineReferencedAttributes(properties, componentNode, parameterContext);
+
+ final ConfigurationAnalysisDTO dto = new ConfigurationAnalysisDTO();
+ dto.setComponentId(componentNode.getIdentifier());
+ dto.setProperties(properties);
+ dto.setReferencedAttributes(referencedAttributes);
+
+ final ConfigurationAnalysisEntity entity = new ConfigurationAnalysisEntity();
+ entity.setConfigurationAnalysis(dto);
+ return entity;
+ }
+
+ private Map<String, String> determineReferencedAttributes(final Map<String, String> properties, final ComponentNode componentNode, final ParameterContext parameterContext) {
+ final Map<String, String> mergedProperties = new LinkedHashMap<>();
+ componentNode.getRawPropertyValues().forEach((desc, value) -> mergedProperties.put(desc.getName(), value));
+ mergedProperties.putAll(properties);
+
+ final Set<String> propertiesNotSupportingEL = new HashSet<>();
+ for (final String propertyName : mergedProperties.keySet()) {
+ final PropertyDescriptor descriptor = componentNode.getPropertyDescriptor(propertyName);
+ final boolean allowsAttributes = descriptor.isExpressionLanguageSupported() || descriptor.getExpressionLanguageScope() == ExpressionLanguageScope.FLOWFILE_ATTRIBUTES;
+ if (descriptor.isSensitive() || !allowsAttributes) {
+ propertiesNotSupportingEL.add(propertyName);
+ }
+ }
+ propertiesNotSupportingEL.forEach(mergedProperties::remove);
+
+ final PropertyConfigurationMapper configurationMapper = new PropertyConfigurationMapper();
+ final Map<String, PropertyConfiguration> configurationMap = configurationMapper.mapRawPropertyValuesToPropertyConfiguration(componentNode, mergedProperties);
+
+ final Map<String, String> referencedAttributes = new HashMap<>();
+ for (final PropertyConfiguration propertyConfiguration : configurationMap.values()) {
+ final String effectiveValue = propertyConfiguration.getEffectiveValue(parameterContext == null ? ParameterLookup.EMPTY : parameterContext);
+ final Set<String> attributes = Query.prepareWithParametersPreEvaluated(effectiveValue).getExplicitlyReferencedAttributes();
+ attributes.forEach(attr -> referencedAttributes.put(attr, null));
+ }
+
+ return referencedAttributes;
}
private void awaitValidationCompletion(final ComponentNode component) {
@@ -2776,8 +2834,18 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public List<ConfigVerificationResultDTO> verifyControllerServiceConfiguration(final String controllerServiceId, final ControllerServiceDTO controllerService, final Map<String, String> variables) {
- return controllerServiceDAO.verifyConfiguration(controllerServiceId, controllerService, variables);
+ public List<ConfigVerificationResultDTO> verifyControllerServiceConfiguration(final String controllerServiceId, final Map<String, String> properties, final Map<String, String> variables) {
+ return controllerServiceDAO.verifyConfiguration(controllerServiceId, properties, variables);
+ }
+
+ @Override
+ public ConfigurationAnalysisEntity analyzeControllerServiceConfiguration(final String controllerServiceId, final Map<String, String> properties) {
+ final ControllerServiceNode serviceNode = controllerServiceDAO.getControllerService(controllerServiceId);
+ final ProcessGroup processGroup = serviceNode.getProcessGroup();
+ final ParameterContext parameterContext = processGroup == null ? null : processGroup.getParameterContext();
+
+ final ConfigurationAnalysisEntity configurationAnalysisEntity = analyzeConfiguration(serviceNode, properties, parameterContext);
+ return configurationAnalysisEntity;
}
@Override
@@ -3159,8 +3227,15 @@ public class StandardNiFiServiceFacade implements NiFiServiceFacade {
}
@Override
- public List<ConfigVerificationResultDTO> verifyReportingTaskConfiguration(final String reportingTaskId, final ReportingTaskDTO reportingTask) {
- return reportingTaskDAO.verifyConfiguration(reportingTaskId, reportingTask);
+ public List<ConfigVerificationResultDTO> verifyReportingTaskConfiguration(final String reportingTaskId, final Map<String, String> properties) {
+ return reportingTaskDAO.verifyConfiguration(reportingTaskId, properties);
+ }
+
+ @Override
+ public ConfigurationAnalysisEntity analyzeReportingTaskConfiguration(final String reportingTaskId, final Map<String, String> properties) {
+ final ReportingTaskNode taskNode = reportingTaskDAO.getReportingTask(reportingTaskId);
+ final ConfigurationAnalysisEntity configurationAnalysisEntity = analyzeConfiguration(taskNode, properties, null);
+ return configurationAnalysisEntity;
}
@Override
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java
index 324cffd..8e89ada 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ControllerServiceResource.java
@@ -49,17 +49,19 @@ import org.apache.nifi.web.api.concurrent.UpdateStep;
import org.apache.nifi.web.api.dto.BundleDTO;
import org.apache.nifi.web.api.dto.ComponentStateDTO;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
+import org.apache.nifi.web.api.dto.ConfigurationAnalysisDTO;
import org.apache.nifi.web.api.dto.ControllerServiceDTO;
import org.apache.nifi.web.api.dto.PropertyDescriptorDTO;
import org.apache.nifi.web.api.dto.RevisionDTO;
-import org.apache.nifi.web.api.dto.VerifyControllerServiceConfigRequestDTO;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
import org.apache.nifi.web.api.entity.ComponentStateEntity;
+import org.apache.nifi.web.api.entity.ConfigurationAnalysisEntity;
import org.apache.nifi.web.api.entity.ControllerServiceEntity;
import org.apache.nifi.web.api.entity.ControllerServiceReferencingComponentsEntity;
import org.apache.nifi.web.api.entity.ControllerServiceRunStatusEntity;
import org.apache.nifi.web.api.entity.PropertyDescriptorEntity;
import org.apache.nifi.web.api.entity.UpdateControllerServiceReferenceRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyControllerServiceConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import org.apache.nifi.web.api.request.ClientIdParameter;
import org.apache.nifi.web.api.request.LongParameter;
import org.slf4j.Logger;
@@ -102,7 +104,7 @@ public class ControllerServiceResource extends ApplicationResource {
private static final Logger logger = LoggerFactory.getLogger(ControllerServiceResource.class);
private static final String VERIFICATION_REQUEST_TYPE = "verification-request";
- private RequestManager<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
+ private RequestManager<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
new AsyncRequestManager<>(100, TimeUnit.MINUTES.toMillis(1L), "Verify Controller Service Config Thread");
private NiFiServiceFacade serviceFacade;
@@ -841,6 +843,66 @@ public class ControllerServiceResource extends ApplicationResource {
);
}
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/{id}/config/analysis")
+ @ApiOperation(
+ value = "Performs analysis of the component's configuration, providing information about which attributes are referenced.",
+ response = ConfigurationAnalysisEntity.class,
+ authorizations = {
+ @Authorization(value = "Read - /controller-services/{uuid}")
+ }
+ )
+ @ApiResponses(
+ value = {
+ @ApiResponse(code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."),
+ @ApiResponse(code = 401, message = "Client could not be authenticated."),
+ @ApiResponse(code = 403, message = "Client is not authorized to make this request."),
+ @ApiResponse(code = 404, message = "The specified resource could not be found."),
+ @ApiResponse(code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.")
+ }
+ )
+ public Response analyzeConfiguration(
+ @ApiParam(value = "The controller service id.", required = true) @PathParam("id") final String controllerServiceId,
+ @ApiParam(value = "The configuration analysis request.", required = true) final ConfigurationAnalysisEntity configurationAnalysis) {
+
+ if (configurationAnalysis == null || configurationAnalysis.getConfigurationAnalysis() == null) {
+ throw new IllegalArgumentException("Controller Service's configuration must be specified");
+ }
+
+ final ConfigurationAnalysisDTO dto = configurationAnalysis.getConfigurationAnalysis();
+ if (dto.getComponentId() == null) {
+ throw new IllegalArgumentException("Controller Service's identifier must be specified in the request");
+ }
+
+ if (!dto.getComponentId().equals(controllerServiceId)) {
+ throw new IllegalArgumentException("Controller Service's identifier in the request must match the identifier provided in the URL");
+ }
+
+ if (dto.getProperties() == null) {
+ throw new IllegalArgumentException("Controller Service's properties must be specified in the request");
+ }
+
+ if (isReplicateRequest()) {
+ return replicate(HttpMethod.POST, configurationAnalysis);
+ }
+
+ return withWriteLock(
+ serviceFacade,
+ configurationAnalysis,
+ lookup -> {
+ final ComponentAuthorizable controllerService = lookup.getControllerService(controllerServiceId);
+ controllerService.getAuthorizable().authorize(authorizer, RequestAction.READ, NiFiUserUtils.getNiFiUser());
+ },
+ () -> { },
+ entity -> {
+ final ConfigurationAnalysisDTO analysis = entity.getConfigurationAnalysis();
+ final ConfigurationAnalysisEntity resultsEntity = serviceFacade.analyzeControllerServiceConfiguration(analysis.getComponentId(), analysis.getProperties());
+ return generateOkResponse(resultsEntity).build();
+ }
+ );
+ }
@POST
@Consumes(MediaType.APPLICATION_JSON)
@@ -848,7 +910,7 @@ public class ControllerServiceResource extends ApplicationResource {
@Path("/{id}/config/verification-requests")
@ApiOperation(
value = "Performs verification of the Controller Service's configuration",
- response = VerifyControllerServiceConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "This will initiate the process of verifying a given Controller Service configuration. This may be a long-running task. As a result, this endpoint will immediately return a " +
"ControllerServiceConfigVerificationRequestEntity, and the process of performing the verification will occur asynchronously in the background. " +
"The client may then periodically poll the status of the request by " +
@@ -869,22 +931,22 @@ public class ControllerServiceResource extends ApplicationResource {
)
public Response submitConfigVerificationRequest(
@ApiParam(value = "The controller service id.", required = true) @PathParam("id") final String controllerServiceId,
- @ApiParam(value = "The controller service configuration verification request.", required = true) final VerifyControllerServiceConfigRequestEntity controllerServiceConfigRequest) {
+ @ApiParam(value = "The controller service configuration verification request.", required = true) final VerifyConfigRequestEntity controllerServiceConfigRequest) {
if (controllerServiceConfigRequest == null) {
throw new IllegalArgumentException("Controller Service's configuration must be specified");
}
- final VerifyControllerServiceConfigRequestDTO requestDto = controllerServiceConfigRequest.getRequest();
- if (requestDto == null || requestDto.getControllerService() == null) {
- throw new IllegalArgumentException("Controller Service must be specified");
+ final VerifyConfigRequestDTO requestDto = controllerServiceConfigRequest.getRequest();
+ if (requestDto == null || requestDto.getProperties() == null) {
+ throw new IllegalArgumentException("Controller Service properties must be specified");
}
- if (requestDto.getControllerServiceId() == null) {
+ if (requestDto.getComponentId() == null) {
throw new IllegalArgumentException("Controller Service's identifier must be specified in the request");
}
- if (!requestDto.getControllerServiceId().equals(controllerServiceId)) {
+ if (!requestDto.getComponentId().equals(controllerServiceId)) {
throw new IllegalArgumentException("Controller Service's identifier in the request must match the identifier provided in the URL");
}
@@ -914,7 +976,7 @@ public class ControllerServiceResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Returns the Verification Request with the given ID",
- response = VerifyControllerServiceConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Returns the Verification Request with the given ID. Once an Verification Request has been created, "
+ "that request can subsequently be retrieved via this endpoint, and the request that is fetched will contain the updated state, such as percent complete, the "
+ "current state of the request, and any failures. ",
@@ -939,10 +1001,10 @@ public class ControllerServiceResource extends ApplicationResource {
final NiFiUser user = NiFiUserUtils.getNiFiUser();
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
updateRequestManager.getRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
- final VerifyControllerServiceConfigRequestEntity updateRequestEntity = createVerifyControllerServiceConfigRequestEntity(asyncRequest, requestId);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyControllerServiceConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -953,7 +1015,7 @@ public class ControllerServiceResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Deletes the Verification Request with the given ID",
- response = VerifyControllerServiceConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Deletes the Verification Request with the given ID. After a request is created, it is expected "
+ "that the client will properly clean up the request by DELETE'ing it, once the Verification process has completed. If the request is deleted before the request "
+ "completes, then the Verification request will finish the step that it is currently performing and then will cancel any subsequent steps.",
@@ -982,7 +1044,7 @@ public class ControllerServiceResource extends ApplicationResource {
// If this is a standalone node, or if this is the execution phase of the request, perform the actual request.
if (!twoPhaseRequest || executionPhase) {
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
updateRequestManager.removeRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
if (asyncRequest == null) {
@@ -993,7 +1055,7 @@ public class ControllerServiceResource extends ApplicationResource {
asyncRequest.cancel();
}
- final VerifyControllerServiceConfigRequestEntity updateRequestEntity = createVerifyControllerServiceConfigRequestEntity(asyncRequest, requestId);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyControllerServiceConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -1009,22 +1071,22 @@ public class ControllerServiceResource extends ApplicationResource {
}
- public Response performAsyncConfigVerification(final VerifyControllerServiceConfigRequestEntity configRequest, final NiFiUser user) {
+ public Response performAsyncConfigVerification(final VerifyConfigRequestEntity configRequest, final NiFiUser user) {
// Create an asynchronous request that will occur in the background, because this request may take an indeterminate amount of time.
final String requestId = generateUuid();
- final VerifyControllerServiceConfigRequestDTO requestDto = configRequest.getRequest();
- final String serviceId = requestDto.getControllerServiceId();
+ final VerifyConfigRequestDTO requestDto = configRequest.getRequest();
+ final String serviceId = requestDto.getComponentId();
final List<UpdateStep> updateSteps = Collections.singletonList(new StandardUpdateStep("Verify Controller Service Configuration"));
- final AsynchronousWebRequest<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
new StandardAsynchronousWebRequest<>(requestId, configRequest, serviceId, user, updateSteps);
// Submit the request to be performed in the background
- final Consumer<AsynchronousWebRequest<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
+ final Consumer<AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
try {
final Map<String, String> attributes = requestDto.getAttributes() == null ? Collections.emptyMap() : requestDto.getAttributes();
- final List<ConfigVerificationResultDTO> results = serviceFacade.verifyControllerServiceConfiguration(serviceId, requestDto.getControllerService(), attributes);
+ final List<ConfigVerificationResultDTO> results = serviceFacade.verifyControllerServiceConfiguration(serviceId, requestDto.getProperties(), attributes);
asyncRequest.markStepComplete(results);
} catch (final Exception e) {
logger.error("Failed to verify Controller Service configuration", e);
@@ -1035,30 +1097,30 @@ public class ControllerServiceResource extends ApplicationResource {
updateRequestManager.submitRequest(VERIFICATION_REQUEST_TYPE, requestId, request, updateTask);
// Generate the response
- final VerifyControllerServiceConfigRequestEntity resultsEntity = createVerifyControllerServiceConfigRequestEntity(request, requestId);
+ final VerifyConfigRequestEntity resultsEntity = createVerifyControllerServiceConfigRequestEntity(request, requestId);
return generateOkResponse(resultsEntity).build();
}
- private VerifyControllerServiceConfigRequestEntity createVerifyControllerServiceConfigRequestEntity(
- final AsynchronousWebRequest<VerifyControllerServiceConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest, final String requestId) {
+ private VerifyConfigRequestEntity createVerifyControllerServiceConfigRequestEntity(
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest, final String requestId) {
- final VerifyControllerServiceConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
+ final VerifyConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
final List<ConfigVerificationResultDTO> resultsList = asyncRequest.getResults();
- final VerifyControllerServiceConfigRequestDTO dto = new VerifyControllerServiceConfigRequestDTO();
- dto.setControllerServiceId(requestDto.getControllerServiceId());
- dto.setControllerService(requestDto.getControllerService());
+ final VerifyConfigRequestDTO dto = new VerifyConfigRequestDTO();
+ dto.setComponentId(requestDto.getComponentId());
+ dto.setProperties(requestDto.getProperties());
dto.setResults(resultsList);
- dto.setComplete(resultsList != null);
+ dto.setComplete(asyncRequest.isComplete());
dto.setFailureReason(asyncRequest.getFailureReason());
dto.setLastUpdated(asyncRequest.getLastUpdated());
dto.setPercentCompleted(asyncRequest.getPercentComplete());
dto.setRequestId(requestId);
dto.setState(asyncRequest.getState());
- dto.setUri(generateResourceUri("controller-services", requestDto.getControllerServiceId(), "config", "verification-requests", requestId));
+ dto.setUri(generateResourceUri("controller-services", requestDto.getComponentId(), "config", "verification-requests", requestId));
- final VerifyControllerServiceConfigRequestEntity entity = new VerifyControllerServiceConfigRequestEntity();
+ final VerifyConfigRequestEntity entity = new VerifyConfigRequestEntity();
entity.setRequest(dto);
return entity;
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java
index 98b924c..94906b1 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ProcessorResource.java
@@ -46,19 +46,21 @@ import org.apache.nifi.web.api.concurrent.UpdateStep;
import org.apache.nifi.web.api.dto.BundleDTO;
import org.apache.nifi.web.api.dto.ComponentStateDTO;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
+import org.apache.nifi.web.api.dto.ConfigurationAnalysisDTO;
import org.apache.nifi.web.api.dto.PositionDTO;
import org.apache.nifi.web.api.dto.ProcessorConfigDTO;
import org.apache.nifi.web.api.dto.ProcessorDTO;
import org.apache.nifi.web.api.dto.PropertyDescriptorDTO;
-import org.apache.nifi.web.api.dto.VerifyProcessorConfigRequestDTO;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
import org.apache.nifi.web.api.entity.ComponentStateEntity;
+import org.apache.nifi.web.api.entity.ConfigurationAnalysisEntity;
import org.apache.nifi.web.api.entity.ProcessorDiagnosticsEntity;
import org.apache.nifi.web.api.entity.ProcessorEntity;
import org.apache.nifi.web.api.entity.ProcessorRunStatusEntity;
import org.apache.nifi.web.api.entity.ProcessorsRunStatusDetailsEntity;
import org.apache.nifi.web.api.entity.PropertyDescriptorEntity;
import org.apache.nifi.web.api.entity.RunStatusDetailsRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyProcessorConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import org.apache.nifi.web.api.request.ClientIdParameter;
import org.apache.nifi.web.api.request.LongParameter;
import org.slf4j.Logger;
@@ -99,7 +101,7 @@ public class ProcessorResource extends ApplicationResource {
private static final Logger logger = LoggerFactory.getLogger(ProcessorResource.class);
private static final String VERIFICATION_REQUEST_TYPE = "verification-request";
- private RequestManager<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
+ private RequestManager<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
new AsyncRequestManager<>(100, TimeUnit.MINUTES.toMillis(1L), "Verify Processor Config Thread");
private NiFiServiceFacade serviceFacade;
@@ -550,10 +552,72 @@ public class ProcessorResource extends ApplicationResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
+ @Path("/{id}/config/analysis")
+ @ApiOperation(
+ value = "Performs analysis of the component's configuration, providing information about which attributes are referenced.",
+ response = ConfigurationAnalysisEntity.class,
+ authorizations = {
+ @Authorization(value = "Read - /processors/{uuid}")
+ }
+ )
+ @ApiResponses(
+ value = {
+ @ApiResponse(code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."),
+ @ApiResponse(code = 401, message = "Client could not be authenticated."),
+ @ApiResponse(code = 403, message = "Client is not authorized to make this request."),
+ @ApiResponse(code = 404, message = "The specified resource could not be found."),
+ @ApiResponse(code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.")
+ }
+ )
+ public Response analyzeConfiguration(
+ @ApiParam(value = "The processor id.", required = true) @PathParam("id") final String processorId,
+ @ApiParam(value = "The processor configuration analysis request.", required = true) final ConfigurationAnalysisEntity configurationAnalysis) {
+
+ if (configurationAnalysis == null || configurationAnalysis.getConfigurationAnalysis() == null) {
+ throw new IllegalArgumentException("Processor's configuration must be specified");
+ }
+
+ final ConfigurationAnalysisDTO dto = configurationAnalysis.getConfigurationAnalysis();
+ if (dto.getComponentId() == null) {
+ throw new IllegalArgumentException("Processor's identifier must be specified in the request");
+ }
+
+ if (!dto.getComponentId().equals(processorId)) {
+ throw new IllegalArgumentException("Processor's identifier in the request must match the identifier provided in the URL");
+ }
+
+ if (dto.getProperties() == null) {
+ throw new IllegalArgumentException("Processor's properties must be specified in the request");
+ }
+
+ if (isReplicateRequest()) {
+ return replicate(HttpMethod.POST, configurationAnalysis);
+ }
+
+ return withWriteLock(
+ serviceFacade,
+ configurationAnalysis,
+ lookup -> {
+ final ComponentAuthorizable processor = lookup.getProcessor(processorId);
+ processor.getAuthorizable().authorize(authorizer, RequestAction.READ, NiFiUserUtils.getNiFiUser());
+ },
+ () -> { },
+ entity -> {
+ final ConfigurationAnalysisDTO analysis = entity.getConfigurationAnalysis();
+ final ConfigurationAnalysisEntity resultsEntity = serviceFacade.analyzeProcessorConfiguration(analysis.getComponentId(), analysis.getProperties());
+ return generateOkResponse(resultsEntity).build();
+ }
+ );
+ }
+
+
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
@Path("/{id}/config/verification-requests")
@ApiOperation(
value = "Performs verification of the Processor's configuration",
- response = VerifyProcessorConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "This will initiate the process of verifying a given Processor configuration. This may be a long-running task. As a result, this endpoint will immediately return a " +
"ProcessorConfigVerificationRequestEntity, and the process of performing the verification will occur asynchronously in the background. " +
"The client may then periodically poll the status of the request by " +
@@ -574,22 +638,22 @@ public class ProcessorResource extends ApplicationResource {
)
public Response submitProcessorVerificationRequest(
@ApiParam(value = "The processor id.", required = true) @PathParam("id") final String processorId,
- @ApiParam(value = "The processor configuration verification request.", required = true) final VerifyProcessorConfigRequestEntity processorConfigRequest) {
+ @ApiParam(value = "The processor configuration verification request.", required = true) final VerifyConfigRequestEntity processorConfigRequest) {
if (processorConfigRequest == null) {
throw new IllegalArgumentException("Processor's configuration must be specified");
}
- final VerifyProcessorConfigRequestDTO requestDto = processorConfigRequest.getRequest();
- if (requestDto == null || requestDto.getProcessorConfig() == null) {
- throw new IllegalArgumentException("Processor's configuration must be specified");
+ final VerifyConfigRequestDTO requestDto = processorConfigRequest.getRequest();
+ if (requestDto == null || requestDto.getProperties() == null) {
+ throw new IllegalArgumentException("Processor's properties must be specified");
}
- if (requestDto.getProcessorId() == null) {
+ if (requestDto.getComponentId() == null) {
throw new IllegalArgumentException("Processor's identifier must be specified in the request");
}
- if (!requestDto.getProcessorId().equals(processorId)) {
+ if (!requestDto.getComponentId().equals(processorId)) {
throw new IllegalArgumentException("Processor's identifier in the request must match the identifier provided in the URL");
}
@@ -619,7 +683,7 @@ public class ProcessorResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Returns the Verification Request with the given ID",
- response = VerifyProcessorConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Returns the Verification Request with the given ID. Once an Verification Request has been created, "
+ "that request can subsequently be retrieved via this endpoint, and the request that is fetched will contain the updated state, such as percent complete, the "
+ "current state of the request, and any failures. ",
@@ -644,8 +708,8 @@ public class ProcessorResource extends ApplicationResource {
final NiFiUser user = NiFiUserUtils.getNiFiUser();
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest = updateRequestManager.getRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
- final VerifyProcessorConfigRequestEntity updateRequestEntity = createVerifyProcessorConfigRequestEntity(asyncRequest, requestId);
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest = updateRequestManager.getRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyProcessorConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -656,7 +720,7 @@ public class ProcessorResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Deletes the Verification Request with the given ID",
- response = VerifyProcessorConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Deletes the Verification Request with the given ID. After a request is created, it is expected "
+ "that the client will properly clean up the request by DELETE'ing it, once the Verification process has completed. If the request is deleted before the request "
+ "completes, then the Verification request will finish the step that it is currently performing and then will cancel any subsequent steps.",
@@ -685,14 +749,14 @@ public class ProcessorResource extends ApplicationResource {
// If this is a standalone node, or if this is the execution phase of the request, perform the actual request.
if (!twoPhaseRequest || executionPhase) {
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
updateRequestManager.removeRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
if (!asyncRequest.isComplete()) {
asyncRequest.cancel();
}
- final VerifyProcessorConfigRequestEntity updateRequestEntity = createVerifyProcessorConfigRequestEntity(asyncRequest, requestId);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyProcessorConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -986,23 +1050,23 @@ public class ProcessorResource extends ApplicationResource {
return dto;
}
- public Response performAsyncConfigVerification(final VerifyProcessorConfigRequestEntity processorConfigRequest, final NiFiUser user) {
+ public Response performAsyncConfigVerification(final VerifyConfigRequestEntity processorConfigRequest, final NiFiUser user) {
// Create an asynchronous request that will occur in the background, because this request may take an indeterminate amount of time.
final String requestId = generateUuid();
- logger.debug("Generated Config Verification Request with ID {} for Processor {}", requestId, processorConfigRequest.getRequest().getProcessorId());
+ logger.debug("Generated Config Verification Request with ID {} for Processor {}", requestId, processorConfigRequest.getRequest().getComponentId());
- final VerifyProcessorConfigRequestDTO requestDto = processorConfigRequest.getRequest();
- final String processorId = requestDto.getProcessorId();
+ final VerifyConfigRequestDTO requestDto = processorConfigRequest.getRequest();
+ final String processorId = requestDto.getComponentId();
final List<UpdateStep> updateSteps = Collections.singletonList(new StandardUpdateStep("Verify Processor Configuration"));
- final AsynchronousWebRequest<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
new StandardAsynchronousWebRequest<>(requestId, processorConfigRequest, processorId, user, updateSteps);
// Submit the request to be performed in the background
- final Consumer<AsynchronousWebRequest<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
+ final Consumer<AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
try {
final Map<String, String> attributes = requestDto.getAttributes() == null ? Collections.emptyMap() : requestDto.getAttributes();
- final List<ConfigVerificationResultDTO> results = serviceFacade.verifyProcessorConfiguration(processorId, requestDto.getProcessorConfig(), attributes);
+ final List<ConfigVerificationResultDTO> results = serviceFacade.verifyProcessorConfiguration(processorId, requestDto.getProperties(), attributes);
asyncRequest.markStepComplete(results);
} catch (final Exception e) {
logger.error("Failed to verify Processor configuration", e);
@@ -1013,30 +1077,30 @@ public class ProcessorResource extends ApplicationResource {
updateRequestManager.submitRequest(VERIFICATION_REQUEST_TYPE, requestId, request, updateTask);
// Generate the response
- final VerifyProcessorConfigRequestEntity resultsEntity = createVerifyProcessorConfigRequestEntity(request, requestId);
+ final VerifyConfigRequestEntity resultsEntity = createVerifyProcessorConfigRequestEntity(request, requestId);
return generateOkResponse(resultsEntity).build();
}
- private VerifyProcessorConfigRequestEntity createVerifyProcessorConfigRequestEntity(
- final AsynchronousWebRequest<VerifyProcessorConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest,
+ private VerifyConfigRequestEntity createVerifyProcessorConfigRequestEntity(
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest,
final String requestId) {
- final VerifyProcessorConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
+ final VerifyConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
final List<ConfigVerificationResultDTO> resultsList = asyncRequest.getResults();
- final VerifyProcessorConfigRequestDTO dto = new VerifyProcessorConfigRequestDTO();
- dto.setProcessorId(requestDto.getProcessorId());
- dto.setProcessorConfig(requestDto.getProcessorConfig());
+ final VerifyConfigRequestDTO dto = new VerifyConfigRequestDTO();
+ dto.setComponentId(requestDto.getComponentId());
+ dto.setProperties(requestDto.getProperties());
dto.setResults(resultsList);
- dto.setComplete(resultsList != null);
+ dto.setComplete(asyncRequest.isComplete());
dto.setFailureReason(asyncRequest.getFailureReason());
dto.setLastUpdated(asyncRequest.getLastUpdated());
dto.setPercentCompleted(asyncRequest.getPercentComplete());
dto.setRequestId(requestId);
dto.setState(asyncRequest.getState());
- dto.setUri(generateResourceUri("processors", requestDto.getProcessorId(), "config", "verification-requests", requestId));
+ dto.setUri(generateResourceUri("processors", requestDto.getComponentId(), "config", "verification-requests", requestId));
- final VerifyProcessorConfigRequestEntity entity = new VerifyProcessorConfigRequestEntity();
+ final VerifyConfigRequestEntity entity = new VerifyConfigRequestEntity();
entity.setRequest(dto);
return entity;
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java
index b316f01..f9459ee 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/ReportingTaskResource.java
@@ -46,14 +46,16 @@ import org.apache.nifi.web.api.concurrent.UpdateStep;
import org.apache.nifi.web.api.dto.BundleDTO;
import org.apache.nifi.web.api.dto.ComponentStateDTO;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
+import org.apache.nifi.web.api.dto.ConfigurationAnalysisDTO;
import org.apache.nifi.web.api.dto.PropertyDescriptorDTO;
import org.apache.nifi.web.api.dto.ReportingTaskDTO;
-import org.apache.nifi.web.api.dto.VerifyReportingTaskConfigRequestDTO;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
import org.apache.nifi.web.api.entity.ComponentStateEntity;
+import org.apache.nifi.web.api.entity.ConfigurationAnalysisEntity;
import org.apache.nifi.web.api.entity.PropertyDescriptorEntity;
import org.apache.nifi.web.api.entity.ReportingTaskEntity;
import org.apache.nifi.web.api.entity.ReportingTaskRunStatusEntity;
-import org.apache.nifi.web.api.entity.VerifyReportingTaskConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import org.apache.nifi.web.api.request.ClientIdParameter;
import org.apache.nifi.web.api.request.LongParameter;
import org.slf4j.Logger;
@@ -93,7 +95,7 @@ public class ReportingTaskResource extends ApplicationResource {
private static final Logger logger = LoggerFactory.getLogger(ReportingTaskResource.class);
private static final String VERIFICATION_REQUEST_TYPE = "verification-request";
- private RequestManager<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
+ private RequestManager<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> updateRequestManager =
new AsyncRequestManager<>(100, TimeUnit.MINUTES.toMillis(1L), "Verify Reporting Task Config Thread");
private NiFiServiceFacade serviceFacade;
@@ -646,6 +648,66 @@ public class ReportingTaskResource extends ApplicationResource {
);
}
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces(MediaType.APPLICATION_JSON)
+ @Path("/{id}/config/analysis")
+ @ApiOperation(
+ value = "Performs analysis of the component's configuration, providing information about which attributes are referenced.",
+ response = ConfigurationAnalysisEntity.class,
+ authorizations = {
+ @Authorization(value = "Read - /reporting-tasks/{uuid}")
+ }
+ )
+ @ApiResponses(
+ value = {
+ @ApiResponse(code = 400, message = "NiFi was unable to complete the request because it was invalid. The request should not be retried without modification."),
+ @ApiResponse(code = 401, message = "Client could not be authenticated."),
+ @ApiResponse(code = 403, message = "Client is not authorized to make this request."),
+ @ApiResponse(code = 404, message = "The specified resource could not be found."),
+ @ApiResponse(code = 409, message = "The request was valid but NiFi was not in the appropriate state to process it. Retrying the same request later may be successful.")
+ }
+ )
+ public Response analyzeConfiguration(
+ @ApiParam(value = "The reporting task id.", required = true) @PathParam("id") final String reportingTaskId,
+ @ApiParam(value = "The configuration analysis request.", required = true) final ConfigurationAnalysisEntity configurationAnalysis) {
+
+ if (configurationAnalysis == null || configurationAnalysis.getConfigurationAnalysis() == null) {
+ throw new IllegalArgumentException("Reporting Tasks's configuration must be specified");
+ }
+
+ final ConfigurationAnalysisDTO dto = configurationAnalysis.getConfigurationAnalysis();
+ if (dto.getComponentId() == null) {
+ throw new IllegalArgumentException("Reporting Tasks's identifier must be specified in the request");
+ }
+
+ if (!dto.getComponentId().equals(reportingTaskId)) {
+ throw new IllegalArgumentException("Reporting Tasks's identifier in the request must match the identifier provided in the URL");
+ }
+
+ if (dto.getProperties() == null) {
+ throw new IllegalArgumentException("Reporting Tasks's properties must be specified in the request");
+ }
+
+ if (isReplicateRequest()) {
+ return replicate(HttpMethod.POST, configurationAnalysis);
+ }
+
+ return withWriteLock(
+ serviceFacade,
+ configurationAnalysis,
+ lookup -> {
+ final ComponentAuthorizable reportingTask = lookup.getReportingTask(reportingTaskId);
+ reportingTask.getAuthorizable().authorize(authorizer, RequestAction.READ, NiFiUserUtils.getNiFiUser());
+ },
+ () -> { },
+ entity -> {
+ final ConfigurationAnalysisDTO analysis = entity.getConfigurationAnalysis();
+ final ConfigurationAnalysisEntity resultsEntity = serviceFacade.analyzeReportingTaskConfiguration(analysis.getComponentId(), analysis.getProperties());
+ return generateOkResponse(resultsEntity).build();
+ }
+ );
+ }
@POST
@Consumes(MediaType.APPLICATION_JSON)
@@ -653,7 +715,7 @@ public class ReportingTaskResource extends ApplicationResource {
@Path("/{id}/config/verification-requests")
@ApiOperation(
value = "Performs verification of the Reporting Task's configuration",
- response = VerifyReportingTaskConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "This will initiate the process of verifying a given Reporting Task configuration. This may be a long-running task. As a result, this endpoint will immediately return a " +
"ReportingTaskConfigVerificationRequestEntity, and the process of performing the verification will occur asynchronously in the background. " +
"The client may then periodically poll the status of the request by " +
@@ -674,22 +736,22 @@ public class ReportingTaskResource extends ApplicationResource {
)
public Response submitConfigVerificationRequest(
@ApiParam(value = "The reporting task id.", required = true) @PathParam("id") final String reportingTaskId,
- @ApiParam(value = "The reporting task configuration verification request.", required = true) final VerifyReportingTaskConfigRequestEntity reportingTaskConfigRequest) {
+ @ApiParam(value = "The reporting task configuration verification request.", required = true) final VerifyConfigRequestEntity reportingTaskConfigRequest) {
if (reportingTaskConfigRequest == null) {
throw new IllegalArgumentException("Reporting Task's configuration must be specified");
}
- final VerifyReportingTaskConfigRequestDTO requestDto = reportingTaskConfigRequest.getRequest();
- if (requestDto == null || requestDto.getReportingTask() == null) {
- throw new IllegalArgumentException("Reporting Task must be specified");
+ final VerifyConfigRequestDTO requestDto = reportingTaskConfigRequest.getRequest();
+ if (requestDto == null || requestDto.getProperties() == null) {
+ throw new IllegalArgumentException("Reporting Task Properties must be specified");
}
- if (requestDto.getReportingTaskId() == null) {
+ if (requestDto.getComponentId() == null) {
throw new IllegalArgumentException("Reporting Task's identifier must be specified in the request");
}
- if (!requestDto.getReportingTaskId().equals(reportingTaskId)) {
+ if (!requestDto.getComponentId().equals(reportingTaskId)) {
throw new IllegalArgumentException("Reporting Task's identifier in the request must match the identifier provided in the URL");
}
@@ -719,7 +781,7 @@ public class ReportingTaskResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Returns the Verification Request with the given ID",
- response = VerifyReportingTaskConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Returns the Verification Request with the given ID. Once an Verification Request has been created, "
+ "that request can subsequently be retrieved via this endpoint, and the request that is fetched will contain the updated state, such as percent complete, the "
+ "current state of the request, and any failures. ",
@@ -744,10 +806,10 @@ public class ReportingTaskResource extends ApplicationResource {
final NiFiUser user = NiFiUserUtils.getNiFiUser();
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
updateRequestManager.getRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
- final VerifyReportingTaskConfigRequestEntity updateRequestEntity = createVerifyReportingTaskConfigRequestEntity(asyncRequest, requestId);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyReportingTaskConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -758,7 +820,7 @@ public class ReportingTaskResource extends ApplicationResource {
@Path("{id}/config/verification-requests/{requestId}")
@ApiOperation(
value = "Deletes the Verification Request with the given ID",
- response = VerifyReportingTaskConfigRequestEntity.class,
+ response = VerifyConfigRequestEntity.class,
notes = "Deletes the Verification Request with the given ID. After a request is created, it is expected "
+ "that the client will properly clean up the request by DELETE'ing it, once the Verification process has completed. If the request is deleted before the request "
+ "completes, then the Verification request will finish the step that it is currently performing and then will cancel any subsequent steps.",
@@ -787,7 +849,7 @@ public class ReportingTaskResource extends ApplicationResource {
// If this is a standalone node, or if this is the execution phase of the request, perform the actual request.
if (!twoPhaseRequest || executionPhase) {
// request manager will ensure that the current is the user that submitted this request
- final AsynchronousWebRequest<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest =
updateRequestManager.removeRequest(VERIFICATION_REQUEST_TYPE, requestId, user);
if (asyncRequest == null) {
@@ -798,7 +860,7 @@ public class ReportingTaskResource extends ApplicationResource {
asyncRequest.cancel();
}
- final VerifyReportingTaskConfigRequestEntity updateRequestEntity = createVerifyReportingTaskConfigRequestEntity(asyncRequest, requestId);
+ final VerifyConfigRequestEntity updateRequestEntity = createVerifyReportingTaskConfigRequestEntity(asyncRequest, requestId);
return generateOkResponse(updateRequestEntity).build();
}
@@ -815,21 +877,21 @@ public class ReportingTaskResource extends ApplicationResource {
- public Response performAsyncConfigVerification(final VerifyReportingTaskConfigRequestEntity configRequest, final NiFiUser user) {
+ public Response performAsyncConfigVerification(final VerifyConfigRequestEntity configRequest, final NiFiUser user) {
// Create an asynchronous request that will occur in the background, because this request may take an indeterminate amount of time.
final String requestId = generateUuid();
- final VerifyReportingTaskConfigRequestDTO requestDto = configRequest.getRequest();
- final String taskId = requestDto.getReportingTaskId();
+ final VerifyConfigRequestDTO requestDto = configRequest.getRequest();
+ final String taskId = requestDto.getComponentId();
final List<UpdateStep> updateSteps = Collections.singletonList(new StandardUpdateStep("Verify Reporting Task Configuration"));
- final AsynchronousWebRequest<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> request =
new StandardAsynchronousWebRequest<>(requestId, configRequest, taskId, user, updateSteps);
// Submit the request to be performed in the background
- final Consumer<AsynchronousWebRequest<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
+ final Consumer<AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>>> updateTask = asyncRequest -> {
try {
- final List<ConfigVerificationResultDTO> results = serviceFacade.verifyReportingTaskConfiguration(taskId, requestDto.getReportingTask());
+ final List<ConfigVerificationResultDTO> results = serviceFacade.verifyReportingTaskConfiguration(taskId, requestDto.getProperties());
asyncRequest.markStepComplete(results);
} catch (final Exception e) {
logger.error("Failed to verify Reporting Task configuration", e);
@@ -840,30 +902,30 @@ public class ReportingTaskResource extends ApplicationResource {
updateRequestManager.submitRequest(VERIFICATION_REQUEST_TYPE, requestId, request, updateTask);
// Generate the response
- final VerifyReportingTaskConfigRequestEntity resultsEntity = createVerifyReportingTaskConfigRequestEntity(request, requestId);
+ final VerifyConfigRequestEntity resultsEntity = createVerifyReportingTaskConfigRequestEntity(request, requestId);
return generateOkResponse(resultsEntity).build();
}
- private VerifyReportingTaskConfigRequestEntity createVerifyReportingTaskConfigRequestEntity(
- final AsynchronousWebRequest<VerifyReportingTaskConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest, final String requestId) {
+ private VerifyConfigRequestEntity createVerifyReportingTaskConfigRequestEntity(
+ final AsynchronousWebRequest<VerifyConfigRequestEntity, List<ConfigVerificationResultDTO>> asyncRequest, final String requestId) {
- final VerifyReportingTaskConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
+ final VerifyConfigRequestDTO requestDto = asyncRequest.getRequest().getRequest();
final List<ConfigVerificationResultDTO> resultsList = asyncRequest.getResults();
- final VerifyReportingTaskConfigRequestDTO dto = new VerifyReportingTaskConfigRequestDTO();
- dto.setReportingTaskId(requestDto.getReportingTaskId());
- dto.setReportingTask(requestDto.getReportingTask());
+ final VerifyConfigRequestDTO dto = new VerifyConfigRequestDTO();
+ dto.setComponentId(requestDto.getComponentId());
+ dto.setProperties(requestDto.getProperties());
dto.setResults(resultsList);
- dto.setComplete(resultsList != null);
+ dto.setComplete(asyncRequest.isComplete());
dto.setFailureReason(asyncRequest.getFailureReason());
dto.setLastUpdated(asyncRequest.getLastUpdated());
dto.setPercentCompleted(asyncRequest.getPercentComplete());
dto.setRequestId(requestId);
dto.setState(asyncRequest.getState());
- dto.setUri(generateResourceUri("reporting-tasks", requestDto.getReportingTaskId(), "config", "verification-requests", requestId));
+ dto.setUri(generateResourceUri("reporting-tasks", requestDto.getComponentId(), "config", "verification-requests", requestId));
- final VerifyReportingTaskConfigRequestEntity entity = new VerifyReportingTaskConfigRequestEntity();
+ final VerifyConfigRequestEntity entity = new VerifyConfigRequestEntity();
entity.setRequest(dto);
return entity;
}
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/concurrent/StandardUpdateStep.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/concurrent/StandardUpdateStep.java
index 53fbbe5..bb6455d 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/concurrent/StandardUpdateStep.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/concurrent/StandardUpdateStep.java
@@ -37,7 +37,7 @@ public class StandardUpdateStep implements UpdateStep {
@Override
public synchronized String getFailureReason() {
- return null;
+ return failureReason;
}
@Override
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
index f5009fa..6408055 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/dto/DtoFactory.java
@@ -1679,7 +1679,6 @@ public final class DtoFactory {
dto.getProperties().put(descriptor.getName(), propertyValue);
}
- dto.setReferencedAttributes(controllerServiceNode.getReferencedAttributeNames());
dto.setValidationStatus(controllerServiceNode.getValidationStatus(1, TimeUnit.MILLISECONDS).name());
// add the validation errors
@@ -4014,7 +4013,6 @@ public final class DtoFactory {
dto.setSchedulingStrategy(procNode.getSchedulingStrategy().name());
dto.setExecutionNode(procNode.getExecutionNode().name());
dto.setAnnotationData(procNode.getAnnotationData());
- dto.setReferencedAttributes(procNode.getReferencedAttributeNames());
// set up the default values for concurrent tasks and scheduling period
final Map<String, String> defaultConcurrentTasks = new HashMap<>();
@@ -4145,7 +4143,6 @@ public final class DtoFactory {
copy.setParentGroupId(original.getParentGroupId());
copy.setName(original.getName());
copy.setProperties(copy(original.getProperties()));
- copy.setReferencedAttributes(copy(original.getReferencedAttributes()));
copy.setReferencingComponents(copy(original.getReferencingComponents()));
copy.setState(original.getState());
copy.setType(original.getType());
@@ -4258,7 +4255,6 @@ public final class DtoFactory {
copy.setBulletinLevel(original.getBulletinLevel());
copy.setDefaultConcurrentTasks(original.getDefaultConcurrentTasks());
copy.setDefaultSchedulingPeriod(original.getDefaultSchedulingPeriod());
- copy.setReferencedAttributes(original.getReferencedAttributes());
copy.setLossTolerant(original.isLossTolerant());
return copy;
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ControllerServiceDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ControllerServiceDAO.java
index 572ec63..8b9f0ea 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ControllerServiceDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ControllerServiceDAO.java
@@ -140,11 +140,11 @@ public interface ControllerServiceDAO {
/**
* Performs verification of the Configuration for the Controller Service with the given ID
* @param controllerServiceId the id of the controller service
- * @param controllerService the configuration to verify
+ * @param properties the configured properties to verify
* @param variables a map of values that can be used for resolving FlowFile attributes for Expression Language
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyConfiguration(String controllerServiceId, ControllerServiceDTO controllerService, Map<String, String> variables);
+ List<ConfigVerificationResultDTO> verifyConfiguration(String controllerServiceId, Map<String, String> properties, Map<String, String> variables);
/**
* Clears the state of the specified controller service.
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessorDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessorDAO.java
index ab4ac1c..679289f 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessorDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ProcessorDAO.java
@@ -20,7 +20,6 @@ import org.apache.nifi.components.state.Scope;
import org.apache.nifi.components.state.StateMap;
import org.apache.nifi.controller.ProcessorNode;
import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
-import org.apache.nifi.web.api.dto.ProcessorConfigDTO;
import org.apache.nifi.web.api.dto.ProcessorDTO;
import java.util.List;
@@ -106,11 +105,11 @@ public interface ProcessorDAO {
/**
* Performs verification of the given Processor Configuration for the Processor with the given ID
* @param processorId the id of the processor
- * @param processorConfig the configuration to verify
+ * @param properties the property configuration to verify
* @param attributes a map of values that can be used for resolving FlowFile attributes for Expression Language
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyProcessorConfiguration(String processorId, ProcessorConfigDTO processorConfig, Map<String, String> attributes);
+ List<ConfigVerificationResultDTO> verifyProcessorConfiguration(String processorId, Map<String, String> properties, Map<String, String> attributes);
/**
* Verifies the specified processor can be removed.
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ReportingTaskDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ReportingTaskDAO.java
index 8af40de..4c06c62 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ReportingTaskDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/ReportingTaskDAO.java
@@ -23,6 +23,7 @@ import org.apache.nifi.web.api.dto.ConfigVerificationResultDTO;
import org.apache.nifi.web.api.dto.ReportingTaskDTO;
import java.util.List;
+import java.util.Map;
import java.util.Set;
public interface ReportingTaskDAO {
@@ -89,10 +90,10 @@ public interface ReportingTaskDAO {
/**
* Performs verification of the Configuration for the Reporting Task with the given ID
* @param reportingTaskId the id of the Reporting Task
- * @param reportingTask the configuration to verify
+ * @param properties the configured properties to verify
* @return verification results
*/
- List<ConfigVerificationResultDTO> verifyConfiguration(String reportingTaskId, ReportingTaskDTO reportingTask);
+ List<ConfigVerificationResultDTO> verifyConfiguration(String reportingTaskId, Map<String, String> properties);
/**
* Determines whether this reporting task can be removed.
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardControllerServiceDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardControllerServiceDAO.java
index 6b9457e..5de890e 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardControllerServiceDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardControllerServiceDAO.java
@@ -401,7 +401,7 @@ public class StandardControllerServiceDAO extends ComponentDAO implements Contro
}
@Override
- public List<ConfigVerificationResultDTO> verifyConfiguration(final String controllerServiceId, final ControllerServiceDTO controllerService, final Map<String, String> variables) {
+ public List<ConfigVerificationResultDTO> verifyConfiguration(final String controllerServiceId, final Map<String, String> properties, final Map<String, String> variables) {
final ControllerServiceNode serviceNode = locateControllerService(controllerServiceId);
final LogRepository logRepository = new NopLogRepository();
@@ -409,7 +409,7 @@ public class StandardControllerServiceDAO extends ComponentDAO implements Contro
final ExtensionManager extensionManager = flowController.getExtensionManager();
final ParameterLookup parameterLookup = serviceNode.getProcessGroup() == null ? ParameterLookup.EMPTY : serviceNode.getProcessGroup().getParameterContext();
- final ConfigurationContext configurationContext = new StandardConfigurationContext(serviceNode, controllerService.getProperties(), controllerService.getAnnotationData(),
+ final ConfigurationContext configurationContext = new StandardConfigurationContext(serviceNode, properties, serviceNode.getAnnotationData(),
parameterLookup, flowController.getControllerServiceProvider(), null, flowController.getVariableRegistry());
final List<ConfigVerificationResult> verificationResults = serviceNode.verifyConfiguration(configurationContext, configVerificationLog, variables, extensionManager);
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
index 8cfcfc1..d4bc543 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardProcessorDAO.java
@@ -442,10 +442,10 @@ public class StandardProcessorDAO extends ComponentDAO implements ProcessorDAO {
}
@Override
- public List<ConfigVerificationResultDTO> verifyProcessorConfiguration(final String processorId, final ProcessorConfigDTO processorConfig, final Map<String, String> attributes) {
+ public List<ConfigVerificationResultDTO> verifyProcessorConfiguration(final String processorId, final Map<String, String> properties, final Map<String, String> attributes) {
final ProcessorNode processor = locateProcessor(processorId);
- final ProcessContext processContext = new StandardProcessContext(processor, processorConfig.getProperties(), processorConfig.getAnnotationData(),
+ final ProcessContext processContext = new StandardProcessContext(processor, properties, processor.getAnnotationData(),
processor.getProcessGroup().getParameterContext(), flowController.getControllerServiceProvider(), flowController.getEncryptor(),
new NopStateManager(), () -> false, flowController);
diff --git a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
index b7558fd..74d5318 100644
--- a/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
+++ b/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/dao/impl/StandardReportingTaskDAO.java
@@ -261,7 +261,7 @@ public class StandardReportingTaskDAO extends ComponentDAO implements ReportingT
}
@Override
- public List<ConfigVerificationResultDTO> verifyConfiguration(final String reportingTaskId, final ReportingTaskDTO reportingTask) {
+ public List<ConfigVerificationResultDTO> verifyConfiguration(final String reportingTaskId, final Map<String, String> properties) {
final ReportingTaskNode taskNode = locateReportingTask(reportingTaskId);
final LogRepository logRepository = new NopLogRepository();
@@ -269,7 +269,7 @@ public class StandardReportingTaskDAO extends ComponentDAO implements ReportingT
final ExtensionManager extensionManager = flowController.getExtensionManager();
final ParameterLookup parameterLookup = ParameterLookup.EMPTY;
- final ConfigurationContext configurationContext = new StandardConfigurationContext(taskNode, reportingTask.getProperties(), reportingTask.getAnnotationData(),
+ final ConfigurationContext configurationContext = new StandardConfigurationContext(taskNode, properties, taskNode.getAnnotationData(),
parameterLookup, flowController.getControllerServiceProvider(), null, flowController.getVariableRegistry());
final List<ConfigVerificationResult> verificationResults = taskNode.verifyConfiguration(configurationContext, configVerificationLog, extensionManager);
diff --git a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/NiFiClientUtil.java b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/NiFiClientUtil.java
index e551e54..58a86d9 100644
--- a/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/NiFiClientUtil.java
+++ b/nifi-system-tests/nifi-system-test-suite/src/test/java/org/apache/nifi/tests/system/NiFiClientUtil.java
@@ -50,9 +50,7 @@ import org.apache.nifi.web.api.dto.ReportingTaskDTO;
import org.apache.nifi.web.api.dto.RevisionDTO;
import org.apache.nifi.web.api.dto.VariableDTO;
import org.apache.nifi.web.api.dto.VariableRegistryDTO;
-import org.apache.nifi.web.api.dto.VerifyControllerServiceConfigRequestDTO;
-import org.apache.nifi.web.api.dto.VerifyProcessorConfigRequestDTO;
-import org.apache.nifi.web.api.dto.VerifyReportingTaskConfigRequestDTO;
+import org.apache.nifi.web.api.dto.VerifyConfigRequestDTO;
import org.apache.nifi.web.api.dto.flow.FlowDTO;
import org.apache.nifi.web.api.dto.flow.ProcessGroupFlowDTO;
import org.apache.nifi.web.api.dto.provenance.ProvenanceDTO;
@@ -85,9 +83,7 @@ import org.apache.nifi.web.api.entity.ScheduleComponentsEntity;
import org.apache.nifi.web.api.entity.VariableEntity;
import org.apache.nifi.web.api.entity.VariableRegistryEntity;
import org.apache.nifi.web.api.entity.VariableRegistryUpdateRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyControllerServiceConfigRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyProcessorConfigRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyReportingTaskConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import org.junit.Assert;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -985,18 +981,15 @@ public class NiFiClientUtil {
public List<ConfigVerificationResultDTO> verifyProcessorConfig(final String processorId, final Map<String, String> properties, final Map<String, String> attributes)
throws NiFiClientException, IOException, InterruptedException {
- final ProcessorConfigDTO processorConfig = new ProcessorConfigDTO();
- processorConfig.setProperties(properties);
-
- final VerifyProcessorConfigRequestDTO requestDto = new VerifyProcessorConfigRequestDTO();
- requestDto.setProcessorId(processorId);
- requestDto.setProcessorConfig(processorConfig);
+ final VerifyConfigRequestDTO requestDto = new VerifyConfigRequestDTO();
+ requestDto.setComponentId(processorId);
+ requestDto.setProperties(properties);
requestDto.setAttributes(attributes);
- final VerifyProcessorConfigRequestEntity verificationRequest = new VerifyProcessorConfigRequestEntity();
+ final VerifyConfigRequestEntity verificationRequest = new VerifyConfigRequestEntity();
verificationRequest.setRequest(requestDto);
- VerifyProcessorConfigRequestEntity results = nifiClient.getProcessorClient().submitConfigVerificationRequest(verificationRequest);
+ VerifyConfigRequestEntity results = nifiClient.getProcessorClient().submitConfigVerificationRequest(verificationRequest);
while (!results.getRequest().isComplete()) {
Thread.sleep(50L);
results = nifiClient.getProcessorClient().getConfigVerificationRequest(processorId, results.getRequest().getRequestId());
@@ -1019,15 +1012,15 @@ public class NiFiClientUtil {
serviceDto.setProperties(properties);
serviceDto.setId(serviceId);
- final VerifyControllerServiceConfigRequestDTO requestDto = new VerifyControllerServiceConfigRequestDTO();
- requestDto.setControllerService(serviceDto);
+ final VerifyConfigRequestDTO requestDto = new VerifyConfigRequestDTO();
+ requestDto.setComponentId(serviceId);
requestDto.setAttributes(attributes);
- requestDto.setControllerServiceId(serviceId);
+ requestDto.setProperties(properties);
- final VerifyControllerServiceConfigRequestEntity verificationRequest = new VerifyControllerServiceConfigRequestEntity();
+ final VerifyConfigRequestEntity verificationRequest = new VerifyConfigRequestEntity();
verificationRequest.setRequest(requestDto);
- VerifyControllerServiceConfigRequestEntity results = nifiClient.getControllerServicesClient().submitConfigVerificationRequest(verificationRequest);
+ VerifyConfigRequestEntity results = nifiClient.getControllerServicesClient().submitConfigVerificationRequest(verificationRequest);
while (!results.getRequest().isComplete()) {
Thread.sleep(50L);
results = nifiClient.getControllerServicesClient().getConfigVerificationRequest(serviceId, results.getRequest().getRequestId());
@@ -1041,18 +1034,14 @@ public class NiFiClientUtil {
public List<ConfigVerificationResultDTO> verifyReportingTaskConfig(final String taskId, final Map<String, String> properties)
throws InterruptedException, IOException,NiFiClientException {
- final ReportingTaskDTO taskDto = new ReportingTaskDTO();
- taskDto.setProperties(properties);
- taskDto.setId(taskId);
-
- final VerifyReportingTaskConfigRequestDTO requestDto = new VerifyReportingTaskConfigRequestDTO();
- requestDto.setReportingTaskId(taskId);
- requestDto.setReportingTask(taskDto);
+ final VerifyConfigRequestDTO requestDto = new VerifyConfigRequestDTO();
+ requestDto.setComponentId(taskId);
+ requestDto.setProperties(properties);
- final VerifyReportingTaskConfigRequestEntity verificationRequest = new VerifyReportingTaskConfigRequestEntity();
+ final VerifyConfigRequestEntity verificationRequest = new VerifyConfigRequestEntity();
verificationRequest.setRequest(requestDto);
- VerifyReportingTaskConfigRequestEntity results = nifiClient.getReportingTasksClient().submitConfigVerificationRequest(verificationRequest);
+ VerifyConfigRequestEntity results = nifiClient.getReportingTasksClient().submitConfigVerificationRequest(verificationRequest);
while (!results.getRequest().isComplete()) {
Thread.sleep(50L);
results = nifiClient.getReportingTasksClient().getConfigVerificationRequest(taskId, results.getRequest().getRequestId());
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ControllerServicesClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ControllerServicesClient.java
index 1befb2a..f9ad54c 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ControllerServicesClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ControllerServicesClient.java
@@ -20,7 +20,7 @@ import org.apache.nifi.web.api.entity.ControllerServiceEntity;
import org.apache.nifi.web.api.entity.ControllerServiceReferencingComponentsEntity;
import org.apache.nifi.web.api.entity.ControllerServiceRunStatusEntity;
import org.apache.nifi.web.api.entity.UpdateControllerServiceReferenceRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyControllerServiceConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import java.io.IOException;
@@ -43,10 +43,10 @@ public interface ControllerServicesClient {
ControllerServiceReferencingComponentsEntity updateControllerServiceReferences(UpdateControllerServiceReferenceRequestEntity referencesEntity) throws NiFiClientException, IOException;
- VerifyControllerServiceConfigRequestEntity submitConfigVerificationRequest(VerifyControllerServiceConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity submitConfigVerificationRequest(VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
- VerifyControllerServiceConfigRequestEntity getConfigVerificationRequest(String serviceId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity getConfigVerificationRequest(String serviceId, String verificationRequestId) throws NiFiClientException, IOException;
- VerifyControllerServiceConfigRequestEntity deleteConfigVerificationRequest(String serviceId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity deleteConfigVerificationRequest(String serviceId, String verificationRequestId) throws NiFiClientException, IOException;
}
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessorClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessorClient.java
index 634aad5..64f55c8 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessorClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ProcessorClient.java
@@ -17,7 +17,7 @@
package org.apache.nifi.toolkit.cli.impl.client.nifi;
import org.apache.nifi.web.api.entity.ProcessorEntity;
-import org.apache.nifi.web.api.entity.VerifyProcessorConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import java.io.IOException;
@@ -48,10 +48,10 @@ public interface ProcessorClient {
ProcessorEntity deleteProcessor(ProcessorEntity processorEntity) throws NiFiClientException, IOException;
- VerifyProcessorConfigRequestEntity submitConfigVerificationRequest(VerifyProcessorConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity submitConfigVerificationRequest(VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
- VerifyProcessorConfigRequestEntity getConfigVerificationRequest(String processorId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity getConfigVerificationRequest(String processorId, String verificationRequestId) throws NiFiClientException, IOException;
- VerifyProcessorConfigRequestEntity deleteConfigVerificationRequest(String processorId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity deleteConfigVerificationRequest(String processorId, String verificationRequestId) throws NiFiClientException, IOException;
}
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ReportingTasksClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ReportingTasksClient.java
index 57dc2aa..13c61a1 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ReportingTasksClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/ReportingTasksClient.java
@@ -19,7 +19,7 @@ package org.apache.nifi.toolkit.cli.impl.client.nifi;
import org.apache.nifi.web.api.entity.ReportingTaskEntity;
import org.apache.nifi.web.api.entity.ReportingTaskRunStatusEntity;
-import org.apache.nifi.web.api.entity.VerifyReportingTaskConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import java.io.IOException;
@@ -34,10 +34,10 @@ public interface ReportingTasksClient {
ReportingTaskEntity activateReportingTask(String id, ReportingTaskRunStatusEntity runStatusEntity) throws NiFiClientException, IOException;
- VerifyReportingTaskConfigRequestEntity submitConfigVerificationRequest(VerifyReportingTaskConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity submitConfigVerificationRequest(VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException;
- VerifyReportingTaskConfigRequestEntity getConfigVerificationRequest(String taskId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity getConfigVerificationRequest(String taskId, String verificationRequestId) throws NiFiClientException, IOException;
- VerifyReportingTaskConfigRequestEntity deleteConfigVerificationRequest(String taskId, String verificationRequestId) throws NiFiClientException, IOException;
+ VerifyConfigRequestEntity deleteConfigVerificationRequest(String taskId, String verificationRequestId) throws NiFiClientException, IOException;
}
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyControllerServicesClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyControllerServicesClient.java
index 2b164c1..3b787be 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyControllerServicesClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyControllerServicesClient.java
@@ -25,7 +25,7 @@ import org.apache.nifi.web.api.entity.ControllerServiceEntity;
import org.apache.nifi.web.api.entity.ControllerServiceReferencingComponentsEntity;
import org.apache.nifi.web.api.entity.ControllerServiceRunStatusEntity;
import org.apache.nifi.web.api.entity.UpdateControllerServiceReferenceRequestEntity;
-import org.apache.nifi.web.api.entity.VerifyControllerServiceConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
@@ -178,35 +178,35 @@ public class JerseyControllerServicesClient extends AbstractJerseyClient impleme
}
@Override
- public VerifyControllerServiceConfigRequestEntity submitConfigVerificationRequest(final VerifyControllerServiceConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity submitConfigVerificationRequest(final VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
if (configRequestEntity == null) {
throw new IllegalArgumentException("Config Request Entity cannot be null");
}
if (configRequestEntity.getRequest() == null) {
throw new IllegalArgumentException("Config Request DTO cannot be null");
}
- if (configRequestEntity.getRequest().getControllerServiceId() == null) {
+ if (configRequestEntity.getRequest().getComponentId() == null) {
throw new IllegalArgumentException("Controller Service ID cannot be null");
}
- if (configRequestEntity.getRequest().getControllerService() == null) {
- throw new IllegalArgumentException("Controller Service cannot be null");
+ if (configRequestEntity.getRequest().getProperties() == null) {
+ throw new IllegalArgumentException("Controller Service properties cannot be null");
}
return executeAction("Error submitting Config Verification Request", () -> {
final WebTarget target = controllerServicesTarget
.path("{id}/config/verification-requests")
- .resolveTemplate("id", configRequestEntity.getRequest().getControllerServiceId());
+ .resolveTemplate("id", configRequestEntity.getRequest().getComponentId());
return getRequestBuilder(target).post(
Entity.entity(configRequestEntity, MediaType.APPLICATION_JSON_TYPE),
- VerifyControllerServiceConfigRequestEntity.class
+ VerifyConfigRequestEntity.class
);
});
}
@Override
- public VerifyControllerServiceConfigRequestEntity getConfigVerificationRequest(final String serviceId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity getConfigVerificationRequest(final String serviceId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -217,12 +217,12 @@ public class JerseyControllerServicesClient extends AbstractJerseyClient impleme
.resolveTemplate("id", serviceId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).get(VerifyControllerServiceConfigRequestEntity.class);
+ return getRequestBuilder(target).get(VerifyConfigRequestEntity.class);
});
}
@Override
- public VerifyControllerServiceConfigRequestEntity deleteConfigVerificationRequest(final String serviceId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity deleteConfigVerificationRequest(final String serviceId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -233,7 +233,7 @@ public class JerseyControllerServicesClient extends AbstractJerseyClient impleme
.resolveTemplate("id", serviceId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).delete(VerifyControllerServiceConfigRequestEntity.class);
+ return getRequestBuilder(target).delete(VerifyConfigRequestEntity.class);
});
}
}
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessorClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessorClient.java
index bf0442c..9bb5998 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessorClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyProcessorClient.java
@@ -23,7 +23,7 @@ import org.apache.nifi.toolkit.cli.impl.client.nifi.RequestConfig;
import org.apache.nifi.web.api.dto.RevisionDTO;
import org.apache.nifi.web.api.entity.ProcessorEntity;
import org.apache.nifi.web.api.entity.ProcessorRunStatusEntity;
-import org.apache.nifi.web.api.entity.VerifyProcessorConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
@@ -181,34 +181,34 @@ public class JerseyProcessorClient extends AbstractJerseyClient implements Proce
}
@Override
- public VerifyProcessorConfigRequestEntity submitConfigVerificationRequest(final VerifyProcessorConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity submitConfigVerificationRequest(final VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
if (configRequestEntity == null) {
throw new IllegalArgumentException("Config Request Entity cannot be null");
}
if (configRequestEntity.getRequest() == null) {
throw new IllegalArgumentException("Config Request DTO cannot be null");
}
- if (configRequestEntity.getRequest().getProcessorId() == null) {
+ if (configRequestEntity.getRequest().getComponentId() == null) {
throw new IllegalArgumentException("Processor ID cannot be null");
}
- if (configRequestEntity.getRequest().getProcessorConfig() == null) {
- throw new IllegalArgumentException("Processor Config cannot be null");
+ if (configRequestEntity.getRequest().getProperties() == null) {
+ throw new IllegalArgumentException("Processor properties cannot be null");
}
return executeAction("Error submitting Config Verification Request", () -> {
final WebTarget target = processorTarget
.path("/config/verification-requests")
- .resolveTemplate("id", configRequestEntity.getRequest().getProcessorId());
+ .resolveTemplate("id", configRequestEntity.getRequest().getComponentId());
return getRequestBuilder(target).post(
Entity.entity(configRequestEntity, MediaType.APPLICATION_JSON_TYPE),
- VerifyProcessorConfigRequestEntity.class
+ VerifyConfigRequestEntity.class
);
});
}
@Override
- public VerifyProcessorConfigRequestEntity getConfigVerificationRequest(final String processorId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity getConfigVerificationRequest(final String processorId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -219,12 +219,12 @@ public class JerseyProcessorClient extends AbstractJerseyClient implements Proce
.resolveTemplate("id", processorId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).get(VerifyProcessorConfigRequestEntity.class);
+ return getRequestBuilder(target).get(VerifyConfigRequestEntity.class);
});
}
@Override
- public VerifyProcessorConfigRequestEntity deleteConfigVerificationRequest(final String processorId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity deleteConfigVerificationRequest(final String processorId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -235,7 +235,7 @@ public class JerseyProcessorClient extends AbstractJerseyClient implements Proce
.resolveTemplate("id", processorId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).delete(VerifyProcessorConfigRequestEntity.class);
+ return getRequestBuilder(target).delete(VerifyConfigRequestEntity.class);
});
}
}
diff --git a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyReportingTasksClient.java b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyReportingTasksClient.java
index 4fc0582..a83e20a 100644
--- a/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyReportingTasksClient.java
+++ b/nifi-toolkit/nifi-toolkit-cli/src/main/java/org/apache/nifi/toolkit/cli/impl/client/nifi/impl/JerseyReportingTasksClient.java
@@ -23,7 +23,7 @@ import org.apache.nifi.toolkit.cli.impl.client.nifi.ReportingTasksClient;
import org.apache.nifi.toolkit.cli.impl.client.nifi.RequestConfig;
import org.apache.nifi.web.api.entity.ReportingTaskEntity;
import org.apache.nifi.web.api.entity.ReportingTaskRunStatusEntity;
-import org.apache.nifi.web.api.entity.VerifyReportingTaskConfigRequestEntity;
+import org.apache.nifi.web.api.entity.VerifyConfigRequestEntity;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
@@ -96,34 +96,34 @@ public class JerseyReportingTasksClient extends AbstractJerseyClient implements
}
@Override
- public VerifyReportingTaskConfigRequestEntity submitConfigVerificationRequest(final VerifyReportingTaskConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity submitConfigVerificationRequest(final VerifyConfigRequestEntity configRequestEntity) throws NiFiClientException, IOException {
if (configRequestEntity == null) {
throw new IllegalArgumentException("Config Request Entity cannot be null");
}
if (configRequestEntity.getRequest() == null) {
throw new IllegalArgumentException("Config Request DTO cannot be null");
}
- if (configRequestEntity.getRequest().getReportingTaskId() == null) {
+ if (configRequestEntity.getRequest().getComponentId() == null) {
throw new IllegalArgumentException("Reporting Task ID cannot be null");
}
- if (configRequestEntity.getRequest().getReportingTask() == null) {
- throw new IllegalArgumentException("Reporting Task cannot be null");
+ if (configRequestEntity.getRequest().getProperties() == null) {
+ throw new IllegalArgumentException("Reporting Task properties cannot be null");
}
return executeAction("Error submitting Config Verification Request", () -> {
final WebTarget target = reportingTasksTarget
.path("{id}/config/verification-requests")
- .resolveTemplate("id", configRequestEntity.getRequest().getReportingTaskId());
+ .resolveTemplate("id", configRequestEntity.getRequest().getComponentId());
return getRequestBuilder(target).post(
Entity.entity(configRequestEntity, MediaType.APPLICATION_JSON_TYPE),
- VerifyReportingTaskConfigRequestEntity.class
+ VerifyConfigRequestEntity.class
);
});
}
@Override
- public VerifyReportingTaskConfigRequestEntity getConfigVerificationRequest(final String taskId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity getConfigVerificationRequest(final String taskId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -134,12 +134,12 @@ public class JerseyReportingTasksClient extends AbstractJerseyClient implements
.resolveTemplate("id", taskId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).get(VerifyReportingTaskConfigRequestEntity.class);
+ return getRequestBuilder(target).get(VerifyConfigRequestEntity.class);
});
}
@Override
- public VerifyReportingTaskConfigRequestEntity deleteConfigVerificationRequest(final String taskId, final String verificationRequestId) throws NiFiClientException, IOException {
+ public VerifyConfigRequestEntity deleteConfigVerificationRequest(final String taskId, final String verificationRequestId) throws NiFiClientException, IOException {
if (verificationRequestId == null) {
throw new IllegalArgumentException("Verification Request ID cannot be null");
}
@@ -150,7 +150,7 @@ public class JerseyReportingTasksClient extends AbstractJerseyClient implements
.resolveTemplate("id", taskId)
.resolveTemplate("requestId", verificationRequestId);
- return getRequestBuilder(target).delete(VerifyReportingTaskConfigRequestEntity.class);
+ return getRequestBuilder(target).delete(VerifyConfigRequestEntity.class);
});
}
}