yaml_servers 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7160ed4f67167f19c574026d4edda401020fe383
4
- data.tar.gz: d576649e0f3d99bb56ab7c1f8c67d1a6e9021493
3
+ metadata.gz: fd7967a0f1a84e7a0ed89ca103877cf97fc66a61
4
+ data.tar.gz: 9e10522b27b66f4167822e21a235629a568252e4
5
5
  SHA512:
6
- metadata.gz: 28a0bbfc66281a03ff397224d57746394174e52ac9c6a467d92818830513bb6fa4ec51bc1af6358dbcff710408996e96c2f3057aabaac4837a77d221046d1544
7
- data.tar.gz: b6a7c1267140ad6941d5ae4390eddd2635a61b4d28384808e3e1bc54a6ef385455df9a3ae77d22345103712c178d1193f19fa70e7c342e4dd3e2693e893a1512
6
+ metadata.gz: ea6173137d255e5e3eef6fb5d6a114eefb5e83148987a4b6dda75b9e6df9933cfec4bbd5d1416b39c57b26ab0008050e9fa0f85c3ae04ac2ef8cc2687222170f
7
+ data.tar.gz: 9dca87bef75696ac73a7c401f289cccd835252e90992a17e6b054b612d5e84ddd982f4fd91d3c6b099c561b056ab86e0a2e1d95492cbc8da7ded8991d5f8977f
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.gem
data/Gemfile CHANGED
@@ -1,5 +1,10 @@
1
1
  source "https://rubygems.org"
2
- source 'https://gems.reporo.com'
3
2
 
4
- # Specify your gem's dependencies in yaml_servers.gemspec
5
- gemspec
3
+ # Vagrant's special group
4
+ group :plugins do
5
+ gemspec
6
+ end
7
+
8
+ group :development do
9
+ gem "vagrant", git: "https://github.com/mitchellh/vagrant.git"
10
+ end
data/README.md CHANGED
@@ -32,5 +32,5 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
32
 
33
33
  ## Contributing
34
34
 
35
- Bug reports and pull requests are welcome on Gitlab at https://gitlab.london.reporo.net/robb/yaml_servers.
35
+ Bug reports and pull requests are welcome on Github at https://github.com/robmbrooks/yaml_servers.
36
36
 
data/Rakefile CHANGED
@@ -1,13 +1,3 @@
1
- require "bundler/gem_tasks"
2
-
3
- # Don't push the gem to rubygems
4
- ENV["gem_push"] = "false" # Utilizes feature in bundler 1.3.0
5
-
6
- # Let bundler's release task do its job, minus the push to Rubygems,
7
- # and after it completes, use "gem inabox" to publish the gem to our
8
- # internal gem server.
9
-
10
- Rake::Task["release"].enhance do
11
- spec = Gem::Specification::load(Dir.glob("*.gemspec").first)
12
- sh "gem inabox pkg/#{spec.name}-#{spec.version}.gem"
13
- end
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,18 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ module YamlServers
5
+ class Command < Vagrant.plugin('2', :command)
6
+
7
+ def execute
8
+ config = @env.config_loader.load([:default, :home, :root])[0]
9
+ yaml_servers = { "servers" => config.yamlservers.servers }
10
+ @env.ui.info yaml_servers.to_yaml
11
+ 0
12
+ end
13
+
14
+ def self.synopsis
15
+ 'show rendered yaml config'
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module YamlServers
2
+ class Config < Vagrant.plugin('2', :config)
3
+ attr_accessor :servers
4
+
5
+ def initialize
6
+ @servers = { }
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ module YamlServers
5
+ class Plugin < Vagrant.plugin('2')
6
+ name "YamlServers"
7
+
8
+ command 'yaml-config' do
9
+ require_relative 'command'
10
+ Command
11
+ end
12
+
13
+ config 'yamlservers' do
14
+ require_relative 'config'
15
+ Config
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,111 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ module YamlServers
5
+ class ReadYaml
6
+
7
+ def self.apply_defaults(config, defaults)
8
+ # merge defaults
9
+ config = defaults.deep_merge(config)
10
+
11
+ # apply defaults to each server
12
+ servers = {}
13
+ config["servers"].each { |hostname, server|
14
+ servers[hostname] = config["default"].deep_merge(server.is_a?(Hash) ? server : { })
15
+ servers[hostname]["is_primary"] = (hostname == config["primary"])
16
+ if servers[hostname].key?("ip") then
17
+ begin
18
+ servers[hostname]["ip"] = Resolv.new.getaddresses(server["ip"])[0]
19
+ rescue => err
20
+ STDERR.puts err
21
+ servers[hostname]["ip"] = server["ip"]
22
+ end
23
+ end
24
+ servers[hostname]["nfshome"] = File.expand_path(servers[hostname]["nfshome"]) if servers[hostname]["nfshome"]
25
+ servers[hostname]["inline"] = servers[hostname]["inline"].lines.to_a if servers[hostname]["inline"].is_a?(String)
26
+ } if config.key?("servers")
27
+
28
+ return servers
29
+ end
30
+
31
+ def self.get_yaml(file, missing_ok)
32
+ if missing_ok then
33
+ return {} unless File.file?(file)
34
+ end
35
+
36
+ begin
37
+ yaml = YAML::load(File.read(file))
38
+ rescue => err
39
+ STDERR.puts "Warning: #{file} not available"
40
+ STDERR.puts err
41
+ end
42
+
43
+ # if our config is not a hash we assume it is a list of servers
44
+ if yaml and !yaml.is_a?(Hash) then
45
+ begin
46
+ return { "servers" => Hash[yaml.to_a.map {|server| server.is_a?(Hash) ? server.flatten : [server.to_str,nil]}] }
47
+ rescue => err
48
+ STDERR.puts err
49
+ return {}
50
+ end
51
+ elsif yaml.is_a?(Hash) and !yaml.key?("servers") and !missing_ok
52
+ yaml = { "servers" => yaml }
53
+ end
54
+ return yaml ? yaml : {}
55
+ end
56
+
57
+ def self.get_config(path, defaults = {}, yaml_configs = [], localconf = "local.yaml")
58
+ # get data from local.yaml
59
+ local_config = get_yaml(File.join(path,localconf),true)
60
+
61
+ # get additional configs set as include in local config
62
+ yaml_configs = yaml_configs | (local_config.key?("include") ? local_config["include"] : [])
63
+
64
+ # collect servers from each yaml file applying defaults
65
+ servers = {}
66
+ config = {}
67
+ yaml_configs.each do |yaml|
68
+ config = get_yaml(File.join(path,yaml),false)
69
+
70
+ # merge localconf defaults over top of lower precedence defaults
71
+ config = config.deep_merge(local_config.reject { |key| key == "servers"} )
72
+
73
+ # get servers from config
74
+ servers.merge!(apply_defaults(config, defaults))
75
+ end
76
+
77
+ # build new config hash with servers collected above and local config applied
78
+ config = { "servers" => servers, "primary" => config["primary"] }
79
+ config = defaults.deep_merge(config)
80
+ config = config.deep_merge(local_config)
81
+
82
+ # we need at least one server
83
+ config["servers"] = { "default" => nil } unless config.key?("servers")
84
+
85
+ # final rendering
86
+ return apply_defaults(config, defaults)
87
+ end
88
+
89
+ def self.get_provider_opt(default = false)
90
+ opts = GetoptLong.new(
91
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
92
+ [ '--provider', GetoptLong::OPTIONAL_ARGUMENT ]
93
+ )
94
+ opts.quiet = true
95
+
96
+ provider = default
97
+ begin
98
+ opts.each do |opt, arg|
99
+ case opt
100
+ when '--provider'
101
+ if arg
102
+ provider=arg
103
+ end
104
+ end
105
+ end
106
+ rescue => err
107
+ end
108
+ return provider
109
+ end
110
+ end
111
+ end
@@ -1,3 +1,3 @@
1
1
  module YamlServers
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
data/lib/yaml_servers.rb CHANGED
@@ -1,115 +1,19 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
3
 
4
+ begin
5
+ require 'vagrant'
6
+ rescue LoadError
7
+ raise 'The Vagrant yaml_servers plugin must be run within Vagrant.'
8
+ end
9
+
4
10
  require 'active_support'
5
11
  require 'active_support/core_ext'
6
12
  require 'getoptlong'
7
13
  require 'resolv'
8
14
  require 'yaml'
15
+ require "yaml_servers/command"
16
+ require "yaml_servers/config"
17
+ require "yaml_servers/plugin"
18
+ require "yaml_servers/read_yaml"
9
19
  require "yaml_servers/version"
10
-
11
- module YamlServers
12
- def self.apply_defaults(config, defaults)
13
- # merge defaults
14
- config = defaults.deep_merge(config)
15
-
16
- # apply defaults to each server
17
- servers = {}
18
- config["servers"].each { |hostname, server|
19
- servers[hostname] = config["default"].deep_merge(server.is_a?(Hash) ? server : { })
20
- servers[hostname]["is_primary"] = (hostname == config["primary"])
21
- if servers[hostname].key?("ip") then
22
- begin
23
- servers[hostname]["ip"] = Resolv.new.getaddresses(server["ip"])[0]
24
- rescue => err
25
- STDERR.puts err
26
- servers[hostname]["ip"] = server["ip"]
27
- end
28
- end
29
- servers[hostname]["nfshome"] = File.expand_path(servers[hostname]["nfshome"]) if servers[hostname]["nfshome"]
30
- servers[hostname]["inline"] = servers[hostname]["inline"].lines.to_a if servers[hostname]["inline"].is_a?(String)
31
- } if config.key?("servers")
32
-
33
- return servers
34
- end
35
-
36
- def self.get_yaml(file, missing_ok)
37
- if missing_ok then
38
- return {} unless File.file?(file)
39
- end
40
-
41
- begin
42
- yaml = YAML::load(File.read(file))
43
- rescue => err
44
- STDERR.puts "Warning: #{file} not available"
45
- STDERR.puts err
46
- end
47
-
48
- # if our config is not a hash we assume it is a list of servers
49
- if yaml and !yaml.is_a?(Hash) then
50
- begin
51
- return { "servers" => Hash[yaml.to_a.map {|server| server.is_a?(Hash) ? server.flatten : [server.to_str,nil]}] }
52
- rescue => err
53
- STDERR.puts err
54
- return {}
55
- end
56
- elsif yaml.is_a?(Hash) and !yaml.key?("servers") and !missing_ok
57
- yaml = { "servers" => yaml }
58
- end
59
- return yaml ? yaml : {}
60
- end
61
-
62
- def self.get_config(path, defaults = {}, yaml_configs = [], localconf = "local.yaml")
63
- # get data from local.yaml
64
- local_config = get_yaml(File.join(path,localconf),true)
65
-
66
- # get additional configs set as include in local config
67
- yaml_configs = yaml_configs | (local_config.key?("include") ? local_config["include"] : [])
68
-
69
- # collect servers from each yaml file applying defaults
70
- servers = {}
71
- config = {}
72
- yaml_configs.each do |yaml|
73
- config = get_yaml(File.join(path,yaml),false)
74
-
75
- # merge localconf defaults over top of lower precedence defaults
76
- config = config.deep_merge(local_config.reject { |key| key == "servers"} )
77
-
78
- # get servers from config
79
- servers.merge!(apply_defaults(config, defaults))
80
- end
81
-
82
- # build new config hash with servers collected above and local config applied
83
- config = { "servers" => servers, "primary" => config["primary"] }
84
- config = defaults.deep_merge(config)
85
- config = config.deep_merge(local_config)
86
-
87
- # we need at least one server
88
- config["servers"] = { "default" => nil } unless config.key?("servers")
89
-
90
- # final rendering
91
- return apply_defaults(config, defaults)
92
- end
93
-
94
- def self.get_provider_opt(default = false)
95
- opts = GetoptLong.new(
96
- [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
97
- [ '--provider', GetoptLong::OPTIONAL_ARGUMENT ]
98
- )
99
- opts.quiet = true
100
-
101
- provider = default
102
- begin
103
- opts.each do |opt, arg|
104
- case opt
105
- when '--provider'
106
- if arg
107
- provider=arg
108
- end
109
- end
110
- end
111
- rescue => err
112
- end
113
- return provider
114
- end
115
- end
data/yaml_servers.gemspec CHANGED
@@ -7,20 +7,11 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "yaml_servers"
8
8
  spec.version = YamlServers::VERSION
9
9
  spec.authors = ["Robert Brooks"]
10
- spec.email = ["robert.brooks@reporo.com"]
10
+ spec.email = ["robmbrooks@gmail.com"]
11
11
 
12
12
  spec.summary = %q{yaml_servers creates a hash of server configs from yaml}
13
13
  spec.description = %q{yaml_servers creates a hash of server config from yaml}
14
14
  spec.homepage = "https://github.com/robmbrooks/yaml_servers"
15
-
16
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
- # delete this section to allow pushing this gem to any host.
18
- # if spec.respond_to?(:metadata)
19
- # spec.metadata['allowed_push_host'] = "http://gems.reporo.com"
20
- # else
21
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
- # end
23
-
24
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
16
  spec.bindir = "exe"
26
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -30,5 +21,4 @@ Gem::Specification.new do |spec|
30
21
 
31
22
  spec.add_development_dependency "bundler", "~> 1.10"
32
23
  spec.add_development_dependency "rake", "~> 10.0"
33
- spec.add_development_dependency "geminabox"
34
24
  end
metadata CHANGED
@@ -1,91 +1,81 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml_servers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Brooks
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-21 00:00:00.000000000 Z
11
+ date: 2017-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.2'
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 4.2.6
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ~>
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
29
  version: '4.2'
30
- - - '>='
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 4.2.6
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '1.10'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ~>
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.10'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rake
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ~>
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '10.0'
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ~>
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '10.0'
61
- - !ruby/object:Gem::Dependency
62
- name: geminabox
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - '>='
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
- type: :development
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - '>='
73
- - !ruby/object:Gem::Version
74
- version: '0'
75
61
  description: yaml_servers creates a hash of server config from yaml
76
62
  email:
77
- - robert.brooks@reporo.com
63
+ - robmbrooks@gmail.com
78
64
  executables: []
79
65
  extensions: []
80
66
  extra_rdoc_files: []
81
67
  files:
82
- - .gitignore
68
+ - ".gitignore"
83
69
  - Gemfile
84
70
  - README.md
85
71
  - Rakefile
86
72
  - bin/console
87
73
  - bin/setup
88
74
  - lib/yaml_servers.rb
75
+ - lib/yaml_servers/command.rb
76
+ - lib/yaml_servers/config.rb
77
+ - lib/yaml_servers/plugin.rb
78
+ - lib/yaml_servers/read_yaml.rb
89
79
  - lib/yaml_servers/version.rb
90
80
  - yaml_servers.gemspec
91
81
  homepage: https://github.com/robmbrooks/yaml_servers
@@ -97,19 +87,18 @@ require_paths:
97
87
  - lib
98
88
  required_ruby_version: !ruby/object:Gem::Requirement
99
89
  requirements:
100
- - - '>='
90
+ - - ">="
101
91
  - !ruby/object:Gem::Version
102
92
  version: '0'
103
93
  required_rubygems_version: !ruby/object:Gem::Requirement
104
94
  requirements:
105
- - - '>='
95
+ - - ">="
106
96
  - !ruby/object:Gem::Version
107
97
  version: '0'
108
98
  requirements: []
109
99
  rubyforge_project:
110
- rubygems_version: 2.0.14.1
100
+ rubygems_version: 2.6.8
111
101
  signing_key:
112
102
  specification_version: 4
113
103
  summary: yaml_servers creates a hash of server configs from yaml
114
104
  test_files: []
115
- has_rdoc: