bosh_vcloud_cpi 0.4.8

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.
@@ -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