def nifi_toolkit()

in packages/constructs/L3/dataops/dataops-nifi-l3-construct/docker/nifi-manager/scripts/toolkit/utils.py [0:0]


def nifi_toolkit(nifi_app, args):
    while True:

        cmd = args + ["-ot", "json"]
        logger.info(f"Executing cmd: {' '.join(cmd)}")
        starttime = time.time()
        output = nifi_toolkit_pexpect(nifi_app, cmd)
        elapsed = time.time() - starttime
        logger.info(f"Command took {elapsed} seconds")

        if "ERROR:" in output:
            if 'connect timed out' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. Timeout.")
            elif 'No route to host' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. No route to host.")
            elif 'Connection refused' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. Connection refused.")
            elif 'The Flow Controller is initializing the Data Flow' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. Initializing flow.")
            elif 'Cannot replicate request' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. Cannot replicate request. Node disconnected.")
            elif 'no nodes are connected' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. No nodes are connected.")
            elif 'is currently connecting' in output:
                logger.warning(
                    "Cannot connect to Nifi using toolkit. Node is currently connecting.")
            else:
                logger.error(f"Nifi Toolkit Exception: {output}")
                raise Exception(f"Nifi Toolkit Exception: {output}")
        else:
            return output
        logger.info("Retrying in 10 seconds.")
        # nosemgrep
        time.sleep(10)