stacksondeck 1.1.4 → 1.2.0

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: f52d638d4e7a905255a9ab7cba68a1e1cfb162a2
4
- data.tar.gz: 209b9b6c7c730478762f35a434f661dc03e90034
3
+ metadata.gz: 15986bb862a807230480fa8c0ce5fcc356739f17
4
+ data.tar.gz: d8489c25579af8b858444691e038dd7de9506241
5
5
  SHA512:
6
- metadata.gz: 0cd2dd2d4a3e1f20df7da5138bb2522388733e9502c4f38bad01c49a649d6992e5b4b17ace08e1b1be907906c091c5296894dd46bf079e5528a77097d76261c8
7
- data.tar.gz: 4c52a05ea6121b3d00c9c1a98f1fc5a5ca224bf61057b6b02d7dd1018684964389396400b9a2c614f2e254abd90e68fbd8ac89d7aedcdd57dccf2b9af230b1be
6
+ metadata.gz: e56c4f63a984b02ecc2a51756762a7f7eeedc3e96b5a27eb25ede66aaa054f203941023507cf6ceff4889f7a95659ae2f3f0d8ddf05603850f59e4d21934a3fb
7
+ data.tar.gz: 3176dd765e2447b7c113013920c6111a3490ce87d71053d737030945a78d3729b7d530b5047b2ec6c114903b848b72a2c4fbc3f253e9bf47406bd0235b052b5b
data/Readme.md CHANGED
@@ -9,9 +9,8 @@ for a configurable amount of time (`--refresh`). You may also wish to override
9
9
  the Rundeck user name to suit your environment (`--username`).
10
10
 
11
11
  SOD merges a Chef node's environments, roles, and tags into Rundeck tags. This
12
- behavior is not currently configurable, but you may use the `--tagfile` feature
13
- (introduced in v1.1.3) to map node names to a list of additional tags, which
14
- will be merged with the information discovered via Chef Search.
12
+ behavior is not currently configurable, but you may use the `--hints` feature
13
+ (introduced in v1.2.0) to override information discovered via Chef Search.
15
14
 
16
15
 
17
16
  ## Usage
@@ -42,7 +41,7 @@ You're most likely inteterested in the `server` command:
42
41
  # Default: ${job.username}
43
42
  -r, [--refresh=N] # Refresh interval in seconds
44
43
  # Default: 900
45
- -t, [--tagfile=TAGFILE] # JSON file with node tags
44
+ -h, [--hints=HINTS] # JSON file with node hints
46
45
  -l, [--log=LOG] # Log to file instead of STDOUT
47
46
  -v, [--debug], [--no-debug] # Enable DEBUG-level logging
48
47
  -z, [--trace], [--no-trace] # Enable TRACE-level logging
@@ -80,7 +79,7 @@ command line.
80
79
 
81
80
  Return the application version:
82
81
 
83
- 1.0.0
82
+ 1.2.0
84
83
 
85
84
  (Yeah I lied when I said only one endpoint. Sue me.)
86
85
 
@@ -88,6 +87,14 @@ Return the application version:
88
87
 
89
88
  ## Changelog
90
89
 
90
+ #### v1.2.0
91
+
92
+ - Replace `tagfile` with more general `hints`
93
+
94
+ #### v1.1.4
95
+
96
+ - When no groups defined, report empty mapping rather than nothing
97
+
91
98
  #### v1.1.3
92
99
 
93
100
  - Added new `tagfile` feature
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.4
1
+ 1.2.0
@@ -5,6 +5,7 @@ require 'yaml'
5
5
 
6
6
  require 'ridley'
7
7
  require 'sinatra/base'
8
+ require 'deep_merge'
8
9
 
9
10
  require_relative 'metadata'
10
11
 
@@ -59,16 +60,17 @@ module StacksOnDeck
59
60
  def log ; settings.log end
60
61
 
61
62
 
62
- def self.refresh_tagfile!
63
- return {} if settings.tagfile.nil?
64
- JSON.parse File.read(settings.tagfile)
63
+ def self.refresh_hints!
64
+ return {} if settings.hints.nil?
65
+ return {} unless File.exist? settings.hints
66
+ JSON.parse File.read(settings.hints)
65
67
  end
66
68
 
67
69
  def self.refresh!
68
70
  log.info event: 'refresh!'
69
71
  started = Time.now
70
72
 
71
- node_tags = refresh_tagfile!
73
+ hints = refresh_hints!
72
74
 
73
75
  nodes = @@ridley.partial_search :node, 'name:*', %w[
74
76
  name
@@ -88,19 +90,18 @@ module StacksOnDeck
88
90
  nodes.each do |n|
89
91
  name = n.name
90
92
  n = n.automatic
93
+ next if n.hostname.nil?
91
94
 
92
- username = settings.username
93
- remoteUrl = File.join @@ridley.server_url, 'nodes', name
94
- editUrl = File.join remoteUrl, 'edit'
95
+ node_hints = hints[name] || {}
96
+ username = settings.username
97
+ remote_url = File.join @@ridley.server_url, 'nodes', name
98
+ edit_url = File.join remote_url, 'edit'
95
99
 
96
100
  tags = n.tags || []
97
101
  tags += n.roles || []
98
102
  tags << n.chef_environment
99
- tags += node_tags[name] if node_tags.include? name
100
103
  tags = tags.uniq.compact
101
104
 
102
- next if n.hostname.nil?
103
-
104
105
  @@db[name] = {
105
106
  'hostname' => n.hostname,
106
107
  'description' => n.fqdn,
@@ -109,10 +110,10 @@ module StacksOnDeck
109
110
  'osFamily' => n.platform_family,
110
111
  'osName' => n.platform,
111
112
  'username' => username,
112
- 'remoteUrl' => remoteUrl,
113
- 'editUrl' => editUrl,
114
- 'tags' => tags.join(',')
115
- }
113
+ 'remoteUrl' => remote_url,
114
+ 'editUrl' => edit_url,
115
+ 'tags' => tags
116
+ }.deep_merge!(node_hints)
116
117
  end
117
118
 
118
119
  @@db_dump = YAML.dump @@db
@@ -55,7 +55,7 @@ module StacksOnDeck
55
55
  aliases: %w[ -c ],
56
56
  desc: 'Location of Chef configuration',
57
57
  default: DEFAULT_KNIFE,
58
- required: true
58
+ required: DEFAULT_KNIFE.nil?
59
59
  option :username, \
60
60
  type: :string,
61
61
  aliases: %w[ -u ],
@@ -66,10 +66,10 @@ module StacksOnDeck
66
66
  aliases: %w[ -r ],
67
67
  desc: 'Refresh interval in seconds',
68
68
  default: 900
69
- option :tagfile, \
69
+ option :hints, \
70
70
  type: :string,
71
- aliases: %w[ -t ],
72
- desc: 'JSON file with node tags',
71
+ aliases: %w[ -h ],
72
+ desc: 'JSON file with node hints',
73
73
  required: false
74
74
  include_common_options
75
75
  def server
@@ -80,7 +80,7 @@ module StacksOnDeck
80
80
  App.set :refresh, options.refresh
81
81
  App.set :username, options.username
82
82
  App.set :environment, options.environment
83
- App.set :tagfile, options.tagfile
83
+ App.set :hints, options.hints
84
84
 
85
85
  if options.debug?
86
86
  App.set :raise_errors, true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stacksondeck
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Clemmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-05 00:00:00.000000000 Z
11
+ date: 2015-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '4.1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: deep_merge
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: eventmachine
85
99
  requirement: !ruby/object:Gem::Requirement