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.
- checksums.yaml +7 -0
- data/lib/cncflora_commons.rb +64 -11
- 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
|
data/lib/cncflora_commons.rb
CHANGED
@@ -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
|
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 "
|
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
|
-
|
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.
|
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:
|
55
|
+
rubygems_version: 2.2.2
|
60
56
|
signing_key:
|
61
|
-
specification_version:
|
57
|
+
specification_version: 4
|
62
58
|
summary: CNCFlora common functions
|
63
59
|
test_files: []
|