synapse-easy 0.1.4 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a34312d9b07a04714706e2df016c4f0b77d698a6
4
- data.tar.gz: da4b8961fdb2f133d6bb33103a0b6e0d629b6137
3
+ metadata.gz: 7c8961a6aaaf5f5a1097995faad093746e0c8296
4
+ data.tar.gz: 72a1da2617782d24d3a55e2e13a6111a8f9fd7b3
5
5
  SHA512:
6
- metadata.gz: 5c6d5321e068b099fa50a622c9a1ce3a44359c0651c7f1e74caff00e63a62c851a9aecb3eba60d855bde07677587c3d8c1edadb58c55444499aea180478c49be
7
- data.tar.gz: a36ff952f0671a07bbc119aa0d9dd98003ef1f06c4c2d3c2b32c35834fede82481da5c4bdf4476948428540ad803e273d89d61681b60879b32f767f0ccac6da6
6
+ metadata.gz: d52cc731e18617759c1e833c8d7d7c9c12fd129fd9309543af62c2989a6c260a1c7f2bf70a225439628db843a91333914da64d9b6b319c9fca2679e8ac7167a8
7
+ data.tar.gz: 5b9b03ddf7efa65b1979ef064fcb10cdb7c0ac398776a9bfbe4e37289c2349001567d1d0addadf1af6c72fa4247591c165a2dbf34e2316b240442373025bbe09
data/lib/synapse/easy.rb CHANGED
@@ -1,3 +1,5 @@
1
1
  require "synapse/easy/version"
2
2
  require "synapse/easy/service"
3
- require "synapse/easy/haproxy"
3
+ require "synapse/easy/haproxy"
4
+ require "synapse/easy/stats_section"
5
+ require "synapse/easy/frontend_section"
@@ -0,0 +1,32 @@
1
+ require "pathname"
2
+ require "active_support/core_ext/hash/indifferent_access"
3
+ require "fake/hash"
4
+
5
+ module Synapse
6
+ module Easy
7
+ class ExtraSection
8
+ include Fake::Hash
9
+ attr_accessor :name, :type, :options
10
+ def initialize params={}
11
+ @name = params[:name]
12
+ @type = params[:type]
13
+ @type ||= "frontend"
14
+ @options ||= []
15
+ end
16
+ def label
17
+ "#{type} #{name}"
18
+ end
19
+ def section_options
20
+ options
21
+ end
22
+ def each *args, &block
23
+ section_options.each(*args,&block)
24
+ end
25
+ def to_synapse
26
+ {
27
+ label => section_options
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,13 @@
1
+ require "synapse/easy/extra_section"
2
+
3
+ module Synapse
4
+ module Easy
5
+ class FrontendSection < ExtraSection
6
+ attr_accessor :name, :type, :options
7
+ def initialize params={}
8
+ super
9
+ @type = "frontend"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -8,17 +8,12 @@ module Synapse
8
8
  module Easy
9
9
  class Haproxy
10
10
  include Fake::Hash
11
- class << self
12
- def instance_id size=3
13
- @instance_id ||= SecureRandom.hex(size)
14
- end
15
- end
16
11
  attr_accessor :reload_command, :do_writes, :do_reloads, :do_socket,
17
12
  :frontends, :socket_file_path, :config_file_path,
18
13
  :pid_file_path, :global_maxconn, :default_maxconn, :nbproc,
19
14
  :default_log, :global_log_server, :global_log_level,
20
15
  :default_retries, :default_log,:default_options,
21
- :default_balance, :default_timeouts
16
+ :default_balance, :default_timeouts, :extra_sections
22
17
  attr_reader :defaults, :global, :workdir
23
18
  def initialize params={}
24
19
  @do_writes ||= true
@@ -52,8 +47,8 @@ module Synapse
52
47
  "server" => 60,
53
48
  }
54
49
  end
55
- def instance_id
56
- self.class.instance_id
50
+ def instance_id size=3
51
+ @instance_id ||= SecureRandom.hex(size)
57
52
  end
58
53
  def workdir= workdir
59
54
  @workdir = workdir if workdir.is_a? Pathname
@@ -10,13 +10,15 @@ module Synapse
10
10
  attr_accessor :port, :mode, :uri, :inter, :rise, :fall, :method, :path,
11
11
  :hosts, :registry, :customer, :application, :function,
12
12
  :extension, :name, :leader_election, :keep_default_servers,
13
- :active
13
+ :active, :enable_backend, :enable_frontend
14
14
  attr_reader :default_servers
15
15
  def initialize params={}
16
16
  @default_servers ||= []
17
17
  @discovery ||= {}
18
18
  @haproxy ||= {}
19
+ @port = params[:port]
19
20
  @port ||= Freeport.port
21
+ @hosts = params[:hosts]
20
22
  @hosts ||= Resolv::Consul.services(:zookeeper).collect{|x|"#{x.address}:#{x.port}"}
21
23
  @mode = params[:mode]
22
24
  @mode ||= :tcp
@@ -44,6 +46,8 @@ module Synapse
44
46
  @name = params[:name]
45
47
  @name ||= [@customer,@application,@function].join("_")
46
48
  @active ||= false
49
+ @enable_frontend = params[:enable_frontend]
50
+ @enable_frontend ||= true if @enable_frontend.nil?
47
51
  end
48
52
  def add_default_server name, port
49
53
  @default_servers << "#{name}:#{port}"
@@ -75,11 +79,11 @@ module Synapse
75
79
  }.with_indifferent_access
76
80
  end
77
81
  def haproxy
78
- {
79
- port: port,
80
- listen: listen,
81
- server_options: server_options,
82
- }.with_indifferent_access
82
+ result = {}.with_indifferent_access
83
+ result[:port] = port if enable_frontend
84
+ result[:listen] = listen
85
+ result[:server_options] = server_options
86
+ result
83
87
  end
84
88
  def server_options
85
89
  "check inter #{inter} rise #{rise} fall #{fall}" if [inter,rise,fall].compact.size == 3
@@ -94,7 +98,7 @@ module Synapse
94
98
  return application => {
95
99
  default_servers:default_servers,
96
100
  discovery: discovery,
97
- haproxy: haproxy
101
+ haproxy: haproxy
98
102
  }
99
103
  end
100
104
  def address
@@ -0,0 +1,56 @@
1
+ require "synapse/easy/extra_section"
2
+ require "socket"
3
+ require "freeport"
4
+
5
+ module Synapse
6
+ module Easy
7
+ class StatsSection < ExtraSection
8
+ attr_accessor :address, :port, :uri, :enabled, :refresh, :realm,
9
+ :hide_version, :username, :password, :scope, :show_node,
10
+ :node
11
+ def initialize params={}
12
+ super
13
+ @address = params[:address]
14
+ @address ||= "localhost"
15
+ @port = params[:port]
16
+ @port ||= Freeport.port
17
+ @uri = params[:uri]
18
+ @uri ||= "/"
19
+ @enabled = params[:enabled]
20
+ @enabled ||= true if @enabled.nil?
21
+ @refresh = params[:refresh]
22
+ @refresh ||= 5
23
+ @realm = params[:realm]
24
+ @realm ||= "HAProxy\\ Stats"
25
+ @hide_version = params[:hide_version]
26
+ @hide_version ||= true if @hide_version.nil?
27
+ @username = params[:username]
28
+ @password = params[:password]
29
+ @scope = params[:scope]
30
+ @show_node = params[:show_node]
31
+ @show_node ||= false if @show_node.nil?
32
+ @node = params[:node]
33
+ @node ||= Socket.gethostname
34
+ end
35
+ def section_options
36
+ @options + [
37
+ "mode http",
38
+ ( "stats enable" if enabled ),
39
+ "stats uri #{uri}",
40
+ "stats refresh #{refresh}",
41
+ "stats realm #{realm}",
42
+ ( "stats hide-version" if hide_version),
43
+ ( "stats auth #{username}:#{password}" if username and password ),
44
+ ( "stats scope #{scope}" if scope ),
45
+ ( "stats show-node #{node}" if show_node ),
46
+ ].compact
47
+ end
48
+ def bind
49
+ [address,port].compact.join(":")
50
+ end
51
+ def label
52
+ "listen stats #{bind}"
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,5 +1,5 @@
1
1
  module Synapse
2
2
  module Easy
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.9"
4
4
  end
5
5
  end
data/synapse-easy.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "synapse-config", "~> 0.1"
21
+ # spec.add_dependency "synapse-config", "~> 0.1"
22
22
  spec.add_dependency "resolv-consul", "~> 0.1"
23
23
  spec.add_dependency "freeport", "~> 0.1"
24
24
  spec.add_dependency "fake-hash", "~> 0.1"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synapse-easy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mathias Kaufmann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-03-30 00:00:00.000000000 Z
11
+ date: 2015-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: synapse-config
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '0.1'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '0.1'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: resolv-consul
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -109,8 +95,11 @@ files:
109
95
  - bin/console
110
96
  - bin/setup
111
97
  - lib/synapse/easy.rb
98
+ - lib/synapse/easy/extra_section.rb
99
+ - lib/synapse/easy/frontend_section.rb
112
100
  - lib/synapse/easy/haproxy.rb
113
101
  - lib/synapse/easy/service.rb
102
+ - lib/synapse/easy/stats_section.rb
114
103
  - lib/synapse/easy/version.rb
115
104
  - synapse-easy.gemspec
116
105
  homepage: http://synapse.stei.gr/easy