|
44 | 44 | tar.add_file('stemcell.MF', mode: '0644', mtime: 0) { |os, _| os.write(manifest.to_yaml) } |
45 | 45 | tar.add_file('image', mode: '0644', mtime: 0) { |os, _| os.write(stemcell_image_content) } |
46 | 46 | end |
47 | | - |
48 | 47 | io.close |
49 | 48 | end.string |
50 | 49 | ), |
51 | 50 | ) |
52 | 51 | end |
53 | 52 | end |
54 | 53 |
|
| 54 | + |
| 55 | + let(:runtime_config_manager) { instance_double(Bosh::Director::Api::RuntimeConfigManager) } |
| 56 | + let(:config) { instance_double(Bosh::Director::Models::Config) } |
| 57 | + let(:runtime_config_list) do |
| 58 | + [config] |
| 59 | + end |
| 60 | + |
55 | 61 | before do |
| 62 | + |
| 63 | + allow(Bosh::Director::Api::RuntimeConfigManager).to receive(:new).and_return(runtime_config_manager) |
| 64 | + allow(Bosh::Director::Models::Config).to receive(:new).and_return(config) |
| 65 | + allow(config).to receive(:to_hash).and_return({"tags" => {"any"=> "value"}}) |
| 66 | + allow(runtime_config_manager).to receive(:list).with(1, 'default').and_return(runtime_config_list) |
| 67 | + |
| 68 | + |
56 | 69 | allow(Bosh::Director::Config).to receive(:event_log).and_return(event_log) |
57 | 70 | allow(Bosh::Director::Config).to receive(:uuid).and_return('meow-uuid') |
58 | 71 | allow(Bosh::Director::Config).to receive(:cloud_options).and_return({'provider' => {'path' => '/path/to/default/cpi'}}) |
|
61 | 74 | 'meow-uuid', |
62 | 75 | instance_of(Logging::Logger), |
63 | 76 | stemcell_api_version: nil).and_return(cloud) |
| 77 | + |
64 | 78 | allow(cloud).to receive(:request_cpi_api_version=) |
65 | 79 | allow(cloud).to receive(:info).and_return('stemcell_formats' => ['dummy']) |
66 | 80 |
|
|
319 | 333 | expect(cloud3).to receive(:info).and_return('stemcell_formats' => ['dummy']) |
320 | 334 |
|
321 | 335 | expect(cloud_factory).to receive(:all_names).exactly(3).times.and_return(%w[cloud1 cloud2 cloud3]) |
322 | | - expect(cloud_factory).to receive(:get).with('cloud1').and_return(cloud1) |
323 | | - expect(cloud_factory).to receive(:get).with('cloud2').and_return(cloud2) |
324 | | - expect(cloud_factory).to receive(:get).with('cloud3').and_return(cloud3) |
| 336 | + expect(cloud_factory).to receive(:get).with('cloud1').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud1, 1)) |
| 337 | + expect(cloud_factory).to receive(:get).with('cloud2').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud2, 1)) |
| 338 | + expect(cloud_factory).to receive(:get).with('cloud3').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud3, 1)) |
325 | 339 |
|
326 | 340 | expected_steps = 11 |
327 | 341 | expect(event_log).to receive(:begin_stage).with('Update stemcell', expected_steps) |
|
369 | 383 | it 'skips creating a stemcell match when a CPI fails' do |
370 | 384 | expect(cloud1).to receive(:create_stemcell).with(anything, { 'ram' => '2gb' }).and_raise('I am flaky') |
371 | 385 | expect(cloud1).to receive(:info).and_return('stemcell_formats' => ['dummy']) |
372 | | - expect(cloud_factory).to receive(:get).with('cloud1').and_return(cloud1) |
| 386 | + expect(cloud_factory).to receive(:get).with('cloud1').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud1, 1)) |
373 | 387 | expect(cloud_factory).to receive(:all_names).exactly(3).times.and_return(['cloud1']) |
374 | 388 |
|
375 | 389 | expect { subject.perform }.to raise_error 'I am flaky' |
|
385 | 399 |
|
386 | 400 | it 'creates one stemcell and one stemcell match per cpi' do |
387 | 401 | expect(cloud_factory).to receive(:all_names).exactly(3).times.and_return(%w[cloud1 cloud2 cloud3]) |
388 | | - expect(cloud_factory).to receive(:get).with('cloud1').and_return(cloud1) |
389 | | - expect(cloud_factory).to receive(:get).with('cloud2').and_return(cloud2) |
390 | | - expect(cloud_factory).to receive(:get).with('cloud3').and_return(cloud3) |
| 402 | + expect(cloud_factory).to receive(:get).with('cloud1').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud1, 1)) |
| 403 | + expect(cloud_factory).to receive(:get).with('cloud2').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud2, 1)) |
| 404 | + expect(cloud_factory).to receive(:get).with('cloud3').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud3, 1)) |
391 | 405 |
|
392 | 406 | expect(cloud1).to receive(:info).and_return('stemcell_formats' => ['dummy']) |
393 | 407 | expect(cloud2).to receive(:info).and_return('stemcell_formats' => ['dummy1']) |
|
423 | 437 |
|
424 | 438 | expect(cloud_factory).to receive(:get_cpi_aliases).with('').and_return(['']) |
425 | 439 | expect(cloud_factory).to receive(:all_names).exactly(3).times.and_return(['']) |
426 | | - expect(cloud_factory).to receive(:get).with('').and_return(cloud) |
| 440 | + expect(cloud_factory).to receive(:get).with('').and_return(Bosh::Clouds::ExternalCpiResponseWrapper.new(cloud, 1)) |
427 | 441 |
|
428 | 442 | expected_steps = 5 |
429 | 443 | expect(event_log).to receive(:begin_stage).with('Update stemcell', expected_steps) |
|
0 commit comments