azure 0.6.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.txt +7 -1
- data/README.md +32 -0
- data/lib/azure/version.rb +1 -1
- data/lib/azure/virtual_machine_image_management/serialization.rb +3 -0
- data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +1 -1
- data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +5 -0
- data/lib/azure/virtual_machine_management/serialization.rb +179 -63
- data/lib/azure/virtual_machine_management/virtual_machine.rb +1 -0
- data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +206 -40
- data/test/fixtures/list_images.xml +1 -1
- data/test/fixtures/virtual_machine.xml +5 -0
- data/test/integration/vm/VM_Create_test.rb +46 -44
- data/test/integration/vm/VM_Delete_test.rb +19 -19
- data/test/integration/vm/VM_Operations_test.rb +174 -0
- data/test/support/virtual_machine_name_generator.rb +19 -34
- data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +8 -3
- data/test/unit/virtual_machine_management/serialization_test.rb +127 -40
- data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +205 -153
- metadata +3 -4
- data/test/integration/vm/VM_List_test.rb +0 -71
- data/test/integration/vm/VM_ShutDown_test.rb +0 -59
@@ -4,7 +4,7 @@
|
|
4
4
|
<Category>RightScale with Linux</Category>
|
5
5
|
<Label>RightImage CentOS 6.2 x64 v5.8.8.1</Label>
|
6
6
|
<LogicalSizeInGB>10</LogicalSizeInGB>
|
7
|
-
<Name>
|
7
|
+
<Name>RightImage-CentOS-6.2-x64-v5.8.8.1</Name>
|
8
8
|
<OS>Linux</OS>
|
9
9
|
<Eula>http://support.rightscale.com/12-Guides/RightLink/RightLink_End_User_License_Agreeement;http://www.rightscale.com/privacy_policy.php</Eula>
|
10
10
|
<Description>CentOS 6.3 with RightLink 5.8.</Description>
|
@@ -105,4 +105,9 @@ kZS1mYWNlNSI+DQogICAgPEluc3RhbmNlcyBjb3VudD0iMSIgLz4NCiAgPC9Sb2xlPg0KPC9TZXJ2aWN
|
|
105
105
|
<EndTime>2013-04-13T08:00:00Z</EndTime>
|
106
106
|
<Status>PersistentVMUpdateCompleted</Status>
|
107
107
|
</PersistentVMDowntime>
|
108
|
+
<VirtualIPs>
|
109
|
+
<VirtualIP>
|
110
|
+
<Address>137.116.17.187</Address>
|
111
|
+
</VirtualIP>
|
112
|
+
</VirtualIPs>
|
108
113
|
</Deployment>
|
@@ -61,106 +61,107 @@ describe Azure::VirtualMachineManagementService do
|
|
61
61
|
}
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
64
|
before do
|
66
65
|
Loggerx.expects(:puts).returns(nil).at_least(0)
|
67
|
-
|
68
66
|
end
|
69
67
|
|
70
68
|
describe '#deployment' do
|
71
69
|
|
72
70
|
it 'should set options hash with valid cloud_service_name, deployment_name, storage_account_name and virtual network' do
|
73
|
-
|
71
|
+
csn = options[:cloud_service_name]
|
74
72
|
options[:availability_set_name] = 'aval-set-test'
|
75
|
-
subject.create_virtual_machine(params, options, false)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
virtual_machine.availability_set_name.must_equal 'aval-set-test'
|
73
|
+
vm = subject.create_virtual_machine(params, options, false)
|
74
|
+
vm.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
75
|
+
vm.cloud_service_name.wont_be_nil
|
76
|
+
vm.vm_name.must_equal virtual_machine_name
|
77
|
+
vm.deployment_name.wont_be_nil
|
78
|
+
vm.deployment_name.must_equal vm.cloud_service_name
|
79
|
+
vm.os_type.must_equal 'Linux'
|
80
|
+
vm.role_size.must_equal 'Small'
|
81
|
+
vm.availability_set_name.must_equal 'aval-set-test'
|
85
82
|
options[:storage_account_name].wont_be_nil
|
86
|
-
assert_match(/^#{params[:vm_name] + '-service'}*/,
|
83
|
+
assert_match(/^#{params[:vm_name] + '-service'}*/, csn)
|
87
84
|
# Test for add role
|
88
85
|
params[:vm_name] = 'test-add-role-vm'
|
89
86
|
options[:ssh_port] = 2222
|
90
87
|
vm = subject.create_virtual_machine(params, options, true)
|
91
|
-
vm.cloud_service_name.must_equal
|
88
|
+
vm.cloud_service_name.must_equal csn
|
92
89
|
vm.vm_name.must_equal params[:vm_name]
|
93
|
-
|
94
|
-
|
90
|
+
vm.deployment_name.wont_be_nil
|
91
|
+
vm.os_type.must_equal 'Linux'
|
95
92
|
end
|
96
93
|
|
97
94
|
it 'should creates http and https enabled winrm virtual machine without certificate.' do
|
98
95
|
default_options.merge!(winrm_transport: %w(https http))
|
99
|
-
subject.create_virtual_machine(windows_params, default_options)
|
100
|
-
result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
|
96
|
+
result = subject.create_virtual_machine(windows_params, default_options)
|
101
97
|
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
102
|
-
assert_equal(result.os_type, 'Windows'
|
98
|
+
assert_equal(result.os_type, 'Windows')
|
103
99
|
tcp_endpoints_names = []
|
104
100
|
result.tcp_endpoints.each do |tcp_endpoint|
|
105
|
-
tcp_endpoints_names << tcp_endpoint[
|
101
|
+
tcp_endpoints_names << tcp_endpoint[:name]
|
106
102
|
end
|
107
|
-
tcp_endpoints_names.must_include '
|
103
|
+
tcp_endpoints_names.must_include 'PowerShell'
|
108
104
|
tcp_endpoints_names.must_include 'WinRm-Http'
|
109
105
|
sleep 30
|
110
106
|
end
|
111
107
|
|
112
108
|
it 'should creates https enabled winrm virtual machine using certificate.' do
|
113
|
-
default_options.merge!(
|
114
|
-
|
115
|
-
|
109
|
+
default_options.merge!(
|
110
|
+
winrm_transport: ['https'],
|
111
|
+
private_key_file: private_key,
|
112
|
+
certificate_file: certificate
|
113
|
+
)
|
114
|
+
result = subject.create_virtual_machine(windows_params, default_options)
|
116
115
|
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
117
|
-
assert_equal(result.os_type, 'Windows'
|
116
|
+
assert_equal(result.os_type, 'Windows')
|
118
117
|
tcp_endpoints_names = []
|
119
118
|
result.tcp_endpoints.each do |tcp_endpoint|
|
120
|
-
tcp_endpoints_names << tcp_endpoint[
|
119
|
+
tcp_endpoints_names << tcp_endpoint[:name]
|
121
120
|
end
|
122
|
-
tcp_endpoints_names.must_include '
|
121
|
+
tcp_endpoints_names.must_include 'PowerShell'
|
123
122
|
end
|
124
123
|
|
125
124
|
it 'should creates windows virtual machine without winrm.' do
|
126
125
|
default_options.merge!(winrm_transport: ['none'])
|
127
|
-
subject.create_virtual_machine(windows_params, default_options)
|
128
|
-
result = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
|
126
|
+
result = subject.create_virtual_machine(windows_params, default_options)
|
129
127
|
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
130
|
-
assert_equal(result.os_type, 'Windows'
|
128
|
+
assert_equal(result.os_type, 'Windows')
|
131
129
|
tcp_endpoints_names = []
|
132
130
|
result.tcp_endpoints.each do |tcp_endpoint|
|
133
131
|
tcp_endpoints_names << tcp_endpoint['Name']
|
134
132
|
end
|
135
|
-
assert
|
136
|
-
assert
|
133
|
+
assert !tcp_endpoints_names.include?('PowerShell')
|
134
|
+
assert !tcp_endpoints_names.include?('WinRm-Http')
|
137
135
|
end
|
138
136
|
|
139
137
|
it 'created linux virtual machine should be accessible using password and certificate' do
|
140
|
-
default_options.merge!(
|
141
|
-
|
142
|
-
|
138
|
+
default_options.merge!(
|
139
|
+
private_key_file: private_key,
|
140
|
+
certificate_file: certificate
|
141
|
+
)
|
142
|
+
result = subject.create_virtual_machine(params, default_options)
|
143
143
|
result.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
144
|
-
assert_equal(result.os_type, 'Linux'
|
144
|
+
assert_equal(result.os_type, 'Linux')
|
145
145
|
sleep 30
|
146
146
|
end
|
147
147
|
|
148
|
-
it 'throws
|
148
|
+
it 'throws error as port value is beyond or less than actual range' do
|
149
149
|
default_options.merge!(tcp_endpoints: '80,166535:166535')
|
150
150
|
msg = subject.create_virtual_machine(params, default_options)
|
151
|
-
|
151
|
+
error_msg = "invalid. Allowed values are 'a number between 1 to 65535'."
|
152
|
+
assert_match(/#{error_msg}/i, msg)
|
152
153
|
|
153
154
|
default_options.merge!(tcp_endpoints: '80,0:0')
|
154
155
|
msg = subject.create_virtual_machine(params, default_options)
|
155
|
-
assert_match(/
|
156
|
-
|
156
|
+
assert_match(/#{error_msg}/i, msg)
|
157
157
|
cloud_service.delete_cloud_service(cloud_service_name)
|
158
158
|
end
|
159
159
|
|
160
160
|
it 'throws error when multiple VMs created under same DNS' do
|
161
161
|
subject.create_virtual_machine(params, default_options)
|
162
162
|
msg = subject.create_virtual_machine(windows_params, default_options)
|
163
|
-
|
163
|
+
error_msg = 'The specified deployment slot Production is occupied.'
|
164
|
+
assert_match(/#{error_msg}/i, msg)
|
164
165
|
end
|
165
166
|
|
166
167
|
it 'throws SystemExit error when vm_user not provided' do
|
@@ -195,10 +196,11 @@ describe Azure::VirtualMachineManagementService do
|
|
195
196
|
cloud_service.delete_cloud_service(cloud_service_name)
|
196
197
|
end
|
197
198
|
|
198
|
-
it 'error thrown when invalid
|
199
|
+
it 'error thrown when invalid VM name given for Windows OS' do
|
199
200
|
windows_params.merge!(vm_name: 'MSServerInstnce01')
|
200
201
|
msg = subject.create_virtual_machine(windows_params, default_options)
|
201
|
-
|
202
|
+
error_msg = 'The computer name cannot be more than 15 characters long'
|
203
|
+
assert_match(/#{error_msg}/i, msg)
|
202
204
|
cloud_service.delete_cloud_service(cloud_service_name)
|
203
205
|
end
|
204
206
|
|
@@ -12,44 +12,44 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
#--------------------------------------------------------------------------
|
15
|
-
require
|
15
|
+
require 'integration/test_helper'
|
16
16
|
|
17
17
|
describe Azure::VirtualMachineManagementService do
|
18
18
|
|
19
19
|
subject { Azure::VirtualMachineManagementService.new }
|
20
20
|
let(:names) { VirtualMachineNameHelper.name }
|
21
|
-
let(:virtual_machine_name) { names.first}
|
22
|
-
let(:
|
23
|
-
let(:username) {'admin'}
|
24
|
-
before
|
21
|
+
let(:virtual_machine_name) { names.first }
|
22
|
+
let(:csn) { names.last }
|
23
|
+
let(:username) { 'admin' }
|
24
|
+
before do
|
25
25
|
Loggerx.expects(:puts).at_least_once.returns(nil)
|
26
26
|
params = {
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
27
|
+
vm_name: virtual_machine_name,
|
28
|
+
vm_user: 'user',
|
29
|
+
image: LinuxImage.name,
|
30
|
+
password: 'User123',
|
31
|
+
location: LinuxImageLocation
|
32
32
|
}
|
33
33
|
options = {
|
34
|
-
:
|
35
|
-
:
|
34
|
+
storage_account_name: StorageAccountName,
|
35
|
+
cloud_service_name: csn,
|
36
36
|
}
|
37
37
|
subject.create_virtual_machine(params, options)
|
38
38
|
sleep 60
|
39
|
-
|
39
|
+
end
|
40
40
|
|
41
|
-
describe
|
41
|
+
describe '#delete_virtual_machine' do
|
42
42
|
|
43
|
-
it
|
44
|
-
subject.delete_virtual_machine(virtual_machine_name,
|
43
|
+
it 'delete existing virtual machine and cloud service' do
|
44
|
+
subject.delete_virtual_machine(virtual_machine_name, csn)
|
45
45
|
sleep 60
|
46
|
-
vm = subject.get_virtual_machine(virtual_machine_name,
|
46
|
+
vm = subject.get_virtual_machine(virtual_machine_name, csn)
|
47
47
|
vm.must_be_nil
|
48
|
-
|
48
|
+
cloud_service = Azure::CloudServiceManagementService.new
|
49
|
+
cloud_presence = cloud_service.get_cloud_service(csn)
|
49
50
|
cloud_presence.must_equal false
|
50
51
|
end
|
51
52
|
|
52
53
|
end
|
53
54
|
|
54
55
|
end
|
55
|
-
|
@@ -0,0 +1,174 @@
|
|
1
|
+
#-------------------------------------------------------------------------
|
2
|
+
# Copyright 2013 Microsoft Open Technologies, Inc.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
#--------------------------------------------------------------------------
|
15
|
+
require 'integration/test_helper'
|
16
|
+
|
17
|
+
describe Azure::VirtualMachineManagementService do
|
18
|
+
let(:vm_name) { 'test-operation-vm' }
|
19
|
+
let(:csn) { vm_name + '-service-qwert' }
|
20
|
+
subject { Azure::VirtualMachineManagementService.new }
|
21
|
+
|
22
|
+
before do
|
23
|
+
Loggerx.expects(:puts).returns(nil).at_least(0)
|
24
|
+
params = {
|
25
|
+
vm_name: vm_name,
|
26
|
+
vm_user: 'user',
|
27
|
+
image: LinuxImage.name,
|
28
|
+
password: 'User123',
|
29
|
+
location: LinuxImageLocation
|
30
|
+
}
|
31
|
+
options = {
|
32
|
+
storage_account_name: StorageAccountName,
|
33
|
+
cloud_service_name: csn,
|
34
|
+
}
|
35
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
36
|
+
if vm.nil?
|
37
|
+
subject.create_virtual_machine(params, options)
|
38
|
+
sleep 60 # Wait to finish provision.
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe 'Operations on virtual machine' do
|
43
|
+
|
44
|
+
describe '#shutdown_virtual_machine' do
|
45
|
+
it 'shuts down virtual machine' do
|
46
|
+
subject.shutdown_virtual_machine(vm_name, csn)
|
47
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
48
|
+
%w(StoppedVM StoppedDeallocated).must_include vm.status
|
49
|
+
|
50
|
+
msg = subject.shutdown_virtual_machine(vm_name, csn)
|
51
|
+
emsg = 'Cannot perform the shutdown operation on a stopped virtual machine'
|
52
|
+
assert_match(/#{emsg}/, msg)
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'raises an error if virtual machine doesn\'t exists' do
|
56
|
+
name = 'test-shutdown'
|
57
|
+
msg = subject.shutdown_virtual_machine(name, csn)
|
58
|
+
assert_match(/Cannot find virtual machine \"#{name}\" under cloud service \"#{csn}\"/, msg)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#start_virtual_machine' do
|
64
|
+
before do
|
65
|
+
subject.shutdown_virtual_machine(vm_name, csn)
|
66
|
+
end
|
67
|
+
|
68
|
+
it 'starts virtual machine' do
|
69
|
+
subject.start_virtual_machine(vm_name, csn)
|
70
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
71
|
+
statuses = %w(ReadyRole Provisioning CreatingVM RoleStateUnknown)
|
72
|
+
statuses.must_include vm.status
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#restart_virtual_machine' do
|
78
|
+
before do
|
79
|
+
subject.restart_virtual_machine(vm_name, csn)
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'restarts virtual machine' do
|
83
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
84
|
+
%w(ReadyRole Provisioning RoleStateUnknown).must_include vm.status
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe '#get_virtual_machine' do
|
89
|
+
it 'should return virtual machine object' do
|
90
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
91
|
+
vm.vm_name.must_equal vm_name
|
92
|
+
vm.cloud_service_name.must_equal csn
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#list_virtual_machines' do
|
97
|
+
it 'returns a list of virtual machines' do
|
98
|
+
vms = subject.list_virtual_machines
|
99
|
+
vms.wont_be_nil
|
100
|
+
vms.must_be_kind_of Array
|
101
|
+
vm = vms.first
|
102
|
+
vm.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
|
103
|
+
vm_names = vms.map(&:vm_name)
|
104
|
+
vm_names.must_include vm.vm_name
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe '#add_data_disk' do
|
109
|
+
it 'add data disk to virtual machine' do
|
110
|
+
lun = rand(1..15)
|
111
|
+
others = { disk_size: 100 }
|
112
|
+
subject.add_data_disk(vm_name, csn , lun, others)
|
113
|
+
dms = VirtualMachineDiskManagementService.new
|
114
|
+
disks = dms.list_virtual_machine_disks
|
115
|
+
disks = disks.select { |x| (/#{csn}/ =~ x.name) && x.os_type.empty? }
|
116
|
+
assert_operator disks.size, :>=, 1
|
117
|
+
disks.first.size.must_equal others[:disk_size].to_s
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe 'Add, Update, Delete endpoints' do
|
122
|
+
|
123
|
+
it 'should add endpoints to virtual machine.' do
|
124
|
+
ep1 = {
|
125
|
+
name: 'endpoint-1',
|
126
|
+
public_port: 777,
|
127
|
+
local_port: 777,
|
128
|
+
protocol: 'UDP',
|
129
|
+
}
|
130
|
+
ep2 = {
|
131
|
+
name: 'endpoint-2',
|
132
|
+
public_port: 888,
|
133
|
+
local_port: 889,
|
134
|
+
protocol: 'UDP',
|
135
|
+
load_balancer_name: 'lb',
|
136
|
+
load_balancer: { protocol: 'http', path: 'mypath' }
|
137
|
+
}
|
138
|
+
subject.update_endpoints(vm_name, csn, ep1, ep2)
|
139
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
140
|
+
vm.udp_endpoints.size.must_equal 2
|
141
|
+
vm.udp_endpoints.first[:name].must_equal 'endpoint-1'
|
142
|
+
vm.udp_endpoints.last[:name].must_equal 'endpoint-2'
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'should update existing endpoints of virtual machine.' do
|
146
|
+
ep1 = {
|
147
|
+
name: 'SSH',
|
148
|
+
public_port: 2222,
|
149
|
+
local_port: 22,
|
150
|
+
protocol: 'TCP',
|
151
|
+
}
|
152
|
+
subject.update_endpoints(vm_name, csn, ep1)
|
153
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
154
|
+
vm.tcp_endpoints.size.must_equal 1
|
155
|
+
vm.tcp_endpoints.first[:name].must_equal 'SSH'
|
156
|
+
vm.tcp_endpoints.first[:public_port].must_equal '2222'
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'should delete endpoint of virtual machine.' do
|
160
|
+
subject.delete_endpoint(vm_name, csn, 'SSH')
|
161
|
+
vm = subject.get_virtual_machine(vm_name, csn)
|
162
|
+
vm.tcp_endpoints.size.must_equal 0
|
163
|
+
ep1 = {
|
164
|
+
name: 'SSH',
|
165
|
+
public_port: 22,
|
166
|
+
local_port: 22,
|
167
|
+
protocol: 'TCP',
|
168
|
+
}
|
169
|
+
subject.update_endpoints(vm_name, csn, ep1)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
end # end
|
@@ -28,7 +28,7 @@ class VirtualMachineNameGenerator
|
|
28
28
|
vm_name = random_text('test-')
|
29
29
|
cloud_name = random_text(vm_name + '-service-')
|
30
30
|
@names << [vm_name, cloud_name]
|
31
|
-
|
31
|
+
[vm_name, cloud_name]
|
32
32
|
end
|
33
33
|
|
34
34
|
def clean
|
@@ -44,43 +44,31 @@ class VirtualMachineNameGenerator
|
|
44
44
|
virtual_machine_service = Azure::VirtualMachineManagementService.new
|
45
45
|
virtualmachines = virtual_machine_service.list_virtual_machines
|
46
46
|
azure_cloud_service = Azure::CloudServiceManagementService.new
|
47
|
-
virtualmachines.each do |
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
begin
|
53
|
-
azure_cloud_service.delete_cloud_service_deployment(
|
54
|
-
virtualmachine.cloud_service_name
|
55
|
-
)
|
56
|
-
azure_cloud_service.delete_cloud_service(
|
57
|
-
virtualmachine.cloud_service_name
|
58
|
-
)
|
59
|
-
rescue
|
60
|
-
end
|
47
|
+
virtualmachines.each do |vm|
|
48
|
+
vm_name = vm.vm_name + '-service-'
|
49
|
+
csn = vm.cloud_service_name
|
50
|
+
if vm.vm_name.include?('test-') && csn.include?(vm_name)
|
51
|
+
azure_cloud_service.delete_cloud_service_deployment(csn) rescue nil
|
61
52
|
end
|
62
53
|
end
|
54
|
+
|
63
55
|
# Delete cloud services
|
64
|
-
Azure::BaseManagementService.new
|
65
56
|
cloud_services = azure_cloud_service.list_cloud_services
|
66
57
|
cloud_services.each do |cloud_service|
|
67
|
-
|
68
|
-
|
69
|
-
azure_cloud_service.delete_cloud_service(
|
70
|
-
cloud_service.name
|
71
|
-
) rescue nil
|
58
|
+
csn = cloud_service.name
|
59
|
+
if csn.include?('test-') && csn.include?('-service-')
|
60
|
+
azure_cloud_service.delete_cloud_service(csn) rescue nil
|
72
61
|
end
|
73
62
|
end
|
74
63
|
|
75
64
|
# Delete disks
|
76
|
-
|
77
|
-
|
65
|
+
disk_service = VirtualMachineDiskManagementService.new
|
66
|
+
sleep 60
|
67
|
+
disks = disk_service.list_virtual_machine_disks
|
78
68
|
disks.each do |disk|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
disk.name
|
83
|
-
) rescue nil
|
69
|
+
name = disk.name
|
70
|
+
if name.include?('-service-') && name.include?('test-') && !disk.attached
|
71
|
+
disk_service.delete_virtual_machine_disk(name) rescue nil
|
84
72
|
end
|
85
73
|
end
|
86
74
|
|
@@ -94,16 +82,13 @@ class VirtualMachineNameGenerator
|
|
94
82
|
end
|
95
83
|
|
96
84
|
# Delete affinity groups
|
97
|
-
|
98
|
-
affinity_groups =
|
85
|
+
ag_service = Azure::BaseManagementService.new
|
86
|
+
affinity_groups = ag_service.list_affinity_groups
|
99
87
|
affinity_groups.each do |affinity_group|
|
100
88
|
if affinity_group.name.include?('affinity-group-')
|
101
|
-
|
102
|
-
affinity_group.name
|
103
|
-
) rescue nil
|
89
|
+
ag_service.delete_affinity_group(affinity_group.name) rescue nil
|
104
90
|
end
|
105
91
|
end
|
106
|
-
|
107
92
|
end
|
108
93
|
end
|
109
94
|
|