bosh_cpi 1.2859.0 → 1.2862.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|