Example #1
0
    def _strategy(initial_brokers):
        logger.debug('Failover strategy: searching for a new rabbitmq server')
        initial_brokers = [broker for broker in initial_brokers if broker]
        brokers = itertools.cycle(initial_brokers)
        while True:
            if cluster.is_cluster_configured():
                nodes = cluster.get_cluster_nodes()
                for node_ip in nodes:
                    _set_master(daemon_name, node_ip)

                    daemon = DaemonFactory().load(daemon_name)

                    broker_url = 'amqp://{0}:{1}@{2}:{3}/{4}'.format(
                        daemon.broker_user, daemon.broker_pass, node_ip,
                        daemon.broker_port, daemon.broker_vhost)

                    logger.debug('Trying broker at {0}'.format(broker_url))
                    yield broker_url
            else:
                logger.debug('cluster config file does not exist')
                broker_url = next(brokers)
                if len(initial_brokers) > 1:
                    logger.debug('writing config file')
                    cluster.config_from_broker_urls(broker_url,
                                                    initial_brokers)
                    _set_master(daemon_name, cluster.get_cluster_active())
                logger.debug('Trying broker at {0}'.format(broker_url))
                yield broker_url
def get_broker_ssl_cert_path():
    """
    Returns location of the broker certificate on the agent
    """
    if cluster.is_cluster_configured():
        active_node = cluster.get_cluster_active() or {}
        broker_ssl_cert_path = active_node.get('internal_cert_path')
        if broker_ssl_cert_path:
            return broker_ssl_cert_path
    return os.environ[constants.BROKER_SSL_CERT_PATH]
def get_manager_file_server_url():
    """
    Returns the manager file server base url.
    """
    if cluster.is_cluster_configured():
        active_node_ip = cluster.get_cluster_active()
        port = get_manager_rest_service_port()
        if active_node_ip:
            return 'https://{0}:{1}/resources'.format(active_node_ip, port)
    return os.environ[constants.MANAGER_FILE_SERVER_URL_KEY]
Example #4
0
def get_broker_ssl_cert_path():
    """
    Returns location of the broker certificate on the agent
    """
    if cluster.is_cluster_configured():
        active_node = cluster.get_cluster_active() or {}
        broker_ssl_cert_path = active_node.get('internal_cert_path')
        if broker_ssl_cert_path:
            return broker_ssl_cert_path
    return os.environ[constants.BROKER_SSL_CERT_PATH]
Example #5
0
def get_manager_file_server_url():
    """
    Returns the manager file server base url.
    """
    if cluster.is_cluster_configured():
        active_node_ip = cluster.get_cluster_active()
        port = get_manager_rest_service_port()
        if active_node_ip:
            return 'https://{0}:{1}/resources'.format(active_node_ip, port)
    return os.environ[constants.MANAGER_FILE_SERVER_URL_KEY]
Example #6
0
def get_local_rest_certificate():
    """
    Returns the path to the local copy of the server's public certificate
    """
    if cluster.is_cluster_configured():
        active_node = cluster.get_cluster_active() or {}
        rest_cert_path = active_node.get('internal_cert_path')
        if rest_cert_path:
            return rest_cert_path
    return os.environ[constants.LOCAL_REST_CERT_FILE_KEY]
Example #7
0
    def _strategy(initial_brokers):
        logger.debug('Failover strategy: searching for a new rabbitmq server')
        initial_brokers = [broker for broker in initial_brokers if broker]
        brokers = itertools.cycle(initial_brokers)
        while True:
            if cluster.is_cluster_configured():
                nodes = cluster.get_cluster_nodes()
                for node in nodes:
                    with _cluster_settings_lock(daemon_name):
                        _set_master(daemon_name, node)

                    ssl_enabled = node.get('broker_ssl_enabled', False)
                    if 'broker_port' in node:
                        port = node['broker_port']
                    else:
                        port = 5671 if ssl_enabled else 5672

                    broker_url = 'amqp://{0}:{1}@{2}:{3}//'.format(
                        node['broker_user'], node['broker_pass'],
                        node['broker_ip'], port)

                    if ssl_enabled:
                        # use a different cert for each node in the cluster -
                        # can't pass that in the amqp url
                        broker_ssl_cert_path = node.get('internal_cert_path')
                        if broker_ssl_cert_path:
                            app.conf['BROKER_USE_SSL']['ca_certs'] =\
                                broker_ssl_cert_path

                    logger.debug('Trying broker at {0}'.format(broker_url))
                    yield broker_url
            else:
                logger.debug('cluster config file does not exist')
                broker_url = next(brokers)
                if len(initial_brokers) > 1:
                    logger.debug('writing config file')
                    with _cluster_settings_lock(daemon_name):
                        cluster.config_from_broker_urls(
                            broker_url, initial_brokers)
                        _set_master(daemon_name, cluster.get_cluster_active())
                logger.debug('Trying broker at {0}'.format(broker_url))
                yield broker_url