yaml_servers 0.1.8 → 0.1.9

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