opsmgr 0.27.0 → 0.28.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/lib/opsmgr/bosh_command_runner.rb +57 -0
- data/lib/opsmgr/cmd/bosh_command.rb +2 -2
- data/lib/opsmgr/errand_runner.rb +31 -40
- data/lib/opsmgr/tasks/bosh.rake +23 -0
- data/lib/opsmgr/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e4c3ef7cacf13a2ef564b5d3311f2c884ccc19c
|
4
|
+
data.tar.gz: 11a3a3f6e645425cc1d6cb1cde728bf1a04b0e83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 355a82586a8608b80bfaddabe496edb63c7d3536a077f563ceac99f9f4a31a6976d3964515eaee701c2202b3bf0858394a1ae9774dbc92033d3aa51ded20ca30
|
7
|
+
data.tar.gz: 6d6d1cc2c0d3cebd5dc5d4ec77338f691ca10de8211ca43bf73141b98994346c815956eb1079ac63018e31a2aedfd4de468e7ffb2892e099d511b821565e6c5a
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Opsmgr
|
2
|
+
class BoshCommandRunner
|
3
|
+
def initialize(iaas_gateway:, bosh_command:, logger:)
|
4
|
+
@iaas_gateway = iaas_gateway
|
5
|
+
@bosh_command = bosh_command
|
6
|
+
@logger = logger
|
7
|
+
end
|
8
|
+
|
9
|
+
def run(command)
|
10
|
+
iaas_gateway.gateway do
|
11
|
+
system_or_fail(
|
12
|
+
"#{bosh_command_prefix} #{command}",
|
13
|
+
"bosh #{command} failed"
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def run_and_capture_output(command)
|
19
|
+
iaas_gateway.gateway do
|
20
|
+
capture_output_or_fail(
|
21
|
+
"#{bosh_command_prefix} #{command}",
|
22
|
+
"bosh #{command} failed"
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def system_or_fail(command, failure_message)
|
30
|
+
logger.info("Running #{command}")
|
31
|
+
Bundler.clean_system(command) || fail(failure_message)
|
32
|
+
end
|
33
|
+
|
34
|
+
def capture_output_or_fail(command, failure_message)
|
35
|
+
logger.info("Running #{command}")
|
36
|
+
Bundler.with_clean_env do
|
37
|
+
output, status = Open3.capture2(command)
|
38
|
+
fail(failure_message) unless status.success?
|
39
|
+
output
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def bosh_command_prefix
|
44
|
+
@bosh_command_prefix ||= bosh_command.command
|
45
|
+
end
|
46
|
+
|
47
|
+
attr_reader :iaas_gateway, :bosh_command, :logger
|
48
|
+
end
|
49
|
+
end
|
50
|
+
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
51
|
+
# All rights reserved.
|
52
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
53
|
+
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
54
|
+
# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
55
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
56
|
+
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
57
|
+
# USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -173,7 +173,7 @@ module Opsmgr
|
|
173
173
|
'ubuntu',
|
174
174
|
password: 'tempest'
|
175
175
|
).open(director_ip, 25_555, 25_555) do |_|
|
176
|
-
logger.info("Opened tunnel to
|
176
|
+
logger.info("Opened tunnel to Director at #{director_ip}")
|
177
177
|
block.call
|
178
178
|
end
|
179
179
|
end
|
@@ -187,7 +187,7 @@ module Opsmgr
|
|
187
187
|
'ubuntu',
|
188
188
|
key_data: [ssh_key]
|
189
189
|
).open(director_ip, 25_555, 25_555) do |_|
|
190
|
-
logger.info("Opened tunnel to
|
190
|
+
logger.info("Opened tunnel to Director at #{director_ip}")
|
191
191
|
block.call
|
192
192
|
end
|
193
193
|
end
|
data/lib/opsmgr/errand_runner.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'opsmgr/
|
1
|
+
require 'opsmgr/bosh_command_runner'
|
2
2
|
require 'open3'
|
3
3
|
|
4
4
|
module Opsmgr
|
@@ -6,63 +6,54 @@ module Opsmgr
|
|
6
6
|
def initialize(iaas_gateway:, bosh_command:, environment_name:, logger:, product_name:, errand_name:, download_logs:)
|
7
7
|
@iaas_gateway = iaas_gateway
|
8
8
|
@bosh_command = bosh_command
|
9
|
-
@
|
9
|
+
@environment_name = environment_name
|
10
10
|
@logger = logger
|
11
11
|
@product_name = product_name
|
12
12
|
@errand_name = errand_name
|
13
13
|
@download_logs = download_logs ? "--download-logs" : ""
|
14
|
+
|
15
|
+
@bosh_command_runner = Opsmgr::BoshCommandRunner.new(
|
16
|
+
iaas_gateway: @iaas_gateway,
|
17
|
+
bosh_command: @bosh_command,
|
18
|
+
logger: @logger
|
19
|
+
)
|
14
20
|
end
|
15
21
|
|
16
22
|
def run_errand
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
"#{bosh_command_prefix} run errand #{@errand_name} #{@download_logs}",
|
22
|
-
"Errand #{@errand_name} failed"
|
23
|
-
)
|
23
|
+
deployments_output = begin
|
24
|
+
@bosh_command_runner.run_and_capture_output('deployments')
|
25
|
+
rescue RuntimeError
|
26
|
+
raise 'bosh deployments failed'
|
24
27
|
end
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
28
|
|
29
|
-
|
30
|
-
system_or_fail(bosh_command.target, 'bosh target failed')
|
29
|
+
/#{@product_name}-[0-9a-f]{8,}/.match(deployments_output)
|
31
30
|
|
32
|
-
bosh_deployment =
|
31
|
+
bosh_deployment = $&
|
33
32
|
|
34
|
-
|
33
|
+
fail 'Deployment not found' if bosh_deployment.nil?
|
35
34
|
|
36
|
-
|
37
|
-
"#{bosh_command_prefix} -n download manifest #{bosh_deployment} #{deployment_file}",
|
38
|
-
'bosh download manifest failed'
|
39
|
-
)
|
40
|
-
system_or_fail(
|
41
|
-
"#{bosh_command_prefix} deployment #{deployment_file}",
|
42
|
-
'bosh deployment failed'
|
43
|
-
)
|
44
|
-
end
|
35
|
+
deployment_file = "#{ENV.fetch('TMPDIR', '/tmp')}/#{environment_name}.yml"
|
45
36
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
37
|
+
begin
|
38
|
+
@bosh_command_runner.run(
|
39
|
+
"-n download manifest #{bosh_deployment} #{deployment_file}"
|
40
|
+
)
|
41
|
+
rescue RuntimeError
|
42
|
+
raise 'bosh download manifest failed'
|
43
|
+
end
|
50
44
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
end
|
45
|
+
begin
|
46
|
+
@bosh_command_runner.run(
|
47
|
+
"-d #{deployment_file} run errand #{@errand_name} #{@download_logs}"
|
48
|
+
)
|
49
|
+
rescue RuntimeError
|
50
|
+
raise "Errand #{@errand_name} failed"
|
58
51
|
end
|
59
52
|
end
|
60
53
|
|
61
|
-
|
62
|
-
@bosh_command_prefix ||= bosh_command.command
|
63
|
-
end
|
54
|
+
private
|
64
55
|
|
65
|
-
attr_reader :
|
56
|
+
attr_reader :bosh_command, :environment_name, :logger, :product_name, :errand_name, :download_logs
|
66
57
|
end
|
67
58
|
end
|
68
59
|
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
data/lib/opsmgr/tasks/bosh.rake
CHANGED
@@ -59,6 +59,29 @@ namespace :opsmgr do
|
|
59
59
|
end
|
60
60
|
system('ls *bosh*.tgz > stemcell_reference.txt')
|
61
61
|
end
|
62
|
+
|
63
|
+
desc 'run a bosh command'
|
64
|
+
task :run_command, [:environment_name, :om_version, :command] do |_, args|
|
65
|
+
require 'opsmgr/cmd/bosh_command'
|
66
|
+
require 'opsmgr/log'
|
67
|
+
require 'opsmgr/bosh_command_runner'
|
68
|
+
|
69
|
+
logger = Opsmgr.logger_for('Rake')
|
70
|
+
bosh_command = Opsmgr::Cmd::BoshCommand.new(
|
71
|
+
env_name: args.environment_name,
|
72
|
+
om_version: args.om_version
|
73
|
+
)
|
74
|
+
iaas_gateway = Opsmgr::Cmd::IaasGateway.new(
|
75
|
+
bosh_command: bosh_command,
|
76
|
+
environment_name: args.environment_name,
|
77
|
+
logger: logger
|
78
|
+
)
|
79
|
+
Opsmgr::BoshCommandRunner.new(
|
80
|
+
iaas_gateway: iaas_gateway,
|
81
|
+
bosh_command: bosh_command,
|
82
|
+
logger: logger
|
83
|
+
).run(args.command)
|
84
|
+
end
|
62
85
|
end
|
63
86
|
# Copyright (c) 2014-2015 Pivotal Software, Inc.
|
64
87
|
# All rights reserved.
|
data/lib/opsmgr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opsmgr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Release Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- lib/opsmgr/api/http_client.rb
|
292
292
|
- lib/opsmgr/api/results.rb
|
293
293
|
- lib/opsmgr/api/version20/endpoints.rb
|
294
|
+
- lib/opsmgr/bosh_command_runner.rb
|
294
295
|
- lib/opsmgr/cmd/bosh_command.rb
|
295
296
|
- lib/opsmgr/cmd/ops_manager.rb
|
296
297
|
- lib/opsmgr/environments.rb
|