bosh_cpi 1.2859.0 → 1.2862.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/cloud/external_cpi.rb +35 -39
- data/lib/cloud/provider.rb +4 -4
- data/lib/cloud/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4688fc1dc7da04093348f17a90759ac63fa9408
|
|
4
|
+
data.tar.gz: 047750a4f42639e735b06e888673a4d385229966
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 22b2b9c964783df0ad18968236d6178857edde58f64666f194681a7fd42a0eb66d3289b6e9b3f0b2c459e89c5852107b34999fe29f999875ca8d936ec564dc3a
|
|
7
|
+
data.tar.gz: 5410092f3a0fcfa3952578b9a6837b1a23bb5c78de0f5e8a250b51a8d9736526b48327ee687a43f72bd9e2bc0c0ab60488effd77d32988dbfbe171aa4fbb5cc2
|
data/lib/cloud/external_cpi.rb
CHANGED
|
@@ -26,27 +26,6 @@ module Bosh::Clouds
|
|
|
26
26
|
Bosh::Clouds::VMCreationFailed
|
|
27
27
|
).freeze
|
|
28
28
|
|
|
29
|
-
KNOWN_RPC_METHODS = %w(
|
|
30
|
-
current_vm_id
|
|
31
|
-
create_stemcell
|
|
32
|
-
delete_stemcell
|
|
33
|
-
create_vm
|
|
34
|
-
delete_vm
|
|
35
|
-
has_vm?
|
|
36
|
-
reboot_vm
|
|
37
|
-
set_vm_metadata
|
|
38
|
-
configure_networks
|
|
39
|
-
create_disk
|
|
40
|
-
has_disk?
|
|
41
|
-
delete_disk
|
|
42
|
-
attach_disk
|
|
43
|
-
detach_disk
|
|
44
|
-
snapshot_disk
|
|
45
|
-
delete_snapshot
|
|
46
|
-
get_disks
|
|
47
|
-
ping
|
|
48
|
-
).freeze
|
|
49
|
-
|
|
50
29
|
RESPONSE_SCHEMA = Membrane::SchemaParser.parse do
|
|
51
30
|
{
|
|
52
31
|
'result' => any,
|
|
@@ -66,9 +45,29 @@ module Bosh::Clouds
|
|
|
66
45
|
@logger = Config.logger
|
|
67
46
|
end
|
|
68
47
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
48
|
+
def current_vm_id(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
49
|
+
def create_stemcell(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
50
|
+
def delete_stemcell(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
51
|
+
def create_vm(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
52
|
+
def delete_vm(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
53
|
+
def has_vm?(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
54
|
+
def reboot_vm(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
55
|
+
def set_vm_metadata(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
56
|
+
def configure_networks(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
57
|
+
def create_disk(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
58
|
+
def has_disk?(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
59
|
+
def delete_disk(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
60
|
+
def attach_disk(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
61
|
+
def detach_disk(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
62
|
+
def snapshot_disk(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
63
|
+
def delete_snapshot(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
64
|
+
def get_disks(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
65
|
+
def ping(*arguments); invoke_cpi_method(__method__.to_s, *arguments); end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def invoke_cpi_method(method_name, *arguments)
|
|
70
|
+
request = JSON.dump({
|
|
72
71
|
'method' => method_name.gsub(/\?$/,''),
|
|
73
72
|
'arguments' => arguments,
|
|
74
73
|
'context' => {
|
|
@@ -76,28 +75,25 @@ module Bosh::Clouds
|
|
|
76
75
|
}
|
|
77
76
|
})
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
env = {'PATH' => '/usr/sbin:/usr/bin:/sbin:/bin', 'TMPDIR' => ENV['TMPDIR']}
|
|
79
|
+
cpi_exec_path = checked_cpi_exec_path
|
|
81
80
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
@logger.debug("External CPI sending request: #{request} with command: #{cpi_exec_path}")
|
|
82
|
+
cpi_response, stderr, exit_status = Open3.capture3(env, cpi_exec_path, stdin_data: request, unsetenv_others: true)
|
|
83
|
+
@logger.debug("External CPI got response: #{cpi_response}, err: #{stderr}, exit_status: #{exit_status}")
|
|
85
84
|
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
parsed_response = parsed_response(cpi_response)
|
|
86
|
+
validate_response(parsed_response)
|
|
88
87
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
if parsed_response['error']
|
|
89
|
+
handle_error(parsed_response['error'])
|
|
90
|
+
end
|
|
92
91
|
|
|
93
|
-
|
|
92
|
+
save_cpi_log(parsed_response['log'])
|
|
94
93
|
|
|
95
|
-
|
|
96
|
-
end
|
|
94
|
+
parsed_response['result']
|
|
97
95
|
end
|
|
98
96
|
|
|
99
|
-
private
|
|
100
|
-
|
|
101
97
|
def checked_cpi_exec_path
|
|
102
98
|
unless File.executable?(@cpi_path)
|
|
103
99
|
raise NonExecutable, "Failed to run cpi: `#{@cpi_path}' is not executable"
|
data/lib/cloud/provider.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
module Bosh::Clouds
|
|
2
2
|
class Provider
|
|
3
3
|
def self.create(cloud_config, director_uuid)
|
|
4
|
-
if cloud_config.has_key?('
|
|
5
|
-
ExternalCpiProvider.create(cloud_config['
|
|
4
|
+
if cloud_config.has_key?('provider')
|
|
5
|
+
ExternalCpiProvider.create(cloud_config['provider']['path'], director_uuid)
|
|
6
6
|
else
|
|
7
7
|
PluginCloudProvider.create(cloud_config['plugin'], cloud_config['properties'])
|
|
8
8
|
end
|
|
@@ -24,8 +24,8 @@ module Bosh::Clouds
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
class ExternalCpiProvider
|
|
27
|
-
def self.create(
|
|
28
|
-
ExternalCpi.new(
|
|
27
|
+
def self.create(cpi_job_path, director_uuid)
|
|
28
|
+
ExternalCpi.new(cpi_job_path, director_uuid)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
data/lib/cloud/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bosh_cpi
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2862.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- VMware
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-03-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bosh_common
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 1.
|
|
19
|
+
version: 1.2862.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 1.
|
|
26
|
+
version: 1.2862.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: membrane
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -54,7 +54,7 @@ dependencies:
|
|
|
54
54
|
version: 1.8.2
|
|
55
55
|
description: |-
|
|
56
56
|
BOSH CPI
|
|
57
|
-
|
|
57
|
+
c8ad5c
|
|
58
58
|
email: support@cloudfoundry.com
|
|
59
59
|
executables: []
|
|
60
60
|
extensions: []
|