pennyworth-tool 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.hound.yml +3 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +18 -0
  6. data/CONTRIBUTING.md +67 -0
  7. data/COPYING +674 -0
  8. data/Gemfile +28 -0
  9. data/README.md +339 -0
  10. data/Rakefile +33 -0
  11. data/bin/pennyworth +26 -0
  12. data/config/setup.yml +17 -0
  13. data/examples/README.md +23 -0
  14. data/examples/kiwi/definitions/base_opensuse13.1_kvm/config.sh +87 -0
  15. data/examples/kiwi/definitions/base_opensuse13.1_kvm/config.xml +64 -0
  16. data/examples/kiwi/definitions/base_opensuse13.1_kvm/root/etc/sysconfig/network/ifcfg-eth0 +2 -0
  17. data/examples/kiwi/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys +1 -0
  18. data/examples/vagrant/Vagrantfile +14 -0
  19. data/files/99-libvirt.rules +2 -0
  20. data/files/image_test-template.xml +43 -0
  21. data/files/pool-default.xml +6 -0
  22. data/lib/image_runner.rb +89 -0
  23. data/lib/pennyworth.rb +65 -0
  24. data/lib/pennyworth/cli.rb +339 -0
  25. data/lib/pennyworth/cli_host_controller.rb +107 -0
  26. data/lib/pennyworth/commands/base_command.rb +96 -0
  27. data/lib/pennyworth/commands/boot_command.rb +29 -0
  28. data/lib/pennyworth/commands/build_base_command.rb +103 -0
  29. data/lib/pennyworth/commands/command.rb +43 -0
  30. data/lib/pennyworth/commands/down_command.rb +25 -0
  31. data/lib/pennyworth/commands/import_base_command.rb +112 -0
  32. data/lib/pennyworth/commands/import_ssh_keys_command.rb +27 -0
  33. data/lib/pennyworth/commands/list_command.rb +41 -0
  34. data/lib/pennyworth/commands/setup_command.rb +209 -0
  35. data/lib/pennyworth/commands/shutdown_command.rb +28 -0
  36. data/lib/pennyworth/commands/status_command.rb +26 -0
  37. data/lib/pennyworth/commands/up_command.rb +27 -0
  38. data/lib/pennyworth/exceptions.rb +39 -0
  39. data/lib/pennyworth/helper.rb +39 -0
  40. data/lib/pennyworth/host_config.rb +86 -0
  41. data/lib/pennyworth/host_runner.rb +133 -0
  42. data/lib/pennyworth/image_runner.rb +89 -0
  43. data/lib/pennyworth/libvirt.rb +93 -0
  44. data/lib/pennyworth/local_command_runner.rb +77 -0
  45. data/lib/pennyworth/local_runner.rb +34 -0
  46. data/lib/pennyworth/lock_service.rb +87 -0
  47. data/lib/pennyworth/remote_command_runner.rb +144 -0
  48. data/lib/pennyworth/runner.rb +27 -0
  49. data/lib/pennyworth/settings.rb +42 -0
  50. data/lib/pennyworth/spec.rb +96 -0
  51. data/lib/pennyworth/spec_profiler.rb +85 -0
  52. data/lib/pennyworth/ssh_keys_importer.rb +107 -0
  53. data/lib/pennyworth/urls.rb +28 -0
  54. data/lib/pennyworth/vagrant.rb +81 -0
  55. data/lib/pennyworth/vagrant_command.rb +120 -0
  56. data/lib/pennyworth/vagrant_runner.rb +44 -0
  57. data/lib/pennyworth/version.rb +22 -0
  58. data/lib/pennyworth/vm.rb +62 -0
  59. data/man/.gitignore +2 -0
  60. data/man/pennyworth.1.md +28 -0
  61. data/pennyworth.gemspec +57 -0
  62. data/prophet/Gemfile +3 -0
  63. data/prophet/prophet.rb +82 -0
  64. data/spec/base_command_spec.rb +30 -0
  65. data/spec/build_base_command_spec.rb +147 -0
  66. data/spec/cli_host_controller_spec.rb +113 -0
  67. data/spec/data/hosts.yaml +10 -0
  68. data/spec/data/kiwi/base_opensuse12.3_kvm.box +1 -0
  69. data/spec/data/kiwi/base_opensuse13.1_kvm.box +1 -0
  70. data/spec/data/kiwi/definitions/base_opensuse12.3_kvm/config.sh +1 -0
  71. data/spec/data/kiwi/definitions/base_opensuse12.3_kvm/config.xml +1 -0
  72. data/spec/data/kiwi/definitions/base_opensuse12.3_kvm/root/home/vagrant/.ssh/authorized_keys +1 -0
  73. data/spec/data/kiwi/definitions/base_opensuse13.1_kvm/config.sh +1 -0
  74. data/spec/data/kiwi/definitions/base_opensuse13.1_kvm/config.xml +1 -0
  75. data/spec/data/kiwi/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys +1 -0
  76. data/spec/data/kiwi2/box_state.yaml +14 -0
  77. data/spec/data/kiwi2/definitions/base_opensuse12.3_kvm/config.sh +1 -0
  78. data/spec/data/kiwi2/definitions/base_opensuse12.3_kvm/config.xml +1 -0
  79. data/spec/data/kiwi2/definitions/base_opensuse12.3_kvm/root/home/vagrant/.ssh/authorized_keys +1 -0
  80. data/spec/data/kiwi2/definitions/base_opensuse13.1_kvm/config.sh +1 -0
  81. data/spec/data/kiwi2/definitions/base_opensuse13.1_kvm/config.xml +1 -0
  82. data/spec/data/kiwi2/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys +1 -0
  83. data/spec/data/kiwi3/box_state.yaml +13 -0
  84. data/spec/data/kiwi3/definitions/base_opensuse12.3_kvm/.gitkeep +0 -0
  85. data/spec/data/kiwi3/definitions/base_opensuse13.1_kvm/.gitkeep +0 -0
  86. data/spec/data/kiwi3/import_state.yaml +3 -0
  87. data/spec/data/kiwi4/definitions/base_opensuse12.3_kvm/.gitkeep +0 -0
  88. data/spec/data/kiwi4/definitions/base_opensuse13.1_kvm/.gitkeep +0 -0
  89. data/spec/data/kiwi4/import_state.yaml +3 -0
  90. data/spec/data/kiwi5/import_state.yaml +3 -0
  91. data/spec/data/vagrant/.gitkeep +0 -0
  92. data/spec/host_config_spec.rb +197 -0
  93. data/spec/host_runner_spec.rb +112 -0
  94. data/spec/image_runner_spec.rb +62 -0
  95. data/spec/import_base_command_spec.rb +189 -0
  96. data/spec/local_command_runner_spec.rb +117 -0
  97. data/spec/local_runner_spec.rb +42 -0
  98. data/spec/lock_service_spec.rb +95 -0
  99. data/spec/remote_command_runner_spec.rb +115 -0
  100. data/spec/settings_spec.rb +26 -0
  101. data/spec/setup_command_spec.rb +49 -0
  102. data/spec/spec_helper.rb +50 -0
  103. data/spec/spec_profiler_spec.rb +63 -0
  104. data/spec/spec_spec.rb +99 -0
  105. data/spec/support/command_runner_examples.rb +29 -0
  106. data/spec/support/runner_examples.rb +34 -0
  107. data/spec/urls_spec.rb +46 -0
  108. data/spec/vagrant_command_spec.rb +51 -0
  109. data/spec/vagrant_runner_spec.rb +40 -0
  110. data/spec/vagrant_spec.rb +288 -0
  111. data/spec/vm_spec.rb +56 -0
  112. metadata +257 -0
@@ -0,0 +1,40 @@
1
+ # Copyright (c) 2013-2014 SUSE LLC
2
+ #
3
+ # This program is free software; you can redistribute it and/or
4
+ # modify it under the terms of version 3 of the GNU General Public License as
5
+ # published by the Free Software Foundation.
6
+ #
7
+ # This program is distributed in the hope that it will be useful,
8
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
+ # GNU General Public License for more details.
11
+ #
12
+ # You should have received a copy of the GNU General Public License
13
+ # along with this program; if not, contact SUSE LLC.
14
+ #
15
+ # To contact SUSE about this file by physical or electronic mail,
16
+ # you may find current contact information at www.suse.com
17
+
18
+ require 'spec_helper'
19
+
20
+ describe Pennyworth::VagrantRunner do
21
+ let(:runner) { Pennyworth::VagrantRunner.new("foo", RSpec.configuration.vagrant_dir, "root") }
22
+
23
+ it_behaves_like "a runner"
24
+
25
+ describe "#start" do
26
+ it "returns the IP address of the started system" do
27
+ expect_any_instance_of(Pennyworth::Vagrant).to receive(:run).with("destroy", "foo")
28
+ expect_any_instance_of(Pennyworth::Vagrant).to receive(:run).with("up", "foo")
29
+ expect_any_instance_of(Pennyworth::Vagrant).to receive(:ssh_config).with("foo") {
30
+ {
31
+ "foo" => {
32
+ "HostName" => "1.2.3.4"
33
+ }
34
+ }
35
+ }
36
+
37
+ expect(runner.start).to eq("1.2.3.4")
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,288 @@
1
+ # Copyright (c) 2013-2014 SUSE LLC
2
+ #
3
+ # This program is free software; you can redistribute it and/or
4
+ # modify it under the terms of version 3 of the GNU General Public License as
5
+ # published by the Free Software Foundation.
6
+ #
7
+ # This program is distributed in the hope that it will be useful,
8
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
+ # GNU General Public License for more details.
11
+ #
12
+ # You should have received a copy of the GNU General Public License
13
+ # along with this program; if not, contact SUSE LLC.
14
+ #
15
+ # To contact SUSE about this file by physical or electronic mail,
16
+ # you may find current contact information at www.suse.com
17
+
18
+ require "spec_helper"
19
+
20
+ describe Pennyworth::Vagrant do
21
+ describe "#ssh_config" do
22
+ def unindent(s)
23
+ indent = " " * (s.split("\n").map { |l| l.match(/^\s*/)[0].size }.min || 0)
24
+ s.gsub(/^#{indent}/, "")
25
+ end
26
+
27
+ subject { Pennyworth::Vagrant.new("/tmp") }
28
+
29
+ let(:vagrant_ssh_config_output_one) {
30
+ unindent(<<-EOT)
31
+ Host one
32
+ HostName 192.168.122.1
33
+ User vagrant
34
+ Port 22
35
+ UserKnownHostsFile /dev/null
36
+ StrictHostKeyChecking no
37
+ PasswordAuthentication no
38
+ IdentityFile /home
39
+ IdentitiesOnly yes
40
+ LogLevel FATAL
41
+ EOT
42
+ }
43
+
44
+ let(:vagrant_ssh_config_output_two) {
45
+ unindent(<<-EOT)
46
+ Host two
47
+ HostName 192.168.122.2
48
+ User vagrant
49
+ Port 22
50
+ UserKnownHostsFile /dev/null
51
+ StrictHostKeyChecking no
52
+ PasswordAuthentication no
53
+ IdentityFile /home
54
+ IdentitiesOnly yes
55
+ LogLevel FATAL
56
+ EOT
57
+ }
58
+
59
+ let(:vagrant_ssh_config_output_three) {
60
+ unindent(<<-EOT)
61
+ Host three
62
+ HostName 192.168.122.3
63
+ User vagrant
64
+ Port 22
65
+ UserKnownHostsFile /dev/null
66
+ StrictHostKeyChecking no
67
+ PasswordAuthentication no
68
+ IdentityFile /home
69
+ IdentitiesOnly yes
70
+ LogLevel FATAL
71
+ EOT
72
+ }
73
+
74
+ let(:vagrant_ssh_config_output_all) {
75
+ [
76
+ vagrant_ssh_config_output_one,
77
+ vagrant_ssh_config_output_two,
78
+ vagrant_ssh_config_output_three
79
+ ].join("")
80
+ }
81
+
82
+ let(:vagrant_ssh_config_output_empty_line) {
83
+ unindent(<<-EOT)
84
+ Host empty-line
85
+
86
+ HostName 192.168.122.1
87
+ EOT
88
+ }
89
+
90
+ let(:vagrant_ssh_config_output_comment) {
91
+ unindent(<<-EOT)
92
+ Host comment
93
+ # comment
94
+ HostName 192.168.122.1
95
+ EOT
96
+ }
97
+
98
+ let(:vagrant_ssh_config_output_formatting) {
99
+ unindent(<<-EOT)
100
+ Host formatting
101
+ A a
102
+ B b
103
+ C c
104
+ D d
105
+ E=e
106
+ F =f
107
+ G =g
108
+ H= h
109
+ I= i
110
+ EOT
111
+ }
112
+
113
+ let(:vagrant_ssh_config_output_invalid_line) {
114
+ unindent(<<-EOT)
115
+ invalid
116
+ EOT
117
+ }
118
+
119
+ let(:vagrant_ssh_config_output_missing_host) {
120
+ unindent(<<-EOT)
121
+ HostName 192.168.122.1
122
+ EOT
123
+ }
124
+
125
+ let(:vagrant_status_output) {
126
+ unindent(<<-EOT)
127
+ Current machine states:
128
+
129
+ \none running (libvirt)
130
+ \ntwo running (libvirt)
131
+ \nthree running (libvirt)
132
+
133
+ This environment represents multiple VMs. The VMs are all listed
134
+ above with their current state. For more information about a specific
135
+ VM, run `vagrant status NAME`.
136
+ EOT
137
+ }
138
+
139
+ let(:ssh_config_one) {
140
+ {
141
+ "one" => {
142
+ "HostName" => "192.168.122.1",
143
+ "User" => "vagrant",
144
+ "Port" => "22",
145
+ "UserKnownHostsFile" => "/dev/null",
146
+ "StrictHostKeyChecking" => "no",
147
+ "PasswordAuthentication" => "no",
148
+ "IdentityFile" => "/home",
149
+ "IdentitiesOnly" => "yes",
150
+ "LogLevel" => "FATAL"
151
+ }
152
+ }
153
+ }
154
+
155
+ let(:ssh_config_two) {
156
+ {
157
+ "two" => {
158
+ "HostName" => "192.168.122.2",
159
+ "User" => "vagrant",
160
+ "Port" => "22",
161
+ "UserKnownHostsFile" => "/dev/null",
162
+ "StrictHostKeyChecking" => "no",
163
+ "PasswordAuthentication" => "no",
164
+ "IdentityFile" => "/home",
165
+ "IdentitiesOnly" => "yes",
166
+ "LogLevel" => "FATAL"
167
+ }
168
+ }
169
+ }
170
+
171
+ let(:ssh_config_three) {
172
+ {
173
+ "three" => {
174
+ "HostName" => "192.168.122.3",
175
+ "User" => "vagrant",
176
+ "Port" => "22",
177
+ "UserKnownHostsFile" => "/dev/null",
178
+ "StrictHostKeyChecking" => "no",
179
+ "PasswordAuthentication" => "no",
180
+ "IdentityFile" => "/home",
181
+ "IdentitiesOnly" => "yes",
182
+ "LogLevel" => "FATAL"
183
+ }
184
+ }
185
+ }
186
+
187
+ let(:ssh_config_all) {
188
+ ssh_config_one.merge(ssh_config_two).merge(ssh_config_three)
189
+ }
190
+
191
+ let(:ssh_config_empty_line) {
192
+ {
193
+ "empty-line" => { "HostName" => "192.168.122.1" }
194
+ }
195
+ }
196
+
197
+ let(:ssh_config_comment) {
198
+ {
199
+ "comment" => { "HostName" => "192.168.122.1" }
200
+ }
201
+ }
202
+
203
+ let(:ssh_config_formatting) {
204
+ {
205
+ "formatting" => {
206
+ "A" => "a",
207
+ "B" => "b",
208
+ "C" => "c",
209
+ "D" => "d",
210
+ "E" => "e",
211
+ "F" => "f",
212
+ "G" => "g",
213
+ "H" => "h",
214
+ "I" => "i"
215
+ }
216
+ }
217
+ }
218
+
219
+ it "reads SSH config of one box correctly" do
220
+ expect(Cheetah).to receive(:run).
221
+ with("vagrant", "ssh-config", "one", :stdout => :capture).
222
+ and_return(vagrant_ssh_config_output_one)
223
+
224
+ expect(subject.ssh_config("one")).to eq(ssh_config_one)
225
+ end
226
+
227
+ it "reads SSH config of all boxes correctly" do
228
+ expect(Cheetah).to receive(:run).
229
+ with("vagrant", "status", :stdout => :capture).
230
+ and_return(vagrant_status_output)
231
+ expect(Cheetah).to receive(:run).
232
+ with("vagrant", "ssh-config", "one", :stdout => :capture).
233
+ and_return(vagrant_ssh_config_output_one)
234
+ expect(Cheetah).to receive(:run).
235
+ with("vagrant", "ssh-config", "two", :stdout => :capture).
236
+ and_return(vagrant_ssh_config_output_two)
237
+ expect(Cheetah).to receive(:run).
238
+ with("vagrant", "ssh-config", "three", :stdout => :capture).
239
+ and_return(vagrant_ssh_config_output_three)
240
+
241
+ expect(subject.ssh_config(nil)).to eq(ssh_config_all)
242
+ end
243
+
244
+ it "ignores empty lines" do
245
+ expect(Cheetah).to receive(:run).
246
+ with("vagrant", "ssh-config", "empty-line", :stdout => :capture).
247
+ and_return(vagrant_ssh_config_output_empty_line)
248
+
249
+ expect(subject.ssh_config("empty-line")).to eq(ssh_config_empty_line)
250
+ end
251
+
252
+ it "ignores comments" do
253
+ expect(Cheetah).to receive(:run).
254
+ with("vagrant", "ssh-config", "comment", :stdout => :capture).
255
+ and_return(vagrant_ssh_config_output_comment)
256
+
257
+ expect(subject.ssh_config("comment")).to eq(ssh_config_comment)
258
+ end
259
+
260
+ it "ignores formatting variations" do
261
+ expect(Cheetah).to receive(:run).
262
+ with("vagrant", "ssh-config", "formatting", :stdout => :capture).
263
+ and_return(vagrant_ssh_config_output_formatting)
264
+
265
+ expect(subject.ssh_config("formatting")).to eq(ssh_config_formatting)
266
+ end
267
+
268
+ it "raises an exception when encountering an invalid line" do
269
+ expect(Cheetah).to receive(:run).
270
+ with("vagrant", "ssh-config", "invalid-line", :stdout => :capture).
271
+ and_return(vagrant_ssh_config_output_invalid_line)
272
+
273
+ expect {
274
+ subject.ssh_config("invalid-line")
275
+ }.to raise_error("Invalid line in SSH config: \"invalid\".")
276
+ end
277
+
278
+ it "raises an exception when the Host keyword is missing" do
279
+ expect(Cheetah).to receive(:run).
280
+ with("vagrant", "ssh-config", "missing-host", :stdout => :capture).
281
+ and_return(vagrant_ssh_config_output_missing_host)
282
+
283
+ expect {
284
+ subject.ssh_config("missing-host")
285
+ }.to raise_error("Missing Host keyword before HostName.")
286
+ end
287
+ end
288
+ end
data/spec/vm_spec.rb ADDED
@@ -0,0 +1,56 @@
1
+ # Copyright (c) 2013-2014 SUSE LLC
2
+ #
3
+ # This program is free software; you can redistribute it and/or
4
+ # modify it under the terms of version 3 of the GNU General Public License as
5
+ # published by the Free Software Foundation.
6
+ #
7
+ # This program is distributed in the hope that it will be useful,
8
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
+ # GNU General Public License for more details.
11
+ #
12
+ # You should have received a copy of the GNU General Public License
13
+ # along with this program; if not, contact SUSE LLC.
14
+ #
15
+ # To contact SUSE about this file by physical or electronic mail,
16
+ # you may find current contact information at www.suse.com
17
+
18
+ require "pennyworth/spec"
19
+
20
+ describe Pennyworth::VM do
21
+ let(:command_runner) { double(:run) }
22
+ let(:runner) { double(command_runner: command_runner) }
23
+ subject { Pennyworth::VM.new(runner) }
24
+
25
+ describe "#run_command" do
26
+ it "lets the CommandRunner run the command" do
27
+ expect(command_runner).to receive(:run)
28
+
29
+ subject.run_command("ls")
30
+ end
31
+ end
32
+
33
+ describe "#extract_file" do
34
+ it "lets the CommandRunner extract the file" do
35
+ expect(command_runner).to receive(:extract_file).with("/etc/hosts", "/tmp")
36
+
37
+ subject.extract_file("/etc/hosts", "/tmp")
38
+ end
39
+ end
40
+
41
+ describe "#inject_file" do
42
+ it "lets the CommandRunner inject the file" do
43
+ expect(command_runner).to receive(:inject_file).with("/tmp/hosts", "/etc", {})
44
+
45
+ subject.inject_file("/tmp/hosts", "/etc")
46
+ end
47
+ end
48
+
49
+ describe "#inject_directory" do
50
+ it "lets the CommandRunner inject the file" do
51
+ expect(command_runner).to receive(:inject_directory).with("/tmp/hosts", "/etc", {})
52
+
53
+ subject.inject_directory("/tmp/hosts", "/etc")
54
+ end
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,257 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pennyworth-tool
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - SUSE
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-05-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: gli
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 2.11.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 2.11.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: cheetah
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: nokogiri
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby-libvirt
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.4.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.4.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: ronn
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.7.3
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.7.3
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Pennyworth is a tool for running integration tests inside a network of
112
+ virtual machines. It allows to define virtual machines, build them as Vagrant boxes
113
+ and run them using libvirt and kvm in coordinated fashion in order to run the tests.
114
+ These tests can be written in any language/framework, but the preferred combination
115
+ is Ruby/RSpec, for which helpers are provided.
116
+ email:
117
+ - machinery@lists.suse.com
118
+ executables:
119
+ - pennyworth
120
+ extensions: []
121
+ extra_rdoc_files: []
122
+ files:
123
+ - ".gitignore"
124
+ - ".hound.yml"
125
+ - ".rspec"
126
+ - ".rubocop.yml"
127
+ - CONTRIBUTING.md
128
+ - COPYING
129
+ - Gemfile
130
+ - README.md
131
+ - Rakefile
132
+ - bin/pennyworth
133
+ - config/setup.yml
134
+ - examples/README.md
135
+ - examples/kiwi/definitions/base_opensuse13.1_kvm/config.sh
136
+ - examples/kiwi/definitions/base_opensuse13.1_kvm/config.xml
137
+ - examples/kiwi/definitions/base_opensuse13.1_kvm/root/etc/sysconfig/network/ifcfg-eth0
138
+ - examples/kiwi/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys
139
+ - examples/vagrant/Vagrantfile
140
+ - files/99-libvirt.rules
141
+ - files/image_test-template.xml
142
+ - files/pool-default.xml
143
+ - lib/image_runner.rb
144
+ - lib/pennyworth.rb
145
+ - lib/pennyworth/cli.rb
146
+ - lib/pennyworth/cli_host_controller.rb
147
+ - lib/pennyworth/commands/base_command.rb
148
+ - lib/pennyworth/commands/boot_command.rb
149
+ - lib/pennyworth/commands/build_base_command.rb
150
+ - lib/pennyworth/commands/command.rb
151
+ - lib/pennyworth/commands/down_command.rb
152
+ - lib/pennyworth/commands/import_base_command.rb
153
+ - lib/pennyworth/commands/import_ssh_keys_command.rb
154
+ - lib/pennyworth/commands/list_command.rb
155
+ - lib/pennyworth/commands/setup_command.rb
156
+ - lib/pennyworth/commands/shutdown_command.rb
157
+ - lib/pennyworth/commands/status_command.rb
158
+ - lib/pennyworth/commands/up_command.rb
159
+ - lib/pennyworth/exceptions.rb
160
+ - lib/pennyworth/helper.rb
161
+ - lib/pennyworth/host_config.rb
162
+ - lib/pennyworth/host_runner.rb
163
+ - lib/pennyworth/image_runner.rb
164
+ - lib/pennyworth/libvirt.rb
165
+ - lib/pennyworth/local_command_runner.rb
166
+ - lib/pennyworth/local_runner.rb
167
+ - lib/pennyworth/lock_service.rb
168
+ - lib/pennyworth/remote_command_runner.rb
169
+ - lib/pennyworth/runner.rb
170
+ - lib/pennyworth/settings.rb
171
+ - lib/pennyworth/spec.rb
172
+ - lib/pennyworth/spec_profiler.rb
173
+ - lib/pennyworth/ssh_keys_importer.rb
174
+ - lib/pennyworth/urls.rb
175
+ - lib/pennyworth/vagrant.rb
176
+ - lib/pennyworth/vagrant_command.rb
177
+ - lib/pennyworth/vagrant_runner.rb
178
+ - lib/pennyworth/version.rb
179
+ - lib/pennyworth/vm.rb
180
+ - man/.gitignore
181
+ - man/pennyworth.1.md
182
+ - pennyworth.gemspec
183
+ - prophet/Gemfile
184
+ - prophet/prophet.rb
185
+ - spec/base_command_spec.rb
186
+ - spec/build_base_command_spec.rb
187
+ - spec/cli_host_controller_spec.rb
188
+ - spec/data/hosts.yaml
189
+ - spec/data/kiwi/base_opensuse12.3_kvm.box
190
+ - spec/data/kiwi/base_opensuse13.1_kvm.box
191
+ - spec/data/kiwi/definitions/base_opensuse12.3_kvm/config.sh
192
+ - spec/data/kiwi/definitions/base_opensuse12.3_kvm/config.xml
193
+ - spec/data/kiwi/definitions/base_opensuse12.3_kvm/root/home/vagrant/.ssh/authorized_keys
194
+ - spec/data/kiwi/definitions/base_opensuse13.1_kvm/config.sh
195
+ - spec/data/kiwi/definitions/base_opensuse13.1_kvm/config.xml
196
+ - spec/data/kiwi/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys
197
+ - spec/data/kiwi2/box_state.yaml
198
+ - spec/data/kiwi2/definitions/base_opensuse12.3_kvm/config.sh
199
+ - spec/data/kiwi2/definitions/base_opensuse12.3_kvm/config.xml
200
+ - spec/data/kiwi2/definitions/base_opensuse12.3_kvm/root/home/vagrant/.ssh/authorized_keys
201
+ - spec/data/kiwi2/definitions/base_opensuse13.1_kvm/config.sh
202
+ - spec/data/kiwi2/definitions/base_opensuse13.1_kvm/config.xml
203
+ - spec/data/kiwi2/definitions/base_opensuse13.1_kvm/root/home/vagrant/.ssh/authorized_keys
204
+ - spec/data/kiwi3/box_state.yaml
205
+ - spec/data/kiwi3/definitions/base_opensuse12.3_kvm/.gitkeep
206
+ - spec/data/kiwi3/definitions/base_opensuse13.1_kvm/.gitkeep
207
+ - spec/data/kiwi3/import_state.yaml
208
+ - spec/data/kiwi4/definitions/base_opensuse12.3_kvm/.gitkeep
209
+ - spec/data/kiwi4/definitions/base_opensuse13.1_kvm/.gitkeep
210
+ - spec/data/kiwi4/import_state.yaml
211
+ - spec/data/kiwi5/import_state.yaml
212
+ - spec/data/vagrant/.gitkeep
213
+ - spec/host_config_spec.rb
214
+ - spec/host_runner_spec.rb
215
+ - spec/image_runner_spec.rb
216
+ - spec/import_base_command_spec.rb
217
+ - spec/local_command_runner_spec.rb
218
+ - spec/local_runner_spec.rb
219
+ - spec/lock_service_spec.rb
220
+ - spec/remote_command_runner_spec.rb
221
+ - spec/settings_spec.rb
222
+ - spec/setup_command_spec.rb
223
+ - spec/spec_helper.rb
224
+ - spec/spec_profiler_spec.rb
225
+ - spec/spec_spec.rb
226
+ - spec/support/command_runner_examples.rb
227
+ - spec/support/runner_examples.rb
228
+ - spec/urls_spec.rb
229
+ - spec/vagrant_command_spec.rb
230
+ - spec/vagrant_runner_spec.rb
231
+ - spec/vagrant_spec.rb
232
+ - spec/vm_spec.rb
233
+ homepage: https://github.com/SUSE/pennyworth
234
+ licenses:
235
+ - GPL-3.0
236
+ metadata: {}
237
+ post_install_message:
238
+ rdoc_options: []
239
+ require_paths:
240
+ - lib
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ required_rubygems_version: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: 1.3.6
251
+ requirements: []
252
+ rubyforge_project: pennyworth
253
+ rubygems_version: 2.2.2
254
+ signing_key:
255
+ specification_version: 4
256
+ summary: A tool for running integration tests inside a network of virtual machines
257
+ test_files: []