bosh_vcloud_cpi 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,30 @@
1
+ require "common/thread_pool"
2
+ require "common/thread_formatter"
3
+ require "uuidtools"
4
+ require "forwardable"
5
+
6
+ autoload :VCloudCloud, "cloud/vcloud/cloud"
7
+
8
+ module Bosh
9
+ module Clouds
10
+
11
+ class VCloud
12
+ extend Forwardable
13
+
14
+ def_delegators :@delegate,
15
+ :create_stemcell, :delete_stemcell,
16
+ :create_vm, :delete_vm, :reboot_vm,
17
+ :configure_networks,
18
+ :create_disk, :delete_disk,
19
+ :attach_disk, :detach_disk,
20
+ :validate_deployment
21
+
22
+ def initialize(options)
23
+ @delegate = VCloudCloud::Cloud.new(options)
24
+ end
25
+ end
26
+
27
+ Vcloud = VCloud # alias name for dynamic plugin loading
28
+ end
29
+
30
+ end
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: appcloud-17
3
+ target: http://localhost:25555
4
+ release:
5
+ name: appcloud
6
+ version: 17
7
+
8
+ network:
9
+ default:
10
+ ip: 192.168.130.66
11
+ netmask: 255.255.255.192
12
+ cloud_properties:
13
+ name: vcd-org-network
14
+ default:
15
+ - dns
16
+ - gateway
17
+ dns:
18
+ - 192.168.115.1
19
+ - 192.168.115.2
20
+ gateway: 192.168.130.126
21
+
22
+ networks:
23
+ - name: default
24
+ subnets:
25
+ - reserved:
26
+ - 192.168.130.90 - 192.168.130.94
27
+ static:
28
+ - 192.168.130.95 - 192.168.130.99
29
+ range: 192.168.130.64/26
30
+ gateway: 192.168.130.126
31
+ dns:
32
+ - 192.168.115.1
33
+ - 192.168.115.2
34
+ cloud_properties:
35
+ name: vcd-org-network
36
+ - name: dmz
37
+ subnets:
38
+ - static:
39
+ - 192.168.130.100 - 192.168.130.104
40
+ range: 192.168.130.64/26
41
+ dns:
42
+ - 192.168.115.1
43
+ - 192.168.115.2
44
+ cloud_properties:
45
+ name: vcd-org-network
46
+
47
+ resource_pools:
48
+ - name: small
49
+ stemcell:
50
+ name: bosh-stemcell
51
+ version: 0.2.24
52
+ network: default
53
+ size: 0
54
+ cloud_properties:
55
+ ram: 1024
56
+ disk: 4096
57
+ cpu: 1
58
+ - name: medium
59
+ stemcell:
60
+ name: bosh-stemcell
61
+ version: 0.2.24
62
+ network: default
63
+ size: 0
64
+ cloud_properties:
65
+ ram: 2048
66
+ disk: 4096
67
+ cpu: 2
68
+ - name: large
69
+ stemcell:
70
+ name: bosh-stemcell
71
+ version: 0.2.24
72
+ network: default
73
+ size: 0
74
+ cloud_properties:
75
+ ram: 8192
76
+ disk: 16384
77
+ cpu: 4
78
+ - name: deas
79
+ stemcell:
80
+ name: bosh-stemcell
81
+ version: 0.2.24
82
+ network: default
83
+ size: 1
84
+ cloud_properties:
85
+ ram: 16384
86
+ disk: 32768
87
+ cpu: 4
88
+
89
+ compilation:
90
+ workers: 1
91
+ network: default
92
+ cloud_properties:
93
+ ram: 2048
94
+ disk: 4048
95
+ cpu: 4
96
+
97
+ update:
98
+ canaries: 1
99
+ canary_watch_time: 60000
100
+ update_watch_time: 60000
101
+ max_in_flight: 1
102
+ max_errors: 1
103
+
104
+ jobs:
105
+
106
+ - name: dea
107
+ template: dea
108
+ instances: 1
109
+ resource_pool: deas
110
+ update:
111
+ max_in_flight: 2
112
+ networks:
113
+ - name: default
114
+
115
+ properties:
116
+ domain: ud-03.eng.vmware.com
117
+
118
+ env:
119
+ http_proxy: "http://10.16.67.187:3128"
120
+ https_proxy: "http://10.16.67.187:3128"
121
+ no_proxy: "localhost, 127.0.0.1"
122
+
123
+ networks:
124
+ apps: default
125
+ management: default
126
+
127
+ nats:
128
+ user: nats
129
+ password: 0b450ada9f830085e2cdeff6
130
+ address: 192.168.130.68
131
+ port: 4222
132
+
133
+ ccdb:
134
+ user: root
135
+ password: a7a33139c8e3f34bc201351b
136
+ address: 192.168.130.105
137
+ port: 2544
138
+ dbname: appcloud
139
+
140
+ cc:
141
+ srv_api_uri: http://localhost
142
+ password: 34d39fe37c9933d46d1d294e6233195b55838871a59287fd534b6ea7ed77
143
+ token: 67d1269e92783716cc9d63703cf6451287540d60014b457243fedf4e0f68
144
+ local_register_only: false
145
+ admins:
146
+ - foo@eng.vmware.com
147
+
148
+ dea:
149
+ max_memory: 8192
150
+
151
+ nfs_server:
152
+ address: 192.168.130.106
153
+ network: 192.168.130.64/26
154
+
155
+ mysql_gateway:
156
+ token: 63943e597947eba06b2f5cfa233c73099eb42bb390d93be2cf75f46f2bcb
157
+ mysql_node:
158
+ available_storage: 4096
159
+ max_db_size: 20
160
+ password: efcaa7bef3023e03f181b47b
161
+ production: true
162
+
163
+ rabbit_gateway:
164
+ token: 058e1a6398cbe0113e16c0f2f80251da03f46d5fb6fee1361913eda3e516
165
+ rabbit_node:
166
+ available_memory: 4096
167
+ max_memory: 4096
168
+
169
+ redis_gateway:
170
+ token: 2859854d27ecd84af53b05d2fe28515cafad6713d23a862832ab83acd967
171
+ redis_node:
172
+ available_memory: 4096
173
+
174
+ mongodb_gateway:
175
+ token: ed586c58cfb2fbb74f775ec00290965415e5097f68b2f50d2bcef7f09fc6
176
+ mongodb_node:
177
+ available_memory: 4096
178
+
179
+ rabbit_node:
180
+ available_memory: 4096
181
+ max_memory: 4096
182
+ rabbit_gateway:
183
+ token: e188ee08396cdf25ff04ea0b8aee49d3d0ceb1c041ddf7d44391d0c3b409
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: test-director
3
+ port: 25555
4
+ logging:
5
+ level: DEBUG
6
+ file: /var/vcap/deploy/bosh/director/shared/logs/director.debug.log
7
+ redis:
8
+ host: 10.147.0.0
9
+ port: 25255
10
+ password: R3d!S
11
+ mbus: nats://bosh:b0$H@10.147.0.0:4222
12
+ dir: /var/vcap/deploy/bosh/director/shared/system
13
+ max_tasks: 10
14
+ db:
15
+ database: postgres://bosh:b0$H@10.147.0.0/bosh
16
+ max_connections: 32
17
+ pool_timeout: 10
18
+ blobstore:
19
+ plugin: simple
20
+ properties:
21
+ endpoint: http://10.147.0.0:25250
22
+ user: director
23
+ password: d!r3ct0r
24
+ cloud:
25
+ plugin: vcd
26
+ properties:
27
+ agent:
28
+ ntp:
29
+ - ntp01.las01.emcatmos.com
30
+ blobstore:
31
+ plugin: simple
32
+ properties:
33
+ endpoint: http://10.147.0.0:25250
34
+ user: agent
35
+ password: Ag3Nt
36
+ mbus: nats://bosh:b0$H@10.147.0.0:4222
37
+ vcds:
38
+ - url: https://10.147.0.0:8443
39
+ user: cfadmin
40
+ password: akimbi
41
+ entities:
42
+ organization: cf-org
43
+ virtual_datacenter: cf-vdc
44
+ vapp_catalog: cf-catalog
45
+ media_catalog: cf-catalog
46
+ vm_metadata_key: cf-agent-env
47
+ description: vcd-cf
48
+ control:
49
+ retries:
50
+ default: 5
51
+ upload_vapp_files: 7
52
+ cpi: 1
53
+ delay: 1
54
+ time_limit_sec:
55
+ default: 120
56
+ delete_vapp_template: 120
57
+ delete_vapp: 120
58
+ delete_media: 120
59
+ instantiate_vapp_template: 300
60
+ power_on: 600
61
+ power_off: 600
62
+ undeploy: 720
63
+ process_descriptor_vapp_template: 300
64
+ http_request: 240
65
+ backoff: 2
66
+ rest_throttle:
67
+ min: 0
68
+ max: 1
69
+ debug:
70
+ delete_vapp: true
71
+ testing:
72
+ cookies: fake-cookie
73
+ log_file: /tmp/vcd-cpi-test/debug
Binary file
@@ -0,0 +1,135 @@
1
+ $:.unshift(File.expand_path("..", __FILE__))
2
+ $:.unshift(File.join(File.dirname(__FILE__), '.'))
3
+ $:.unshift(File.join(File.dirname(__FILE__), '../lib/cloud'))
4
+ $:.unshift(File.join(File.dirname(__FILE__), 'unit'))
5
+
6
+ require 'yaml'
7
+ require 'vcloud'
8
+
9
+
10
+ module VCloudCloud
11
+ module Test
12
+ class << self
13
+ def spec_asset(filename)
14
+ File.expand_path(File.join(File.dirname(__FILE__), "assets", filename))
15
+ end
16
+
17
+ def test_configuration
18
+ @@test_config ||= YAML.load_file(spec_asset("test-director-config.yml"))
19
+ end
20
+
21
+ def vcd_settings
22
+ @@settings ||= get_vcd_settings
23
+ end
24
+
25
+ def director_cloud_properties
26
+ test_configuration["cloud"]["properties"]
27
+ end
28
+
29
+ def get_vcd_settings
30
+ vcds = director_cloud_properties["vcds"]
31
+ raise "Invalid number of VCDs" unless vcds.size == 1
32
+ vcds[0]
33
+ end
34
+
35
+ def test_deployment_manifest
36
+ @@test_manifest ||=
37
+ YAML.load_file(spec_asset("test-deployment-manifest.yml"))
38
+ end
39
+
40
+ def generate_unique_name
41
+ UUIDTools::UUID.random_create.to_s
42
+ end
43
+
44
+ def compare_xml(a, b)
45
+ a.diff(b) do |change, node|
46
+ # ' ' Means no difference. '+' means addition and '-' means deletion.
47
+ return false if change != ' ' && node.to_s.strip().length != 0
48
+ end
49
+ true
50
+ end
51
+
52
+ def rest_logger(logger)
53
+ rest_log_filename = File.join(File.dirname(
54
+ logger.instance_eval { @logdev }.dev.path), "rest")
55
+ log_file = File.open(rest_log_filename, "w")
56
+ log_file.sync = true
57
+ rest_logger = Logger.new(log_file || STDOUT)
58
+ rest_logger.level = logger.level
59
+ rest_logger.formatter = logger.formatter
60
+ def rest_logger.<<(str)
61
+ self.debug(str.chomp)
62
+ end
63
+ rest_logger
64
+ end
65
+
66
+ end
67
+ end
68
+
69
+ end
70
+
71
+
72
+
73
+ module VCloudSdk
74
+ class CloudError < RuntimeError; end
75
+
76
+ class VappSuspendedError < CloudError; end
77
+ class VmSuspendedError < CloudError; end
78
+ class VappPoweredOffError < CloudError; end
79
+
80
+ class ObjectNotFoundError < CloudError; end
81
+
82
+ class DiskNotFoundError < ObjectNotFoundError; end
83
+ class CatalogMediaNotFoundError < ObjectNotFoundError; end
84
+
85
+ class ApiError < CloudError; end
86
+
87
+ class ApiRequestError < ApiError; end
88
+ class ApiTimeoutError < ApiError; end
89
+ end
90
+
91
+
92
+ module VCloudSdk
93
+ class Config
94
+ class << self
95
+ def configure(config)
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+
102
+
103
+ module Kernel
104
+
105
+ def with_thread_name(name)
106
+ old_name = Thread.current[:name]
107
+ Thread.current[:name] = name
108
+ yield
109
+ ensure
110
+ Thread.current[:name] = old_name
111
+ end
112
+
113
+ end
114
+
115
+ RSpec.configure do |c|
116
+ c.treat_symbols_as_metadata_keys_with_true_values = true # for RSpec-3
117
+ c.filter_run :all
118
+ end
119
+
120
+
121
+
122
+ module Bosh
123
+ module Clouds
124
+ class Config
125
+ class << self
126
+ def logger()
127
+ logger = Logger.new(VCloudCloud::Test::test_configuration[
128
+ "cloud"]["properties"]["log_file"])
129
+ logger.level = Logger::DEBUG
130
+ logger
131
+ end
132
+ end
133
+ end
134
+ end
135
+ end