cncflora_commons 0.0.32 → 0.0.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cncflora_commons.rb +64 -11
  3. metadata +8 -12
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2170497a7b3986d289ca11640f750a2573254acc
4
+ data.tar.gz: 4ac865a95f66b787a4240fb7eb0ffd9571d2b9fb
5
+ SHA512:
6
+ metadata.gz: 635c7edd9067fb5901614d2594ce94787d3dd4922621a22a2a9982d15d1890c23a24758c2b07cddbb3675224396b312a35279bd3656c10d0bddb8df2725d8f27
7
+ data.tar.gz: 5428554cdb062d5f4540f9f684056b336ab528b86bb5bad83e3d8b2c26aaa2aba13a6c6484ce61a44efd0180d3ddea350ebc976843ef68db2ff94ac2cb8c651b
@@ -77,25 +77,36 @@ end
77
77
  def setup(file)
78
78
  #config_file file
79
79
 
80
- config = YAML.load_file(file)[ENV['RACK_ENV'] || 'development']
80
+ @config = YAML.load_file(file)[ENV['RACK_ENV'] || 'development']
81
+
82
+ if @config["etcd"] || ENV["ETCD"] then
83
+ etcd_cfg = etcd2config(@config["etcd"] || ENV["ETCD"])
84
+ onchange(@config["etcd"] || ENV["ETCD"]) do |newconfig|
85
+ newconfig.each {|k,v| @config[k] = v }
86
+ if defined? settings then
87
+ newconfig.each {|k,v| set k.to_sym,v }
88
+ end
89
+ end
90
+ etcd_cfg.each {|k,v| @config[k] = v }
91
+ end
81
92
 
82
- config.each {|ck,cv|
93
+ @config.each {|ck,cv|
83
94
  ENV.each {|ek,ev|
84
95
  if cv =~ /\$#{ek}/ then
85
- config[ck] = cv.gsub(/\$#{ek}/,ev)
96
+ @config[ck] = cv.gsub(/\$#{ek}/,ev)
86
97
  end
87
98
  }
88
99
  }
89
100
 
90
- ENV.each {|k,v| config[k]=v }
101
+ ENV.each {|k,v| @config[k]=v }
91
102
 
92
- if config["lang"] then
93
- config["strings"] = JSON.parse(File.read("src/locales/#{config["lang"]}.json", :encoding => "BINARY"))
103
+ if @config["lang"] then
104
+ @config["strings"] = JSON.parse(File.read("src/locales/#{@config["lang"]}.json", :encoding => "BINARY"))
94
105
  end
95
106
 
96
107
  if defined? settings then
97
- config.each {|k,v| set k.to_sym,v }
98
- set :config, config
108
+ @config.each {|k,v| set k.to_sym,v }
109
+ set :@config, @config
99
110
 
100
111
  use Rack::Session::Pool
101
112
 
@@ -103,9 +114,51 @@ def setup(file)
103
114
  set :views, 'src/views'
104
115
  end
105
116
 
106
- puts "Config loaded"
107
- puts config
117
+ puts "@config loaded"
118
+ puts @config
119
+
120
+ @config
121
+ end
122
+
123
+ def flatten(obj)
124
+ flat = {}
125
+ if obj["dir"] && obj["nodes"] then
126
+ obj["nodes"].each { |n|
127
+ flat = flat.merge(flatten(n))
128
+ }
129
+ else
130
+ key = obj["key"].gsub("/","_").gsub("-","_")
131
+ flat[key[1..key.length]]=obj["value"]
132
+ end
133
+ flat
134
+ end
108
135
 
109
- config
136
+ def etcd2config(server)
137
+ cfg = flatten( http_get("#{server}/v2/keys/?recursive=true")["node"] )
138
+ to_add={}
139
+ cfg.each {|k,v|
140
+ if k.match(/_port$/) then
141
+ name = /(\w+)_port/.match(k).captures[0]
142
+ ip = cfg["#{name}_networksettings_ipaddress"]
143
+ port = 80
144
+ cfg.each {|kk,vv|
145
+ if /^#{name}_networksettings/.match(kk) && vv == v then
146
+ port = /ports_(\d+)_tcp/.match(kk).captures[0]
147
+ end
148
+ }
149
+ to_add[name] = "http://#{ip}:#{port}"
150
+ end
151
+ }
152
+ to_add.each{|k,v| cfg[k]=v}
153
+ cfg
110
154
  end
111
155
 
156
+ def onchange(etcd)
157
+ Thread.new do
158
+ while true do
159
+ a = http_get("#{etcd}/v2/keys/?recursive=true&wait=true")
160
+ puts "etcd updated"
161
+ yield etcd2config(etcd)
162
+ end
163
+ end
164
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cncflora_commons
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.32
5
- prerelease:
4
+ version: 0.0.33
6
5
  platform: ruby
7
6
  authors:
8
7
  - Diogo Silva
@@ -15,17 +14,15 @@ dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rspec
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - ">="
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - ">="
29
26
  - !ruby/object:Gem::Version
30
27
  version: '0'
31
28
  description: HTTP, etcd...
@@ -38,26 +35,25 @@ files:
38
35
  homepage: https://github.com/CNCFlora/cncflora-commons
39
36
  licenses:
40
37
  - Apache License 2.0
38
+ metadata: {}
41
39
  post_install_message:
42
40
  rdoc_options: []
43
41
  require_paths:
44
42
  - lib
45
43
  required_ruby_version: !ruby/object:Gem::Requirement
46
- none: false
47
44
  requirements:
48
- - - ! '>='
45
+ - - ">="
49
46
  - !ruby/object:Gem::Version
50
47
  version: '0'
51
48
  required_rubygems_version: !ruby/object:Gem::Requirement
52
- none: false
53
49
  requirements:
54
- - - ! '>='
50
+ - - ">="
55
51
  - !ruby/object:Gem::Version
56
52
  version: '0'
57
53
  requirements: []
58
54
  rubyforge_project:
59
- rubygems_version: 1.8.23
55
+ rubygems_version: 2.2.2
60
56
  signing_key:
61
- specification_version: 3
57
+ specification_version: 4
62
58
  summary: CNCFlora common functions
63
59
  test_files: []