def _funct_zia_get_blocklist_function(self, event, *args, **kwargs):
        """Function: Get a list of block-listed URLs.
        """
        try:
            rp = ResultPayload(PACKAGE_NAME, **kwargs)

            # Get the wf_instance_id of the workflow this Function was called in
            wf_instance_id = event.message["workflow_instance"][
                "workflow_instance_id"]

            yield StatusMessage(
                "Starting '{0}' running in workflow '{1}'".format(
                    FN_NAME, wf_instance_id))

            # Get and validate required function inputs:
            fn_inputs = validate_fields([], kwargs)

            LOG.info("'{0}' inputs: %s", fn_inputs)

            url_filter_patt = fn_inputs.get("zia_url_filter")
            if url_filter_patt and not is_regex(url_filter_patt):
                raise ValueError(
                    "The url query filter '{}' does not have a valid regular expression."
                    .format("zia_url_filter"))

            yield StatusMessage(
                "Validations complete. Starting business logic")

            ziacli = ZiaClient(self.opts, self.fn_options)
            result = ziacli.get_blocklist_urls(url_filter=url_filter_patt)

            yield StatusMessage(
                "Finished '{0}' that was running in workflow '{1}'".format(
                    FN_NAME, wf_instance_id))

            results = rp.done(True, result)

            LOG.info("'%s' complete", FN_NAME)

            yield StatusMessage(
                "Returning results for function '{}' with parameters '{}'.".
                format(
                    FN_NAME, ", ".join("{!s}={!r}".format(k, v)
                                       for (k, v) in fn_inputs.items())))

            # Produce a FunctionResult with the results
            yield FunctionResult(results)
        except Exception as e:
            yield FunctionError(e)
def selftest_function(opts):
    """
    Simple test to verify Zia connectivity.
    """
    fn_opts = opts.get("fn_zia", {})
    try:
        ziacli = ZiaClient(opts, fn_opts)
        result = ziacli.get_blocklist_urls()
        if isinstance(result, dict):
            return {
                "state": "success",
                "reason": "Successful connection to Zia endpoint"
            }
        else:
            return {
                "state": "failure",
                "reason": "Failed to connect to Zia endpoint"
            }

    except Exception as e:
        return {"state": "failure", "status_code": e}