I have the following minimal example where I'm trying to create a dependent
PropertyDescriptor

#####
from nifiapi.properties import PropertyDescriptor, StandardValidators
from nifiapi.flowfiletransform import FlowFileTransform,
FlowFileTransformResult

class MinimalPythonExample(FlowFileTransform):
    class Java:
        implements = ['org.apache.nifi.python.processor.FlowFileTransform']

    class ProcessorDetails:
        dependencies = []
        version = '0.0.1-SNAPSHOT'

    def __init__(self, **kwargs):

        self.ENABLE_FEATURE = PropertyDescriptor(
            name="Enable Feature",
            description="Turns on a special feature",
            required=True,
            allowable_values=["true", "false"],
            default_value="false"
            )

        # self.FEATURE_CONFIG = PropertyDescriptor(
        #     name="Feature Configuration",
        #     description="Configures the special feature",
        #     dependencies = [self.ENABLE_FEATURE],
        #     validators=[StandardValidators.NON_EMPTY_VALIDATOR]
        #     )

        self.descriptors = [
            self.ENABLE_FEATURE,
            # self.FEATURE_CONFIG
            ]

    def getPropertyDescriptors(self):
        return self.descriptors

    def transform(self, context, flowFile):
        return FlowFileTransformResult(relationship = "success")
#####

However, when I uncomment the code for the self.FEATURE_CONFIG, I get the
following error in the log:

#####
py4j.Py4JException: An exception was raised by the Python Proxy. Return
Message: Traceback (most recent call last):
  File
"/Users/chris.snow/Documents/nifi-2.0.0-M4/python/framework/py4j/java_gateway.py",
line 2466, in _call_proxy
    return_value = getattr(self.pool[obj_id], method)(*params)
  File
"/Users/chris.snow/Documents/nifi-2.0.0-M4/python/framework/PythonProcessorAdapter.py",
line 89, in getSupportedPropertyDescriptors
    descriptor_list.add(descriptor.to_java_descriptor(self.gateway,
self.controller_service_type_lookup))
  File
"/Users/chris.snow/Documents/nifi-2.0.0-M4/python/api/nifiapi/properties.py",
line 223, in to_java_descriptor
    dependent_property =
dependency.property_descriptor.to_java_descriptor(gateway, cs_type_lookup)
AttributeError: 'PropertyDescriptor' object has no attribute
'property_descriptor'

at py4j.Protocol.getReturnValue(Protocol.java:476)
at
org.apache.nifi.py4j.client.PythonProxyInvocationHandler.invoke(PythonProxyInvocationHandler.java:87)
at
org.apache.nifi.py4j.client.NiFiPythonGateway$1.invoke(NiFiPythonGateway.java:175)
at
jdk.proxy19/jdk.proxy19.$Proxy157.getSupportedPropertyDescriptors(Unknown
Source)
at
org.apache.nifi.python.processor.PythonProcessorProxy.getSupportedPropertyDescriptors(PythonProcessorProxy.java:165)
at
org.apache.nifi.components.AbstractConfigurableComponent.getPropertyDescriptors(AbstractConfigurableComponent.java:231)
at
org.apache.nifi.controller.AbstractComponentNode.getProperties(AbstractComponentNode.java:632)
at
org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper.mapPropertyDescriptors(NiFiRegistryFlowMapper.java:572)
at
org.apache.nifi.registry.flow.mapping.NiFiRegistryFlowMapper.mapProcessor(NiFiRegistryFlowMapper.java:740)
at
org.apache.nifi.flowanalysis.StandardFlowAnalyzer.analyzeProcessor(StandardFlowAnalyzer.java:94)
at
org.apache.nifi.controller.ProcessorNode.lambda$performFlowAnalysisOnThis$0(ProcessorNode.java:289)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at
org.apache.nifi.controller.ProcessorNode.performFlowAnalysisOnThis(ProcessorNode.java:289)
at
org.apache.nifi.controller.AbstractComponentNode.computeValidationErrors(AbstractComponentNode.java:918)
at
org.apache.nifi.controller.StandardProcessorNode.computeValidationErrors(StandardProcessorNode.java:1056)
at
org.apache.nifi.controller.AbstractComponentNode.performValidation(AbstractComponentNode.java:846)
at
org.apache.nifi.controller.AbstractComponentNode.performValidation(AbstractComponentNode.java:860)
at
org.apache.nifi.components.validation.StandardValidationTrigger.trigger(StandardValidationTrigger.java:52)
at
org.apache.nifi.components.validation.TriggerValidationTask.run(TriggerValidationTask.java:58)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at
java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:358)
at
java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
#####

Any pointers on where I'm going wrong?

Thanks in advance!

Reply via email to