azure 0.6.1 → 0.6.2
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.
- 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
|
|