odania 0.0.18 → 0.0.19

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2
4
+ - jruby-19mode
5
+ - jruby-head
6
+ - ruby-head
7
+ - ree
8
+ matrix:
9
+ allow_failures:
10
+ - rvm: jruby-19mode
11
+ - rvm: ree
12
+ - rvm: ruby-head
13
+ - rvm: jruby-head
14
+ notifications:
15
+ email: true
16
+ script:
17
+ - bundle exec rake
18
+ addons:
19
+ code_climate:
20
+ repo_token: 5c5ba859225f328f35c67cf8e9d4940272e8304ee980317bd80440ba064621a5
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- odania (0.0.18)
4
+ odania (0.0.19)
5
5
  deep_merge
6
6
  diplomat
7
7
  erubis
@@ -11,6 +11,8 @@ GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
13
  builder (3.2.2)
14
+ codeclimate-test-reporter (0.4.7)
15
+ simplecov (>= 0.7.1, < 1.0.0)
14
16
  coderay (1.1.0)
15
17
  cucumber (2.3.2)
16
18
  builder (>= 2.1.2)
@@ -28,6 +30,7 @@ GEM
28
30
  diplomat (0.15.0)
29
31
  faraday (~> 0.9)
30
32
  json (~> 1.8)
33
+ docile (1.1.5)
31
34
  erubis (2.7.0)
32
35
  faraday (0.9.2)
33
36
  multipart-post (>= 1.2, < 3)
@@ -84,6 +87,11 @@ GEM
84
87
  rspec-support (~> 3.4.0)
85
88
  rspec-support (3.4.1)
86
89
  shellany (0.0.1)
90
+ simplecov (0.10.0)
91
+ docile (~> 1.1.0)
92
+ json (~> 1.8)
93
+ simplecov-html (~> 0.10.0)
94
+ simplecov-html (0.10.0)
87
95
  slop (3.6.0)
88
96
  thor (0.19.1)
89
97
 
@@ -92,6 +100,7 @@ PLATFORMS
92
100
 
93
101
  DEPENDENCIES
94
102
  bundler (~> 1.5)
103
+ codeclimate-test-reporter
95
104
  cucumber
96
105
  guard
97
106
  guard-rspec
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Odania
2
2
 
3
+ [![Build Status](https://travis-ci.org/Odania-IT/odania-gem.png?branch=master)](https://travis-ci.org/Odania-IT/odania-gem)
4
+ [![Code Climate](https://codeclimate.com/github/Odania-IT/odania-gem/badges/gpa.svg)](https://codeclimate.com/github/Odania-IT/odania-gem)
5
+
3
6
  Helper for the Odania Portal
4
7
 
5
8
  ## Installation
@@ -20,6 +23,8 @@ Or install it yourself as:
20
23
 
21
24
  TODO: Write usage instructions here
22
25
 
26
+ This is used for creating several configurations required by Odania Portal.
27
+
23
28
  ## Contributing
24
29
 
25
30
  1. Fork it ( https://github.com/Odania-IT/odania-gem/fork )
data/Rakefile CHANGED
@@ -2,3 +2,5 @@ require 'bundler/gem_tasks'
2
2
  require_relative 'lib/odania'
3
3
 
4
4
  Dir.glob('tasks/**/*.rake').each(&method(:import))
5
+
6
+ task :default => [:spec]
@@ -33,8 +33,8 @@ module Odania
33
33
  self.name = data['name']
34
34
 
35
35
  unless data['backends'].nil?
36
- data['backends'].each do |data|
37
- self.backends << Backend.new.load(data)
36
+ data['backends'].each do |backend_data|
37
+ self.backends << Backend.new.load(backend_data)
38
38
  end
39
39
  end
40
40
  end
@@ -15,7 +15,7 @@ module Odania
15
15
  end
16
16
 
17
17
  # load backends from consul
18
- Odania.plugin.get_all.each_pair do |name, instances|
18
+ Odania.plugin.get_all.each_pair do |_name, instances|
19
19
  instances.each do |instance|
20
20
  add_backend(instance)
21
21
  end
@@ -87,7 +87,7 @@ module Odania
87
87
 
88
88
  # Add config
89
89
  unless config_section.nil?
90
- config_section.each_pair do |key, val|
90
+ config_section.each_pair do |key, _val|
91
91
  unless @config[key].nil?
92
92
  @duplicates.add :config, {key => 'already defined'}, group_name
93
93
  end
@@ -9,7 +9,7 @@ module Odania
9
9
 
10
10
  def assets
11
11
  result = {}
12
- self.layouts.each_pair do |name, layout|
12
+ self.layouts.each_pair do |_name, layout|
13
13
  layout.assets.each_pair do |key, val|
14
14
  result[key] = val
15
15
  end
@@ -20,14 +20,14 @@ module Odania
20
20
  def load(data, group_name)
21
21
  reset
22
22
  unless data['partials'].nil?
23
- data['partials'].each_pair do |name, data|
24
- self.partials[name].load(data)
23
+ data['partials'].each_pair do |name, partial_data|
24
+ self.partials[name].load(partial_data)
25
25
  end
26
26
  end
27
27
 
28
28
  unless data['layouts'].nil?
29
- data['layouts'].each_pair do |name, data|
30
- self.layouts[name].load(data, group_name)
29
+ data['layouts'].each_pair do |name, layout_data|
30
+ self.layouts[name].load(layout_data, group_name)
31
31
  end
32
32
  end
33
33
  end
@@ -0,0 +1,62 @@
1
+ module Odania
2
+ module Config
3
+ class PageBase
4
+ attr_accessor :direct, :dynamic
5
+
6
+ def initialize
7
+ reset
8
+ end
9
+
10
+ def add(data, group_name=nil)
11
+ duplicates = Hash.new { |hash, key| hash[key] = [] }
12
+ unless data['direct'].nil?
13
+ data['direct'].each_pair do |name, direct_data|
14
+ duplicates[:direct] << name if self.direct.key? name
15
+ self.direct[name].load(direct_data, group_name)
16
+ end
17
+ end
18
+
19
+ unless data['dynamic'].nil?
20
+ data['dynamic'].each_pair do |name, dynamic_data|
21
+ duplicates[:dynamic] << name if self.direct.key? name
22
+ self.dynamic[name].load(dynamic_data, group_name)
23
+ end
24
+ end
25
+ duplicates
26
+ end
27
+
28
+ def load(data, group_name)
29
+ self.add(data, group_name)
30
+ end
31
+
32
+ def reset
33
+ self.direct = Hash.new { |hash, key| hash[key] = Page.new }
34
+ self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
35
+
36
+ @plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
37
+ end
38
+
39
+ def [](type)
40
+ return self.direct if 'direct'.eql? type.to_s
41
+ self.dynamic
42
+ end
43
+
44
+ def dump
45
+ direct_data = {}
46
+ direct.each_pair do |web_url, page|
47
+ direct_data[web_url] = page.dump
48
+ end
49
+
50
+ dynamic_data = {}
51
+ dynamic.each_pair do |web_url, page|
52
+ dynamic_data[web_url] = page.dump
53
+ end
54
+
55
+ {
56
+ 'direct' => direct_data,
57
+ 'dynamic' => dynamic_data
58
+ }
59
+ end
60
+ end
61
+ end
62
+ end
@@ -14,8 +14,8 @@ module Odania
14
14
  @plugin_config = data['plugin-config'] unless data['plugin-config'].nil?
15
15
  @default_subdomains = data['default_subdomains'] unless data['default_subdomains'].nil?
16
16
  unless data['domains'].nil?
17
- data['domains'].each_pair do |name, data|
18
- @domains[name].load(data)
17
+ data['domains'].each_pair do |name, domain_data|
18
+ @domains[name].load(domain_data)
19
19
  end
20
20
  end
21
21
 
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
- class Style
4
- attr_accessor :name, :entry_point, :direct, :dynamic, :assets
3
+ class Style < PageBase
4
+ attr_accessor :name, :entry_point, :dynamic, :assets
5
5
 
6
6
  def initialize(name)
7
7
  self.name = name
@@ -13,48 +13,26 @@ module Odania
13
13
  end
14
14
 
15
15
  def dump
16
- direct_data = {}
17
- direct.each_pair do |web_url, page|
18
- direct_data[web_url] = page.dump
19
- end
20
-
21
- dynamic_data = {}
22
- dynamic.each_pair do |web_url, page|
23
- dynamic_data[web_url] = page.dump
24
- end
16
+ result = super
25
17
 
26
18
  asset_data = {}
27
19
  assets.each_pair do |asset_url, page|
28
20
  asset_data[asset_url] = page.dump
29
21
  end
30
22
 
31
- {
32
- 'entry_point' => entry_point,
33
- 'direct' => direct_data,
34
- 'dynamic' => dynamic_data,
35
- 'assets' => asset_data
36
- }
23
+ result['entry_point'] = entry_point
24
+ result['assets'] = asset_data
25
+ result
37
26
  end
38
27
 
39
28
  def load(data, group_name)
40
29
  reset
30
+ super(data, group_name)
41
31
  self.entry_point = data['entry_point'] unless data['entry_point'].nil?
42
32
 
43
- unless data['direct'].nil?
44
- data['direct'].each_pair do |name, data|
45
- self.direct[name].load(data, group_name)
46
- end
47
- end
48
-
49
- unless data['dynamic'].nil?
50
- data['dynamic'].each_pair do |name, data|
51
- self.dynamic[name].load(data, group_name)
52
- end
53
- end
54
-
55
33
  unless data['assets'].nil?
56
- data['assets'].each_pair do |name, data|
57
- self.assets[name].load(data, group_name)
34
+ data['assets'].each_pair do |name, asset_data|
35
+ self.assets[name].load(asset_data, group_name)
58
36
  end
59
37
  end
60
38
  end
@@ -62,11 +40,9 @@ module Odania
62
40
  private
63
41
 
64
42
  def reset
43
+ super
65
44
  self.entry_point = nil
66
- self.direct = Hash.new { |hash, key| hash[key] = Page.new }
67
- self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
68
45
  self.assets = Hash.new { |hash, key| hash[key] = Page.new }
69
- @plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
70
46
  end
71
47
  end
72
48
  end
@@ -1,7 +1,7 @@
1
1
  module Odania
2
2
  module Config
3
- class SubDomain
4
- attr_accessor :name, :config, :direct, :dynamic, :internal, :from_plugin, :redirects
3
+ class SubDomain < PageBase
4
+ attr_accessor :name, :config, :dynamic, :internal, :from_plugin, :redirects
5
5
 
6
6
  def initialize(name)
7
7
  self.name = name
@@ -45,47 +45,24 @@ module Odania
45
45
  end
46
46
 
47
47
  def dump
48
- direct_data = {}
49
- direct.each_pair do |web_url, page|
50
- direct_data[web_url] = page.dump
51
- end
52
-
53
- dynamic_data = {}
54
- dynamic.each_pair do |web_url, page|
55
- dynamic_data[web_url] = page.dump
56
- end
48
+ result = super
57
49
 
58
- {
59
- 'redirects' => self.redirects,
60
- 'config' => self.config,
61
- 'direct' => direct_data,
62
- 'dynamic' => dynamic_data,
63
- 'internal' => self.internal.dump
64
- }
50
+ result['redirects'] = self.redirects
51
+ result['config'] = self.config
52
+ result['internal'] = self.internal.dump
53
+ result
65
54
  end
66
55
 
67
56
  def load(data)
68
57
  reset
58
+ super(data, nil)
69
59
  self.add(data)
70
60
  end
71
61
 
72
62
  def add(data, group_name=nil)
73
- self.config = data['config'] unless data['config'].nil?
74
- duplicates = Hash.new { |hash, key| hash[key] = [] }
63
+ duplicates = super(data, group_name)
75
64
 
76
- unless data['direct'].nil?
77
- data['direct'].each_pair do |name, data|
78
- duplicates[:direct] << name if self.direct.key? name
79
- self.direct[name].load(data, group_name)
80
- end
81
- end
82
-
83
- unless data['dynamic'].nil?
84
- data['dynamic'].each_pair do |name, data|
85
- duplicates[:dynamic] << name if self.direct.key? name
86
- self.dynamic[name].load(data, group_name)
87
- end
88
- end
65
+ self.config = data['config'] unless data['config'].nil?
89
66
 
90
67
  self.internal.load(data['internal'], group_name) unless data['internal'].nil?
91
68
  unless data['redirects'].nil?
@@ -98,21 +75,14 @@ module Odania
98
75
  duplicates
99
76
  end
100
77
 
101
- def [](type)
102
- return self.direct if 'direct'.eql? type.to_s
103
- self.dynamic
104
- end
105
-
106
78
  private
107
79
 
108
80
  def reset
81
+ super
109
82
  self.config = {}
110
83
  self.from_plugin = {:config => Hash.new { |hash, key| hash[key] = [] }}
111
- self.direct = Hash.new { |hash, key| hash[key] = Page.new }
112
- self.dynamic = Hash.new { |hash, key| hash[key] = Page.new }
113
84
  self.redirects = {}
114
85
  self.internal = Internal.new
115
- @plugins = {:direct => Hash.new { |hash, key| hash[key] = [] }, :dynamic => Hash.new { |hash, key| hash[key] = [] }}
116
86
  end
117
87
  end
118
88
  end
data/lib/odania/config.rb CHANGED
@@ -5,6 +5,7 @@ require_relative 'config/layout'
5
5
  require_relative 'config/page'
6
6
  require_relative 'config/plugin_config'
7
7
  require_relative 'config/global_config'
8
+ require_relative 'config/page_base'
8
9
  require_relative 'config/sub_domain'
9
10
  require_relative 'config/style'
10
11
  require_relative 'config/backend'
data/lib/odania/consul.rb CHANGED
@@ -55,7 +55,7 @@ module Odania
55
55
  class Service
56
56
  def get_all
57
57
  services = {}
58
- Diplomat::Service.get_all.each_pair do |key, value|
58
+ Diplomat::Service.get_all.each_pair do |key, _value|
59
59
  services[key.to_s] = get_all_for(key)
60
60
  end
61
61
  puts "SERVICES: #{JSON.pretty_generate services}" if $debug
data/lib/odania/plugin.rb CHANGED
@@ -39,7 +39,7 @@ module Odania
39
39
  plugin_instance_name_file = "#{INSTANCE_FILES_PATH}#{plugin_name}"
40
40
 
41
41
  plugin_instance_name = nil
42
- plugin_instance_name = File.read plugin_instance_name_file if File.exists? plugin_instance_name_file
42
+ plugin_instance_name = File.read plugin_instance_name_file if File.exist? plugin_instance_name_file
43
43
  return plugin_instance_name unless plugin_instance_name.nil?
44
44
 
45
45
  available_instances = @consul.service.get_all_for plugin_name
@@ -1,39 +1,12 @@
1
1
  module Odania
2
- class GenerateSiteAssetsVcl
3
- attr_accessor :domain, :template, :default_subdomains
4
-
5
- def default_subdomain_for(domain)
6
- return self.default_subdomains[domain.name] unless self.default_subdomains[domain.name].nil?
7
- return self.default_subdomains['_general'] unless self.default_subdomains['_general'].nil?
8
- 'www'
9
- end
10
-
11
- def template_url_for(domain, page)
12
- "&domain=#{domain.name}"+
13
- "&plugin_url=#{page.plugin_url.nil? ? '/' : page.plugin_url}"+
14
- "&group_name=#{Odania.varnish_sanitize(page.group_name)}"
15
- end
16
-
17
- def prepare_url(url)
18
- return "/#{url}" unless '/'.eql? url[0]
19
- url
20
- end
21
-
22
- def general_subdomain
23
- self.domain['_general']
24
- end
2
+ class GenerateSiteAssetsVcl < GenerateSiteVcl
25
3
 
26
4
  def initialize(domain, default_subdomains)
27
- self.domain = domain
28
- self.default_subdomains = default_subdomains
5
+ super(domain, default_subdomains)
29
6
  self.template = File.new("#{BASE_DIR}/templates/varnish/site_assets.vcl.erb").read
30
7
  self.template = File.new("#{BASE_DIR}/templates/varnish/general_site_assets.vcl.erb").read if '_general'.eql? domain.name
31
8
  end
32
9
 
33
- def render
34
- Erubis::Eruby.new(self.template).result(binding)
35
- end
36
-
37
10
  def write(out_dir)
38
11
  File.write("#{out_dir}/sites/#{self.domain.name}_assets.vcl", self.render)
39
12
  end
@@ -52,7 +52,7 @@ module Odania
52
52
  def reload_config
53
53
  puts 'Updating varnish config'
54
54
  current_number = 0
55
- current_number = File.read('/tmp/current_varnish_config_number').to_i if File.exists? '/tmp/current_varnish_config_number'
55
+ current_number = File.read('/tmp/current_varnish_config_number').to_i if File.exist? '/tmp/current_varnish_config_number'
56
56
  current_number += 1
57
57
  File.write '/tmp/current_varnish_config_number', current_number
58
58
 
@@ -1,3 +1,3 @@
1
1
  module Odania
2
- VERSION = '0.0.18'
2
+ VERSION = '0.0.19'
3
3
  end
data/lib/odania.rb CHANGED
@@ -10,7 +10,7 @@ require 'socket'
10
10
 
11
11
  BASE_DIR = File.absolute_path File.join File.dirname(__FILE__), '..'
12
12
  ENVIRONMENT = ENV['ENVIRONMENT'].nil? ? 'development' : ENV['ENVIRONMENT']
13
- LOCAL_TEST_MODE = 'development'.eql?(ENVIRONMENT)
13
+ LOCAL_TEST_MODE = 'development'.eql?(ENVIRONMENT) unless defined? LOCAL_TEST_MODE
14
14
 
15
15
  module Odania
16
16
  CORE_PLUGIN_NAME = 'odania-core'
data/odania.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency 'cucumber'
25
25
  spec.add_development_dependency 'guard'
26
26
  spec.add_development_dependency 'guard-rspec'
27
+ spec.add_development_dependency 'codeclimate-test-reporter'
27
28
 
28
29
  spec.add_dependency 'diplomat'
29
30
  spec.add_dependency 'erubis'
@@ -45,12 +45,14 @@
45
45
  "cacheable": true,
46
46
  "expires": 60
47
47
  }
48
- }
48
+ },
49
+ "assets": {}
49
50
  },
50
51
  "left_menu": {
51
52
  "entry_point": "application.html.erb",
52
53
  "direct": {},
53
- "dynamic": {}
54
+ "dynamic": {},
55
+ "assets": {}
54
56
  }
55
57
  }
56
58
  }
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  ENV['ENVIRONMENT'] = 'test'
2
2
 
3
+ require 'codeclimate-test-reporter'
4
+ CodeClimate::TestReporter.start
5
+
3
6
  require 'odania'
4
7
  require_relative 'support/consul_mock'
5
8
 
@@ -8,7 +11,6 @@ RSpec.configure do |config|
8
11
  config.before(:each) do
9
12
  $consul_mock = ConsulMock.new
10
13
 
11
-
12
14
  allow(Odania).to receive(:plugin) do
13
15
  Odania::Plugin.new($consul_mock)
14
16
  end
@@ -105,8 +105,15 @@ class ConsulMock < Odania::Consul
105
105
  end
106
106
 
107
107
  class Health
108
+ def initialize
109
+ @health_states = [
110
+ {'Node' => '04977bad2036', 'CheckID' => 'serfHealth', 'Name' => 'Serf Health Status', 'Status' => 'passing', 'Notes' => '', 'Output' => 'Agent alive and reachable', 'ServiceID' => '', 'ServiceName' => ''},
111
+ {'Node' => '04977bad2036', 'CheckID' => 'service_1', 'Name' => "Service 'static-content' check", 'Status' => 'passing', 'Notes' => '', 'Output' => 'HTTP GET http://172.17.0.4:80/health: 200 OK Output: OK', 'ServiceID' => 'static_content_1', 'ServiceName' => 'static-content'}
112
+ ]
113
+ end
114
+
108
115
  def state(state=:any)
109
- Diplomat::Health.state(state)
116
+ @health_states
110
117
  end
111
118
 
112
119
  def service(name)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odania
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Petersen
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: codeclimate-test-reporter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: diplomat
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +171,11 @@ executables: []
157
171
  extensions: []
158
172
  extra_rdoc_files: []
159
173
  files:
174
+ - ".codeclimate.yml"
160
175
  - ".gitignore"
176
+ - ".rspec"
177
+ - ".rubocop.yml"
178
+ - ".travis.yml"
161
179
  - Gemfile
162
180
  - Gemfile.lock
163
181
  - Guardfile
@@ -180,12 +198,12 @@ files:
180
198
  - lib/odania/config/internal.rb
181
199
  - lib/odania/config/layout.rb
182
200
  - lib/odania/config/page.rb
201
+ - lib/odania/config/page_base.rb
183
202
  - lib/odania/config/plugin_config.rb
184
203
  - lib/odania/config/style.rb
185
204
  - lib/odania/config/sub_domain.rb
186
205
  - lib/odania/consul.rb
187
206
  - lib/odania/plugin.rb
188
- - lib/odania/plugin_config/base.rb
189
207
  - lib/odania/varnish.rb
190
208
  - lib/odania/varnish/generators/generate_backend_vcl.rb
191
209
  - lib/odania/varnish/generators/generate_catch_all_vcl.rb