odania 0.0.18 → 0.0.19

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.
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