cncflora_commons 0.0.32 → 0.0.33
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 +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: []
|