Sha256: 01ef85edfd8e1e92f2f2b2dcd9e798ad937071126b15e526411f94ccb9b93b47

Contents?: true

Size: 1.08 KB

Versions: 2

Compression:

Stored size: 1.08 KB

Contents

require 'singleton'

class ClusterConfig
  include Singleton

  def scanned_client
    $mongo_client ||= initialize_scanned_client!
  end

  def single_server?
    scanned_client.cluster.servers.length == 1
  end

  def server!
    server = scanned_client.cluster.servers.first
    if server.nil?
      raise ScannedClientHasNoServers
    end
    server
  end

  def mongos?
    server!.mongos?
  end

  def replica_set_name
    @replica_set_name ||= server!.replica_set_name
  end

  def server_version
    client = ClientRegistry.instance.global_client('authorized')
    @server_version ||= client.database.command(buildInfo: 1).first['version']
  end

  def short_server_version
    server_version.split('.')[0..1].join('.')
  end

  def primary_address
    @primary_address ||= begin
      client = ClientRegistry.instance.global_client('authorized')
      if client.cluster.topology.is_a?(Mongo::Cluster::Topology::ReplicaSetWithPrimary)
        client.cluster.servers.detect { |server| server.primary? }.address
      else
        client.cluster.servers.first.address
      end.seed
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mongo-2.7.0 spec/support/cluster_config.rb
mongo-2.7.0.rc0 spec/support/cluster_config.rb