Sha256: 9a9c35cb3bc4632c271138148039cdc409792063464b2a9c42a19b3710d3dc76
Contents?: true
Size: 928 Bytes
Versions: 2
Compression:
Stored size: 928 Bytes
Contents
require 'csv' module LitmusPaper module Dependency class HaproxyBackends def initialize(domain_socket, cluster) @domain_socket = domain_socket @cluster = cluster end def available? stats = _parse_stats(_fetch_stats) servers = _servers_in(stats, @cluster) available = servers.select { |s| s['status'] == "UP" } available.size > 0 end def _servers_in(stats, cluster) stats.select do |line| line['# pxname'] == cluster && !["FRONTEND", "BACKEND"].include?(line["svname"]) end end def _parse_stats(csv) stats = CSV.parse(csv) headers = stats.shift stats.map { |stat| Hash[headers.zip(stat)] } end def _fetch_stats UNIXSocket.open(@domain_socket) do |socket| socket.send "show stat\n", 0 socket.read end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
litmus_paper-0.3.1 | lib/litmus_paper/dependency/haproxy_backends.rb |
litmus_paper-0.3.0 | lib/litmus_paper/dependency/haproxy_backends.rb |