Beispiel #1
0
def _get_server_properties():
    global _api_cache

    if not _api_cache:  # If we need to refresh the list or if previously no servers were up
        _api_cache_lock.acquire()

        try:
            if not _api_cache:

                servers = []
                with ZookeeperClient(
                        hosts=get_sentry_server_ha_zookeeper_quorum(
                        )) as client:
                    sentry_servers = client.get_children_data(
                        namespace=get_sentry_server_ha_zookeeper_namespace())

                for data in sentry_servers:
                    server = json.loads(data.decode("utf-8"))
                    servers.append({
                        'hostname':
                        server['address'],
                        'port':
                        server['sslPort']
                        if server['sslPort'] else server['port']
                    })

                _api_cache = servers
        except Exception, e:
            raise PopupException(_(
                'Error in retrieving Sentry server properties from Zookeeper.'
            ),
                                 detail=e)
        finally:
Beispiel #2
0
def _get_server_properties():
    global _api_cache

    if not _api_cache:  # If we need to refresh the list or if previously no servers were up
        _api_cache_lock.acquire()

        try:
            if not _api_cache:

                servers = []
                client = ZookeeperClient(hosts=get_sentry_server_ha_zookeeper_quorum())
                sentry_servers = client.get_children_data(namespace=get_sentry_server_ha_zookeeper_namespace())

                for data in sentry_servers:
                    server = json.loads(data.decode("utf-8"))
                    servers.append(
                        {
                            "hostname": server["address"],
                            "port": server["sslPort"] if server["sslPort"] else server["port"],
                        }
                    )

                _api_cache = servers
        except Exception, e:
            raise PopupException(_("Error in retrieving Sentry server properties from Zookeeper."), detail=e)
        finally:
Beispiel #3
0
def _get_server_properties():
    global _api_cache

    if _api_cache is None:
        _api_cache_lock.acquire()

        try:
            if _api_cache is None:

                if get_sentry_server_ha_has_security():
                    try:
                        from zookeeper.conf import CLUSTERS
                        sasl_server_principal = CLUSTERS.get(
                        )['default'].PRINCIPAL_NAME.get()
                    except Exception, e:
                        LOG.error(
                            "Could not get principal name from ZooKeeper app config: %s. Using 'zookeeper' as principal name."
                            % e)
                        sasl_server_principal = 'zookeeper'
                else:
                    sasl_server_principal = None

                zk = KazooClient(hosts=get_sentry_server_ha_zookeeper_quorum(),
                                 read_only=True,
                                 sasl_server_principal=sasl_server_principal)

                zk.start()

                servers = []
                namespace = get_sentry_server_ha_zookeeper_namespace()

                children = zk.get_children(
                    "/%s/sentry-service/sentry-service/" % namespace)
                for node in children:
                    data, stat = zk.get(
                        "/%s/sentry-service/sentry-service/%s" %
                        (namespace, node))
                    server = json.loads(data.decode("utf-8"))
                    servers.append({
                        'hostname':
                        server['address'],
                        'port':
                        server['sslPort']
                        if server['sslPort'] else server['port']
                    })

                zk.stop()

                _api_cache = servers
        finally:
            _api_cache_lock.release()

    return _api_cache
Beispiel #4
0
def _get_server_properties():
  global _api_cache

  if _api_cache is None:
    _api_cache_lock.acquire()

    try:
      if _api_cache is None:

        if get_sentry_server_ha_has_security():
          try:
            from zookeeper.conf import CLUSTERS
            sasl_server_principal = CLUSTERS.get()['default'].PRINCIPAL_NAME.get()
          except Exception, e:
            LOG.warn("Could not get principal name from ZooKeeper app config: %s. Using 'zookeeper' as principal name." % e)
            sasl_server_principal = 'zookeeper'
        else:
          sasl_server_principal = None

        zk = KazooClient(hosts=get_sentry_server_ha_zookeeper_quorum(), read_only=True, sasl_server_principal=sasl_server_principal)

        zk.start()

        servers = []
        namespace = get_sentry_server_ha_zookeeper_namespace()

        children = zk.get_children("/%s/sentry-service/sentry-service/" % namespace)
        for node in children:
          data, stat = zk.get("/%s/sentry-service/sentry-service/%s" % (namespace, node))
          server = json.loads(data.decode("utf-8"))
          servers.append({'hostname': server['address'], 'port': server['sslPort'] if server['sslPort'] else server['port']})

        zk.stop()

        _api_cache = servers
    finally:
      _api_cache_lock.release()

  return _api_cache
def _get_server_properties():
  global _api_cache

  if not _api_cache: # If we need to refresh the list or if previously no servers were up 
    _api_cache_lock.acquire()

    try:
      if not _api_cache:

        servers = []
        sentry_servers = get_children_data(ensemble=get_sentry_server_ha_zookeeper_quorum(), namespace=get_sentry_server_ha_zookeeper_namespace())

        for data in sentry_servers:
          server = json.loads(data.decode("utf-8"))
          servers.append({'hostname': server['address'], 'port': server['sslPort'] if server['sslPort'] else server['port']})

        _api_cache = servers
    finally:
      _api_cache_lock.release()

  return _api_cache