stacksondeck 1.1.2 → 1.1.3

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: 2ad2f38eed9b040ecd478a3b9f1e785c2c2ab6f7
4
- data.tar.gz: 38a3d1ac048b988e0b42ed9d38ae9c1d25c03665
3
+ metadata.gz: 6cdff7f13a7e76edb2d9aaf98e8248d40188d6ca
4
+ data.tar.gz: 52fe4bf51c8ef01486a5a10da059ffc9fc48d50e
5
5
  SHA512:
6
- metadata.gz: 6b7aec1b2d045d23d27247dedde1cbf741b12dcfce7b3af8d9d9f04cf9d585b57e033d7702ba5f93a9726657fcd94ab9334ad90d26254371fa2dec9aa2cc885e
7
- data.tar.gz: 5bb25be330c392a14840e28c8f2cdf71b46634f5e72496811e98ffd54299e27977202e29ecb16b843dbbe403fe1ff2a4cd7e239e40c43a4906834d0fabf763d2
6
+ metadata.gz: 9a613b9ca2c7c4fe1d677cc1a7994761662dad56ca3cc18e5ea6994e4f3083fbc8b5092284bfc97efec9683a9435b6523d80917d7cebc03f9ac8bc2ed027733a
7
+ data.tar.gz: 63ccaf3fc121151c742e5e3e5f20cf95f34358c622074a6a9933c457e773f9187e16c5c85eaed0bd7a266c3ac176f86ccfdd8b97a23864dd003911de731747fa
data/Readme.md CHANGED
@@ -8,8 +8,10 @@ Chef server using the provided knife credentials (`--config`); results are cache
8
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
- **N.B.** SOD merges a Chef node's environments, roles, and tags into Rundeck
12
- tags. This behavior is not currently configurable.
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.
13
15
 
14
16
 
15
17
  ## Usage
@@ -39,7 +41,8 @@ You're most likely inteterested in the `server` command:
39
41
  -u, [--username=USERNAME] # Username value for Rundeck node
40
42
  # Default: ${job.username}
41
43
  -r, [--refresh=N] # Refresh interval in seconds
42
- # Default: 60
44
+ # Default: 900
45
+ -t, [--tagfile=TAGFILE] # JSON file with node tags
43
46
  -l, [--log=LOG] # Log to file instead of STDOUT
44
47
  -v, [--debug], [--no-debug] # Enable DEBUG-level logging
45
48
  -z, [--trace], [--no-trace] # Enable TRACE-level logging
@@ -82,8 +85,13 @@ Return the application version:
82
85
  (Yeah I lied when I said only one endpoint. Sue me.)
83
86
 
84
87
 
88
+
85
89
  ## Changelog
86
90
 
91
+ #### v1.1.3
92
+
93
+ - Added new `tagfile` feature
94
+
87
95
  #### v1.1.2
88
96
 
89
97
  - Allow override of `username` via query parameter
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.2
1
+ 1.1.3
@@ -59,10 +59,17 @@ module StacksOnDeck
59
59
  def log ; settings.log end
60
60
 
61
61
 
62
+ def self.refresh_tagfile!
63
+ return {} if settings.tagfile.nil?
64
+ JSON.parse File.read(settings.tagfile)
65
+ end
66
+
62
67
  def self.refresh!
63
68
  log.info event: 'refresh!'
64
69
  started = Time.now
65
70
 
71
+ node_tags = refresh_tagfile!
72
+
66
73
  nodes = @@ridley.partial_search :node, 'name:*', %w[
67
74
  name
68
75
  hostname
@@ -89,7 +96,8 @@ module StacksOnDeck
89
96
  tags = n.tags || []
90
97
  tags += n.roles || []
91
98
  tags << n.chef_environment
92
- tags.compact!
99
+ tags += node_tags[name] if node_tags.include? name
100
+ tags = tags.uniq.compact
93
101
 
94
102
  next if n.hostname.nil?
95
103
 
@@ -6,6 +6,8 @@ require_relative 'mjolnir'
6
6
  require_relative 'metadata'
7
7
 
8
8
 
9
+ Thread.abort_on_exception = true
10
+
9
11
  module StacksOnDeck
10
12
 
11
13
  # StacksOnDeck's entrypoint.
@@ -23,6 +25,14 @@ module StacksOnDeck
23
25
  puts "\n%s\n" % ART
24
26
  end
25
27
 
28
+ SYSTEM_KNIFE = '/etc/chef/knife.rb'
29
+ USER_KNIFE = File.join(ENV['HOME'] || '', '.chef', 'knife.rb')
30
+
31
+ DEFAULT_KNIFE = if File.exist? SYSTEM_KNIFE
32
+ SYSTEM_KNIFE
33
+ elsif File.exist? USER_KNIFE
34
+ USER_KNIFE
35
+ end
26
36
 
27
37
  desc 'server', 'Start application web server'
28
38
  option :bind, \
@@ -44,7 +54,8 @@ module StacksOnDeck
44
54
  type: :string,
45
55
  aliases: %w[ -c ],
46
56
  desc: 'Location of Chef configuration',
47
- default: '/etc/chef/knife.rb'
57
+ default: DEFAULT_KNIFE,
58
+ required: true
48
59
  option :username, \
49
60
  type: :string,
50
61
  aliases: %w[ -u ],
@@ -55,6 +66,11 @@ module StacksOnDeck
55
66
  aliases: %w[ -r ],
56
67
  desc: 'Refresh interval in seconds',
57
68
  default: 900
69
+ option :tagfile, \
70
+ type: :string,
71
+ aliases: %w[ -t ],
72
+ desc: 'JSON file with node tags',
73
+ required: false
58
74
  include_common_options
59
75
  def server
60
76
  App.set :log, log
@@ -64,6 +80,7 @@ module StacksOnDeck
64
80
  App.set :refresh, options.refresh
65
81
  App.set :username, options.username
66
82
  App.set :environment, options.environment
83
+ App.set :tagfile, options.tagfile
67
84
 
68
85
  if options.debug?
69
86
  App.set :raise_errors, true
@@ -72,13 +89,7 @@ module StacksOnDeck
72
89
  App.set :logging, ::Logger::DEBUG
73
90
  end
74
91
 
75
- Celluloid.logger = nil
76
- Thread.abort_on_exception = false
77
-
78
- if options.trace?
79
- Celluloid.logger = log
80
- Thread.abort_on_exception = true
81
- end
92
+ Celluloid.logger = options.trace? ? log : nil
82
93
 
83
94
  log.info event: 'server', options: options
84
95
  App.run!
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.2
4
+ version: 1.1.3
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-04-18 00:00:00.000000000 Z
11
+ date: 2015-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  version: '0'
146
146
  requirements: []
147
147
  rubyforge_project:
148
- rubygems_version: 2.4.5
148
+ rubygems_version: 2.4.5.1
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: Stupid simple Chef-Rundeck integration