Example #1
0
    def decorator_fn(original_fn):
        @wraps(original_fn)
        def wrapper(framework):
            client_factories_provider = kwargs.get('client_factories_provider')
            if not client_factories_provider:
                client_factories_provider = default_client_factories_provider
            proto_name = kwargs.get('protocol_name')
            stop_on_first = kwargs.get('stop_on_first')

            vector = ObjectStateHolderVector()
            framework = RichFramework(framework)
            if not proto_name:
                proto_name = framework.get_dest_attribute('Protocol')

            creds_manager = CredsManager(framework)
            client_factories = client_factories_provider(framework,
                                                         creds_manager)

            first_factory = take(0, 1, client_factories)
            if not first_factory:
                logger.reportErrorObject(_create_missed_creds_error(proto_name))
            else:
                connection_exs = []
                discovery_exs = []
                warnings = []
                at_least_once_discovered = False
                oshs = []

                client_factories = list(itertools.chain(first_factory, client_factories))

                main_fn = original_fn
                for index, client_factory in enumerate(client_factories):
                    try:
                        with client_factory() as client:
                            args_ = (framework, client, index)
                            kwargs_ = {}
                            oshs_, warnings_ = main_fn(*args_, **kwargs_)

                            oshs.extend(oshs_)
                            warnings.extend(warnings_)
                            at_least_once_discovered = True
                            if stop_on_first:
                                break
                    except ConnectionException, ce:
                        logger.debugException(str(ce))
                        connection_exs.append(ce)
                    except (DiscoveryException, Exception), de:
                        logger.debugException(str(de))
                        discovery_exs.append(de)

                if at_least_once_discovered:
                    each(logger.reportWarningObject, warnings)
                else:
                    for ex in connection_exs:
                        obj = _create_connection_errorobj(proto_name, ex.message)
                        logger.reportWarningObject(obj)
                    for ex in discovery_exs:
                        obj = _create_discovery_errorobj(proto_name, ex.message)
                        logger.reportErrorObject(obj)
                vector.addAll(oshs)
Example #2
0
            except (flow.DiscoveryException, Exception), de:
                logger.debugException('%s' % de)
                discovery_exs.append(de)
            except JException, je:
                logger.debugException('%s' % je)
                java_exs.append(je)

        warnings = filter(None, warnings)
        if at_least_once_discovered:
            each(logger.reportWarning, warnings)
        else:
            for ex in connection_exs:
                obj = flow._create_connection_errorobj(proto_name, ex.message)
                logger.reportErrorObject(obj)
            for ex in discovery_exs:
                obj = flow._create_discovery_errorobj(proto_name, ex.message)
                logger.reportErrorObject(obj)
            for ex in java_exs:
                obj = flow._create_discovery_errorobj(proto_name, '%s %s' % (ex.__class__, ex.getMessage()))
                logger.reportErrorObject(obj)
    return vector


def get_applicable_credentials(framework, portPattern):
    r'@types: Framework, str -> iterator[tuple[int, str]]'
    logger.debug('Getting applicable credentials to createClient')
    credIds = _get_sap_java_creds(framework)
    # get ports available on destination
    destPorts = framework.getTriggerCIDataAsList('sap_jmx_port') or ()
    destPorts = set(ifilter(portPattern.match, destPorts))
    portAttr = Protocol.PROTOCOL_ATTRIBUTE_PORT
Example #3
0
        cred_args = chain((first_,), cred_args)
        connection_exs = []
        discovery_exs = []
        warnings = []
        at_least_once_discovered = False
        for args in cred_args:
            try:
                oshs, warnings_ = main_fn(framework, creds_manager, *args)
                warnings.extend(warnings_ or ())
                vector.addAll(oshs)
                at_least_once_discovered = True
                if stop_on_first:
                    break
            except flow.ConnectionException, ce:
                logger.debugException(str(ce))
                connection_exs.append(ce)
            except (flow.DiscoveryException, Exception, JException), de:
                logger.debugException(str(de))
                discovery_exs.append(de)
        warnings = filter(None, warnings)
        if at_least_once_discovered:
            each(logger.reportWarning, warnings)
        else:
            for ex in connection_exs:
                obj = flow._create_connection_errorobj(proto_name, ex.message)
                logger.reportErrorObject(obj)
            for ex in discovery_exs:
                obj = flow._create_discovery_errorobj(proto_name, ex.message)
                logger.reportErrorObject(obj)
    return vector