lita-puppet 0.6.3 → 0.7.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 +4 -4
- data/.travis.yml +11 -3
- data/README.md +14 -6
- data/lib/lita/handlers/puppet.rb +7 -34
- data/lib/utils/lita_puppet/puppetdb.rb +20 -19
- data/lib/utils/lita_puppet/ssh.rb +23 -9
- data/lib/utils/lita_puppet/text.rb +14 -14
- data/lita-puppet.gemspec +5 -1
- data/locales/en.yml +2 -3
- data/spec/lita/handlers/puppet_spec.rb +95 -9
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6753079e28465d80b49e7d463fb242c0730e6ab3
|
4
|
+
data.tar.gz: 20d8c779ebe29130f7643378d5963a03e586c269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e2324d74f2d7ec5cdd956bd065baf9d8dfd5334cea9989aa90913b5dc2613c35494829e20910ac2440753a03efaa3ce43f2d63a03ca68fda9d6cfee38d19667
|
7
|
+
data.tar.gz: e391af17aab49c66f4f427eb2b16db108d655d047e6c5c1f7ee1c829956f84ffb2b8c1543436e132ffcfbde81b3803811d33d94e118120bbb882ec38f6325134
|
data/.travis.yml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
|
4
|
-
|
3
|
+
- 2.2.5
|
4
|
+
- 2.3.1
|
5
5
|
services:
|
6
|
-
|
6
|
+
- redis-server
|
7
7
|
cache: bundler
|
8
|
+
deploy:
|
9
|
+
provider: rubygems
|
10
|
+
api_key:
|
11
|
+
secure: P5+R7mfECVqonuJQf4pHuzh71ihjH/PGJjAHbbfobxJf8krk8h8erD6c/86dxy/+Jyr/BDOvx2TH2Q1zn2lRo1unbKUsccP8nJfY4B8zkISqHs2JqkE2DZZqciYx7OIMO02Yyk3XS8FjaykHOCdgP1UpGY1i1ErfZkSkj3PcfybMLmgShZn/DrR15mulp4EHVtlsb7CZz4dIxsmnH+UP4bTirk1dcw1133iG5xx7hbQ03cMJI8Mjz51+edCI65dS6LN9Vyh2EKZfr+P/mRcp2gLcuHg0IjGvjv4/McMrkAxozTvvFdeSDoZda7sSdC1v0UwbjqHQMva9bcyjz9poKeQDRFjqRtoiuq1LIp4y26hzuOKZWjqnrXLKXRj50cLASiCL4enxr0xC9AkO23Il/MsExhu52Ke0bnS8DC3FkEcWsaVEYHoKC9w9dyMu4d5SCPX1tpbMNFjYacE9RGsKJFshCyi4SBVAu6MPy0X2tNO7bLBZTPAQSILult0D6s4H0j3laxLMZ2KSJpZWAEmsub5BjsheDgHTHZkQ0hAGP4lknqXiiU0F1ogP8LXagHqSLb0Bp+meb9BBhoe3mYafb5MB/r3SMdnOgjpbNxlkxeOwtNpW6PSHJJns1NzDG21PzaIq9MCfHjbDWHtk8n52KAVhSAg9QJ6xXIPSJyo3BYw=
|
12
|
+
gem: lita-puppet
|
13
|
+
on:
|
14
|
+
tags: true
|
15
|
+
repo: knuedge/lita-puppet
|
data/README.md
CHANGED
@@ -15,9 +15,13 @@ Add lita-puppet to your Lita instance's Gemfile:
|
|
15
15
|
gem "lita-puppet"
|
16
16
|
```
|
17
17
|
|
18
|
+
## Prerequisites
|
19
|
+
|
20
|
+
* Some of the commands require a [PuppetDB](https://docs.puppet.com/puppetdb/) server, and it must be specified in the configuration.
|
21
|
+
* Other commands require that Lita has SSH access to machines using an SSH key, and that Lita has Passwordless `sudo` capabilities. This sounds scary, but it can be done in a very restrictive way (and if you're using puppet, you can automate it).
|
22
|
+
|
18
23
|
## Configuration
|
19
24
|
|
20
|
-
* `config.handlers.puppet.control_repo_path` - Path for `git pull` during r10k deployments
|
21
25
|
* `config.handlers.puppet.master_hostname` - Puppet Master's hostname
|
22
26
|
* `config.handlers.puppet.puppetdb_url` - PuppetDB hostname (for the [puppetdb-ruby](https://github.com/voxpupuli/puppetdb-ruby) gem)
|
23
27
|
* `config.handlers.puppet.ssh_user` - SSH user for the Puppet Master for r10k deployments
|
@@ -56,15 +60,19 @@ This is also available as:
|
|
56
60
|
**Note** though that this doesn't do anything on the client side. If you want puppet to work on the `<host>` machine you'll need to generate a new cert. Usually you run this if you're planning to do that anyway though.
|
57
61
|
|
58
62
|
#### Query PuppetDB for the Roles and Profiles used by a node
|
59
|
-
puppet
|
63
|
+
puppet roles and profiles <certname>
|
60
64
|
|
61
65
|
This is also available as:
|
62
66
|
|
63
|
-
puppet
|
64
|
-
|
65
|
-
|
67
|
+
puppet r&p <certname>
|
68
|
+
puppet profiles <certname>
|
69
|
+
puppet roles <certname>
|
70
|
+
pp roles and profiles <certname>
|
71
|
+
pp r&p <certname>
|
72
|
+
pp profiles <certname>
|
73
|
+
pp roles <certname>
|
66
74
|
|
67
|
-
Where `<certname>` is the SSL certificate name used for Puppet. This is usually the FQDN for the host. This query assumes you use the roles and profiles paradigm with the classes namespaced as `profile::example` and `role::example` etc..
|
75
|
+
Where `<certname>` is the SSL certificate name used for Puppet. This is usually the FQDN for the host. This query assumes you use the roles and profiles paradigm with the classes namespaced as `profile::example` and `role::example` etc.. Using only `roles` or `profiles` in the command will only return the requested information.
|
68
76
|
|
69
77
|
#### Query PuppetDB for the nodes associated with a class
|
70
78
|
puppet class nodes <class>
|
data/lib/lita/handlers/puppet.rb
CHANGED
@@ -4,7 +4,6 @@ module Lita
|
|
4
4
|
namespace 'Puppet'
|
5
5
|
config :master_hostname, required: true, type: String
|
6
6
|
config :ssh_user, required: false, type: String, default: 'lita'
|
7
|
-
config :control_repo_path, required: false, type: String, default: '/opt/puppet/control'
|
8
7
|
config :puppetdb_url, required: false, type: String
|
9
8
|
|
10
9
|
route(
|
@@ -22,7 +21,7 @@ module Lita
|
|
22
21
|
)
|
23
22
|
|
24
23
|
route(
|
25
|
-
/(puppet|pp)\s+(
|
24
|
+
/(puppet|pp)\s+(profiles|roles\sand\sprofiles|roles|r&p)\s+(\S+)/i,
|
26
25
|
:node_profiles,
|
27
26
|
command: true,
|
28
27
|
help: { t('help.node_profiles.syntax') => t('help.node_profiles.desc') }
|
@@ -85,6 +84,7 @@ module Lita
|
|
85
84
|
|
86
85
|
def node_profiles(response)
|
87
86
|
host = response.matches[0][2]
|
87
|
+
what = response.matches[0][1]
|
88
88
|
url = config.puppetdb_url
|
89
89
|
|
90
90
|
unless url
|
@@ -94,7 +94,7 @@ module Lita
|
|
94
94
|
|
95
95
|
response.reply_with_mention(t('replies.node_profiles.working'))
|
96
96
|
|
97
|
-
profiles = node_roles_and_profiles(url, host)
|
97
|
+
profiles = node_roles_and_profiles(url, what, host)
|
98
98
|
|
99
99
|
if profiles.is_a? String
|
100
100
|
fail_message response, t('replies.node_profiles.failure', error: profiles)
|
@@ -138,22 +138,15 @@ module Lita
|
|
138
138
|
|
139
139
|
response.reply_with_mention(t('replies.r10k_deploy.working'))
|
140
140
|
|
141
|
-
|
141
|
+
result = simple_ssh_command(config.master_hostname, user, r10k_command(environment, mod))
|
142
142
|
|
143
|
-
if
|
144
|
-
fail_message response, t('replies.r10k_deploy.
|
145
|
-
return false
|
146
|
-
end
|
147
|
-
|
148
|
-
result2 = simple_ssh_command(config.master_hostname, user, r10k_command(environment, mod))
|
149
|
-
|
150
|
-
if result2[:exception]
|
151
|
-
fail_message response, t('replies.r10k_deploy.pupfail'), result2[:exception].message
|
143
|
+
if result[:exception]
|
144
|
+
fail_message response, t('replies.r10k_deploy.failure'), result[:exception].message
|
152
145
|
else
|
153
146
|
success_message(
|
154
147
|
response,
|
155
148
|
t('replies.r10k_deploy.success'),
|
156
|
-
[
|
149
|
+
[result[:stdout].join("\n"), result[:stderr].join("\n")].join("\n")
|
157
150
|
)
|
158
151
|
end
|
159
152
|
end
|
@@ -167,31 +160,11 @@ module Lita
|
|
167
160
|
|
168
161
|
alias success_message fail_message
|
169
162
|
|
170
|
-
def simple_ssh_command(host, user, command, timeout = 300)
|
171
|
-
over_ssh(host: host, user: user, timeout: timeout) do |server|
|
172
|
-
server.cd '/tmp'
|
173
|
-
# Need to use sudo
|
174
|
-
server.enable_sudo
|
175
|
-
# scary...
|
176
|
-
server.disable_safe_mode
|
177
|
-
|
178
|
-
server.execute command
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
163
|
def cert_clean_result(host, user, cert)
|
183
164
|
cmd = "puppet cert clean #{cert} 2>&1"
|
184
165
|
simple_ssh_command(host, user, cmd, 120)
|
185
166
|
end
|
186
167
|
|
187
|
-
def r10k_git_result(host, user, repo_location)
|
188
|
-
over_ssh(host: host, user: user, timeout: 120) do |server|
|
189
|
-
# Need to use sudo
|
190
|
-
server.enable_sudo
|
191
|
-
server[repo_location].git :pull
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
168
|
Lita.register_handler(self)
|
196
169
|
end
|
197
170
|
end
|
@@ -2,25 +2,6 @@ module Utils
|
|
2
2
|
module LitaPuppet
|
3
3
|
# Utility methods for working with PuppetDB
|
4
4
|
module PuppetDB
|
5
|
-
def dbquery(url, q)
|
6
|
-
# TODO: validate incoming query structure
|
7
|
-
client = ::PuppetDB::Client.new(server: url)
|
8
|
-
client.request(*q)
|
9
|
-
end
|
10
|
-
|
11
|
-
def node_roles_and_profiles(url, nodename)
|
12
|
-
# TODO: validate url and nodename
|
13
|
-
::PuppetDB::Client.new(server: url) # this is weird but required
|
14
|
-
d = ::PuppetDB::Client.get("/catalogs/#{nodename}")
|
15
|
-
return d['error'] if d['error']
|
16
|
-
|
17
|
-
tags = []
|
18
|
-
d['data']['resources'].each { |r| tags.concat(r['tags']) }
|
19
|
-
|
20
|
-
# return all the tags related to profile:: or role::
|
21
|
-
tags.sort.uniq.select { |t| t.match(/^(profile|role)::/) }
|
22
|
-
end
|
23
|
-
|
24
5
|
def class_nodes(url, classname)
|
25
6
|
client = ::PuppetDB::Client.new(server: url)
|
26
7
|
q = client.request(
|
@@ -34,6 +15,26 @@ module Utils
|
|
34
15
|
|
35
16
|
q.data.map { |node| node['certname'] }
|
36
17
|
end
|
18
|
+
|
19
|
+
def node_roles_and_profiles(url, what, nodename)
|
20
|
+
# TODO: validate url and nodename
|
21
|
+
::PuppetDB::Client.new(server: url) # this is weird but required
|
22
|
+
d = ::PuppetDB::Client.get("/catalogs/#{nodename}")
|
23
|
+
return d['error'] if d['error']
|
24
|
+
|
25
|
+
tags = []
|
26
|
+
d['data']['resources'].each { |r| tags.concat(r['tags']) }
|
27
|
+
|
28
|
+
# return all the tags related to profile:: or role::
|
29
|
+
case what
|
30
|
+
when 'profiles'
|
31
|
+
tags.sort.uniq.select { |t| t.match(/^profile::/) }
|
32
|
+
when 'roles'
|
33
|
+
tags.sort.uniq.select { |t| t.match(/^role::/) }
|
34
|
+
when 'r&p', 'p&r', 'roles and profiles'
|
35
|
+
tags.sort.uniq.select { |t| t.match(/^(profile|role)::/) }
|
36
|
+
end
|
37
|
+
end
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
@@ -2,6 +2,19 @@ module Utils
|
|
2
2
|
module LitaPuppet
|
3
3
|
# Utility methods for doing things over SSH
|
4
4
|
module SSH
|
5
|
+
# Only really used for the over_ssh method to determine success or failure
|
6
|
+
def calculate_result(output, exception)
|
7
|
+
result = {}
|
8
|
+
if exception
|
9
|
+
result[:exception] = exception
|
10
|
+
else
|
11
|
+
result[:exit_status] = output.exit_status
|
12
|
+
result[:stdout] = output.stdout
|
13
|
+
result[:stderr] = output.stderr
|
14
|
+
end
|
15
|
+
result
|
16
|
+
end
|
17
|
+
|
5
18
|
# Intelligently do some things over SSH
|
6
19
|
def over_ssh(opts = {})
|
7
20
|
raise 'MissingSSHHost' unless opts[:host]
|
@@ -31,16 +44,17 @@ module Utils
|
|
31
44
|
calculate_result(output, exception)
|
32
45
|
end
|
33
46
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
47
|
+
# Provides a super simple way to just run a single command over ssh
|
48
|
+
def simple_ssh_command(host, user, command, timeout = 300)
|
49
|
+
over_ssh(host: host, user: user, timeout: timeout) do |server|
|
50
|
+
server.cd '/tmp'
|
51
|
+
# Need to use sudo
|
52
|
+
server.enable_sudo
|
53
|
+
# scary...
|
54
|
+
server.disable_safe_mode
|
55
|
+
|
56
|
+
server.execute command
|
42
57
|
end
|
43
|
-
result
|
44
58
|
end
|
45
59
|
end
|
46
60
|
end
|
@@ -2,15 +2,11 @@ module Utils
|
|
2
2
|
module LitaPuppet
|
3
3
|
# Utility methods for manipulating text
|
4
4
|
module Text
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
# camel case puppet classes
|
12
|
-
def class_camel(text)
|
13
|
-
text.split('::').map(&:capitalize).join('::')
|
5
|
+
def agent_command
|
6
|
+
command = 'puppet agent'
|
7
|
+
command << ' --onetime --verbose --no-daemonize'
|
8
|
+
command << ' --no-usecacheonfailure'
|
9
|
+
command << ' --no-splay --show_diff 2>&1'
|
14
10
|
end
|
15
11
|
|
16
12
|
# Format some text as code
|
@@ -20,6 +16,11 @@ module Utils
|
|
20
16
|
'/code ' + sanitze_for_chat(text)
|
21
17
|
end
|
22
18
|
|
19
|
+
# camel case puppet classes
|
20
|
+
def class_camel(text)
|
21
|
+
text.split('::').map(&:capitalize).join('::')
|
22
|
+
end
|
23
|
+
|
23
24
|
def r10k_command(environment, mod)
|
24
25
|
command = 'r10k deploy'
|
25
26
|
if environment && mod
|
@@ -31,11 +32,10 @@ module Utils
|
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
command << ' --no-splay --show_diff 2>&1'
|
35
|
+
# Strip off bad characters
|
36
|
+
def sanitze_for_chat(text)
|
37
|
+
# Remove bash colorings
|
38
|
+
text.gsub(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]/, '')
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
data/lita-puppet.gemspec
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
# rubocop:disable Metrics/BlockLength
|
1
2
|
Gem::Specification.new do |spec|
|
2
3
|
spec.name = 'lita-puppet'
|
3
|
-
spec.version = '0.
|
4
|
+
spec.version = '0.7.0'
|
4
5
|
spec.authors = ['Daniel Schaaff', 'Jonathan Gnagy'].sort
|
5
6
|
spec.email = ['jgnagy@knuedge.com']
|
6
7
|
spec.description = 'Some basic Puppet interactions for Lita'
|
@@ -14,6 +15,8 @@ Gem::Specification.new do |spec|
|
|
14
15
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
16
|
spec.require_paths = ['lib']
|
16
17
|
|
18
|
+
spec.required_ruby_version = '~> 2.2'
|
19
|
+
|
17
20
|
spec.add_runtime_dependency 'lita', '~> 4.7'
|
18
21
|
spec.add_runtime_dependency 'rye'
|
19
22
|
spec.add_runtime_dependency 'puppetdb-ruby'
|
@@ -26,4 +29,5 @@ Gem::Specification.new do |spec|
|
|
26
29
|
spec.add_development_dependency 'simplecov'
|
27
30
|
spec.add_development_dependency 'coveralls'
|
28
31
|
spec.add_development_dependency 'rubocop'
|
32
|
+
spec.add_development_dependency 'travis', '~> 1.8'
|
29
33
|
end
|
data/locales/en.yml
CHANGED
@@ -10,7 +10,7 @@ en:
|
|
10
10
|
syntax: puppet cert clean <host>
|
11
11
|
desc: Remove all traces of the SSL cert for <host> on the Puppet Master.
|
12
12
|
node_profiles:
|
13
|
-
syntax: puppet
|
13
|
+
syntax: puppet profiles | roles | roles and profiles <host>
|
14
14
|
desc: Query PuppetDB to get a list of all roles and profiles applied to <host>.
|
15
15
|
nodes_with_class:
|
16
16
|
syntax: puppet class nodes <class>
|
@@ -39,6 +39,5 @@ en:
|
|
39
39
|
success: "Here are all the nodes with class %{pclass}:"
|
40
40
|
r10k_deploy:
|
41
41
|
working: "I'll get right on that. Give me a moment and I'll let you know how it went."
|
42
|
-
|
43
|
-
pupfail: "your r10k run didn't seem to work. Here's what went wrong:"
|
42
|
+
failure: "your r10k run didn't seem to work. Here's what went wrong:"
|
44
43
|
success: "your r10k deployment is done!"
|
@@ -1,23 +1,109 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'pry'
|
2
3
|
|
3
4
|
describe Lita::Handlers::Puppet, lita_handler: true do
|
4
|
-
|
5
|
-
|
5
|
+
before do
|
6
|
+
registry.config.handlers.puppet.master_hostname = 'puppet.foo'
|
7
|
+
registry.config.handlers.puppet.puppetdb_url = 'http://pboard.foo:8080'
|
6
8
|
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
+
let(:lita_user) { Lita::User.create('User', name: 'A User', mention_name: 'user') }
|
11
|
+
|
12
|
+
let(:new_puppetdb_request_only) do
|
13
|
+
instance_double('::PuppetDB::Client', request: puppetdb_nodes)
|
10
14
|
end
|
11
15
|
|
12
|
-
|
13
|
-
|
16
|
+
let(:puppetdb_nodes) do
|
17
|
+
double(
|
18
|
+
data: [
|
19
|
+
{ 'certname' => 'server1.foo' },
|
20
|
+
{ 'certname' => 'server2.foo' }
|
21
|
+
]
|
22
|
+
)
|
14
23
|
end
|
15
24
|
|
16
|
-
|
17
|
-
|
25
|
+
let(:rye_box) do
|
26
|
+
box = instance_double(
|
27
|
+
'Rye::Box',
|
28
|
+
disable_safe_mode: true,
|
29
|
+
disconnect: true,
|
30
|
+
enable_sudo: true,
|
31
|
+
execute: rye_output_base
|
32
|
+
)
|
33
|
+
allow(box).to receive(:cd).with('/tmp').and_return(true)
|
34
|
+
box
|
18
35
|
end
|
19
36
|
|
20
|
-
|
37
|
+
let(:rye_output_base) { double(exit_status: 0, stdout: ['foo'], stderr: ['bar']) }
|
38
|
+
|
39
|
+
it 'should have the required routes' do
|
40
|
+
is_expected.to route_command('puppet agent run on foo').to(:puppet_agent_run)
|
41
|
+
is_expected.to route_command('puppet cert clean foo').to(:cert_clean)
|
42
|
+
is_expected.to route_command('puppet profiles foo').to(:node_profiles)
|
43
|
+
is_expected.to route_command('puppet class nodes foo').to(:nodes_with_class)
|
21
44
|
is_expected.to route_command('puppet r10k').to(:r10k_deploy)
|
22
45
|
end
|
46
|
+
|
47
|
+
describe('#cert_clean') do
|
48
|
+
it 'should clean a cert' do
|
49
|
+
allow(Rye::Box).to receive(:new).and_return(rye_box)
|
50
|
+
send_command('puppet cert clean server.name', as: lita_user)
|
51
|
+
expect(replies[-2]).to eq('your `puppet cert clean` is all done!')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe('#puppet_agent_run') do
|
56
|
+
it 'should run a puppet agent' do
|
57
|
+
allow(Rye::Box).to receive(:new).and_return(rye_box)
|
58
|
+
send_command('puppet agent run on server.name', as: lita_user)
|
59
|
+
expect(replies[-2]).to eq('that puppet run is complete! It exited with status 0.')
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe('#node_profiles') do
|
64
|
+
it 'should provide a list of profiles and roles associated with a node' do
|
65
|
+
allow(::PuppetDB::Client).to receive(:get).and_return(
|
66
|
+
'data' => {
|
67
|
+
'resources' => [
|
68
|
+
{ 'tags' => ['profile::foo'] },
|
69
|
+
{ 'tags' => ['role::baz'] }
|
70
|
+
]
|
71
|
+
}
|
72
|
+
)
|
73
|
+
send_command('puppet roles and profiles foo', as: lita_user)
|
74
|
+
expect(replies.last).to eq("/code profile::foo\nrole::baz")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe('#nodes_with_class') do
|
79
|
+
it 'should provide a list of nodes containing a class' do
|
80
|
+
allow(::PuppetDB::Client).to receive(:new).and_return(new_puppetdb_request_only)
|
81
|
+
send_command('puppet class nodes profile::foo', as: lita_user)
|
82
|
+
expect(replies.last).to eq("/code server1.foo\nserver2.foo")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe('#r10k_deploy') do
|
87
|
+
context 'without a module or environment' do
|
88
|
+
it 'should trigger r10k on the puppet master' do
|
89
|
+
allow(Rye::Box).to receive(:new).and_return(rye_box)
|
90
|
+
send_command('puppet deploy', as: lita_user)
|
91
|
+
expect(replies[-2]).to eq('your r10k deployment is done!')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
context 'with an environment and no module' do
|
95
|
+
it 'should trigger r10k on the puppet master' do
|
96
|
+
allow(Rye::Box).to receive(:new).and_return(rye_box)
|
97
|
+
send_command('puppet deploy production', as: lita_user)
|
98
|
+
expect(replies[-2]).to eq('your r10k deployment is done!')
|
99
|
+
end
|
100
|
+
end
|
101
|
+
context 'with an environment and a module' do
|
102
|
+
it 'should trigger r10k on the puppet master' do
|
103
|
+
allow(Rye::Box).to receive(:new).and_return(rye_box)
|
104
|
+
send_command('puppet deploy production role', as: lita_user)
|
105
|
+
expect(replies[-2]).to eq('your r10k deployment is done!')
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
23
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schaaff
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-11-
|
12
|
+
date: 2016-11-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: lita
|
@@ -165,6 +165,20 @@ dependencies:
|
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
|
+
- !ruby/object:Gem::Dependency
|
169
|
+
name: travis
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - "~>"
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '1.8'
|
175
|
+
type: :development
|
176
|
+
prerelease: false
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '1.8'
|
168
182
|
description: Some basic Puppet interactions for Lita
|
169
183
|
email:
|
170
184
|
- jgnagy@knuedge.com
|
@@ -201,9 +215,9 @@ require_paths:
|
|
201
215
|
- lib
|
202
216
|
required_ruby_version: !ruby/object:Gem::Requirement
|
203
217
|
requirements:
|
204
|
-
- - "
|
218
|
+
- - "~>"
|
205
219
|
- !ruby/object:Gem::Version
|
206
|
-
version: '
|
220
|
+
version: '2.2'
|
207
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
222
|
requirements:
|
209
223
|
- - ">="
|
@@ -211,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
225
|
version: '0'
|
212
226
|
requirements: []
|
213
227
|
rubyforge_project:
|
214
|
-
rubygems_version: 2.5
|
228
|
+
rubygems_version: 2.4.5
|
215
229
|
signing_key:
|
216
230
|
specification_version: 4
|
217
231
|
summary: Allow the Lita bot to handle requests for puppet tasks
|