Module: Boutons

Defined in:
lib/boutons.rb,
lib/boutons/uri.rb,
lib/boutons/config.rb,
lib/boutons/version.rb,
lib/boutons/resource.rb,
lib/boutons/event_sniffer.rb

Defined Under Namespace

Classes: Config, EventSniffer, MissingSynapse, Resource, URI, UnknownSynapse

Constant Summary collapse

VERSION =
"0.5.0"

Class Method Summary collapse

Class Method Details

.add(synapse) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/boutons.rb', line 19

def add synapse
  return services[synapse.name] if services[synapse.name]
  services[synapse.name] = synapse
  start
  update
  synapse.check
  synapse
end

.allObject



80
81
82
# File 'lib/boutons.rb', line 80

def all
  services
end

.availableObject



86
87
88
# File 'lib/boutons.rb', line 86

def available
  Boutons::Config.services.keys.map{|k|k.to_s} rescue []
end

.connectable?(service) ⇒ Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/boutons.rb', line 83

def connectable? service
  available.include?(service.to_s) rescue false
end

.emit(event) ⇒ Object



45
46
47
48
49
50
51
52
# File 'lib/boutons.rb', line 45

def emit event
  @callbacks ||= {}
  @callbacks[event] ||= []
  return if @callbacks[event].empty?
  @callbacks[event].each do |callback|
    callback.call
  end
end

.haproxyObject



77
78
79
# File 'lib/boutons.rb', line 77

def haproxy
  @@haproxy ||= Synapse::Config::Haproxy.new Synapse::Easy::Haproxy.new
end

.log_with(logger, synapses: nil) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/boutons.rb', line 63

def log_with logger, synapses:nil
  logger.info "Replace logger #{logger} with #{logger}"
  logger=logger
  synapse.logger=logger
  return unless synapses
  if synapses.to_sym == :all
    return synapse.service_watchers.map{|s|s.logger=logger}
  end
  synapse.service_watchers.each do |services_watcher|
    if synapses==services_watcher.name
      services_watcher.logger = logger
    end
  end
end

.notify(event, callback) ⇒ Object



40
41
42
43
44
# File 'lib/boutons.rb', line 40

def notify event, callback
  @callbacks ||= {}
  @callbacks[event] ||= []
  @callbacks[event] << callback
end

.provide(service, service_uri) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/boutons.rb', line 27

def provide service, service_uri
  return services[service.to_sym] if services[service.to_sym]
  uri = Boutons::URI.new service_uri
  params = {}
  params[:application] = uri.host
  params[:mode]        = uri.mode
  params[:uri]         = uri.check_uri
  params[:method]      = uri.registry.method
  params[:path]        = uri.registry.zk_path
  params[:hosts]       = uri.registry.zk_hosts
  params[:name]        = service.to_sym
  add Synapse::Easy::Service.new params
end

.remove(name) ⇒ Object



53
54
55
56
57
# File 'lib/boutons.rb', line 53

def remove name
  services[mapping[name]] = nil
  start
  update
end

.with_loggersObject



58
59
60
61
62
# File 'lib/boutons.rb', line 58

def with_loggers
  synapse.service_watchers.collect{|s|s.logger}+[logger,synapse.logger].each do |logger|
    yield(logger) if block_given?
  end
end