azure 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.txt +7 -0
  3. data/README.md +52 -35
  4. data/lib/azure/base_management/management_http_request.rb +1 -1
  5. data/lib/azure/cloud_service_management/cloud_service.rb +1 -1
  6. data/lib/azure/cloud_service_management/cloud_service_management_service.rb +8 -10
  7. data/lib/azure/cloud_service_management/serialization.rb +9 -8
  8. data/lib/azure/storage_management/storage_management_service.rb +2 -2
  9. data/lib/azure/version.rb +1 -1
  10. data/lib/azure/virtual_machine_image_management/serialization.rb +4 -6
  11. data/lib/azure/virtual_machine_image_management/virtual_machine_disk.rb +0 -2
  12. data/lib/azure/virtual_machine_image_management/virtual_machine_image.rb +0 -2
  13. data/lib/azure/virtual_machine_image_management/virtual_machine_image_management_service.rb +4 -9
  14. data/lib/azure/virtual_machine_management/serialization.rb +19 -4
  15. data/lib/azure/virtual_machine_management/virtual_machine.rb +1 -0
  16. data/lib/azure/virtual_machine_management/virtual_machine_management_service.rb +118 -68
  17. data/test/integration/cloud_service/Cloud_Create_test.rb +44 -0
  18. data/test/integration/cloud_service/Cloud_Delete_test.rb +44 -0
  19. data/test/integration/vm/VM_Create_test.rb +56 -10
  20. data/test/integration/vm/VM_Operations_test.rb +3 -4
  21. data/test/unit/cloud_service_management/cloud_service_management_service_test.rb +30 -30
  22. data/test/unit/cloud_service_management/serialization_test.rb +20 -20
  23. data/test/unit/virtual_machine_image_management/serialization_test.rb +6 -6
  24. data/test/unit/virtual_machine_image_management/virtual_machine_image_management_service_test.rb +20 -20
  25. data/test/unit/virtual_machine_management/serialization_test.rb +26 -14
  26. data/test/unit/virtual_machine_management/virtual_machine_management_service_test.rb +80 -75
  27. metadata +4 -2
@@ -0,0 +1,44 @@
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::CloudServiceManagementService do
18
+
19
+ subject { Azure::CloudServiceManagementService.new }
20
+
21
+ let(:options) do
22
+ {
23
+ location: 'West US',
24
+ description: 'Test'
25
+ }
26
+ end
27
+
28
+ before do
29
+ Loggerx.expects(:puts).returns(nil).at_least(0)
30
+ end
31
+
32
+ describe '#delete_cloud_service' do
33
+ before do
34
+ @cloud_name = random_string('test-service-cloud', 10)
35
+ subject.create_cloud_service(@cloud_name, options)
36
+ end
37
+
38
+ it 'Deletes the cloud service in Windows Azure.' do
39
+ subject.delete_cloud_service(@cloud_name)
40
+ present = subject.get_cloud_service(@cloud_name)
41
+ assert_equal present, false
42
+ end
43
+ end
44
+ end
@@ -50,7 +50,7 @@ describe Azure::VirtualMachineManagementService do
50
50
  {
51
51
  storage_account_name: storage_account_name,
52
52
  cloud_service_name: cloud_service_name,
53
- vm_size: 'Small'
53
+ vm_size: 'Basic_A0'
54
54
  }
55
55
  end
56
56
 
@@ -67,27 +67,73 @@ describe Azure::VirtualMachineManagementService do
67
67
 
68
68
  describe '#deployment' do
69
69
 
70
+ describe '#add_role' do
71
+ before do
72
+ @vm_obj = subject.create_virtual_machine(params, options)
73
+ params[:cloud_service_name] = options[:cloud_service_name]
74
+ options.delete(:cloud_service_name)
75
+ params.delete(:location)
76
+ params[:vm_name] = "add-#{virtual_machine_name}"
77
+ sleep 30
78
+ end
79
+
80
+ it 'should add role to existing storage account and cloud service' do
81
+ vm = subject.add_role(params, options)
82
+ vm.cloud_service_name.must_equal params[:cloud_service_name]
83
+ vm.vm_name.must_equal params[:vm_name]
84
+ vm.deployment_name.must_equal @vm_obj.deployment_name
85
+ vm.os_type.must_equal 'Linux'
86
+ end
87
+
88
+ it 'should add role and create new storage account' do
89
+ params[:vm_name] = "Add-storage-#{virtual_machine_name}"
90
+ vm = subject.add_role(params)
91
+ vm.cloud_service_name.must_equal params[:cloud_service_name]
92
+ vm.vm_name.must_equal params[:vm_name].downcase
93
+ vm.deployment_name.must_equal @vm_obj.deployment_name
94
+ end
95
+ end
96
+
97
+ describe '#virtual_network' do
98
+ before do
99
+ options[:virtual_network_name] = 'v-net'
100
+ affinity_gorup_name = random_string('affinity-group-', 10)
101
+ Azure::BaseManagementService.new.create_affinity_group(
102
+ affinity_gorup_name,
103
+ params[:location],
104
+ 'AG1'
105
+ ) rescue nil
106
+ vnet_service = Azure::VirtualNetworkManagementService
107
+ vnet_service.new.set_network_configuration(
108
+ options[:virtual_network_name],
109
+ affinity_gorup_name,
110
+ ['172.16.0.0/12']
111
+ ) rescue nil
112
+ subject.create_virtual_machine(params, options)
113
+ end
114
+
115
+ it 'should provision virtual machine in a existing virtual network' do
116
+ virtual_machine = subject.get_virtual_machine(virtual_machine_name, cloud_service_name)
117
+ virtual_machine.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
118
+ virtual_machine.vm_name.must_equal virtual_machine_name
119
+ virtual_machine.virtual_network_name.must_equal options[:virtual_network_name]
120
+ end
121
+ end
122
+
70
123
  it 'should set options hash with valid cloud_service_name, deployment_name, storage_account_name and virtual network' do
71
124
  csn = options[:cloud_service_name]
72
125
  options[:availability_set_name] = 'aval-set-test'
73
- vm = subject.create_virtual_machine(params, options, false)
126
+ vm = subject.create_virtual_machine(params, options)
74
127
  vm.must_be_kind_of Azure::VirtualMachineManagement::VirtualMachine
75
128
  vm.cloud_service_name.wont_be_nil
76
129
  vm.vm_name.must_equal virtual_machine_name
77
130
  vm.deployment_name.wont_be_nil
78
131
  vm.deployment_name.must_equal vm.cloud_service_name
79
132
  vm.os_type.must_equal 'Linux'
80
- vm.role_size.must_equal 'Small'
133
+ vm.role_size.must_equal 'Basic_A0'
81
134
  vm.availability_set_name.must_equal 'aval-set-test'
82
135
  options[:storage_account_name].wont_be_nil
83
136
  assert_match(/^#{params[:vm_name] + '-service'}*/, csn)
84
- # Test for add role
85
- params[:vm_name] = 'test-add-role-vm'
86
- vm = subject.create_virtual_machine(params, options, true)
87
- vm.cloud_service_name.must_equal csn
88
- vm.vm_name.must_equal params[:vm_name]
89
- vm.deployment_name.wont_be_nil
90
- vm.os_type.must_equal 'Linux'
91
137
  end
92
138
 
93
139
  it 'should creates http and https enabled winrm virtual machine without certificate.' do
@@ -64,7 +64,7 @@ describe Azure::VirtualMachineManagementService do
64
64
  before do
65
65
  subject.shutdown_virtual_machine(vm_name, csn)
66
66
  end
67
-
67
+
68
68
  it 'starts virtual machine' do
69
69
  subject.start_virtual_machine(vm_name, csn)
70
70
  vm = subject.get_virtual_machine(vm_name, csn)
@@ -107,9 +107,8 @@ describe Azure::VirtualMachineManagementService do
107
107
 
108
108
  describe '#add_data_disk' do
109
109
  it 'add data disk to virtual machine' do
110
- lun = rand(1..15)
111
110
  others = { disk_size: 100 }
112
- subject.add_data_disk(vm_name, csn , lun, others)
111
+ subject.add_data_disk(vm_name, csn, others)
113
112
  dms = VirtualMachineDiskManagementService.new
114
113
  disks = dms.list_virtual_machine_disks
115
114
  disks = disks.select { |x| (/#{csn}/ =~ x.name) && x.os_type.empty? }
@@ -119,7 +118,7 @@ describe Azure::VirtualMachineManagementService do
119
118
  end
120
119
 
121
120
  describe 'Add, Update, Delete endpoints' do
122
-
121
+
123
122
  it 'should add endpoints to virtual machine.' do
124
123
  ep1 = {
125
124
  name: 'endpoint-1',
@@ -12,73 +12,73 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #--------------------------------------------------------------------------
15
- require "test_helper"
15
+ require 'test_helper'
16
16
 
17
17
  describe Azure::CloudServiceManagementService do
18
18
 
19
19
  subject { Azure::CloudServiceManagementService.new }
20
- let(:request_path) {'/services/hostedservices'}
21
- let(:cloud_services_xml) { Fixtures["list_cloud_services"] }
20
+ let(:request_path) { '/services/hostedservices' }
21
+ let(:cloud_services_xml) { Fixtures['list_cloud_services'] }
22
22
  let(:method) { :get }
23
- let(:mock_request){ mock() }
24
- let(:response) {
25
- response = mock()
23
+ let(:mock_request) { mock }
24
+ let(:response) do
25
+ response = mock
26
26
  response.stubs(:body).returns(cloud_services_xml)
27
27
  response
28
- }
28
+ end
29
29
  let(:response_body) { Nokogiri::XML response.body }
30
30
 
31
- before{
31
+ before do
32
32
  Loggerx.expects(:puts).returns(nil).at_least(0)
33
- }
33
+ end
34
34
 
35
- describe "#list_cloud_services" do
36
- before {
35
+ describe '#list_cloud_services' do
36
+ before do
37
37
  ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(mock_request)
38
38
  mock_request.expects(:call).returns(response_body)
39
- }
40
-
41
- it "assembles a URI for the request" do
39
+ end
40
+
41
+ it 'assembles a URI for the request' do
42
42
  subject.list_cloud_services
43
43
  end
44
-
45
- it "sets the properties of the CloudService instance" do
44
+
45
+ it 'sets the properties of the CloudService instance' do
46
46
  cloud_service = subject.list_cloud_services.first
47
47
  cloud_service.name.must_equal 'cloud-service-1'
48
48
  end
49
-
50
- it "returns a list of cloud services for the subscription" do
49
+
50
+ it 'returns a list of cloud services for the subscription' do
51
51
  results = subject.list_cloud_services
52
52
  results.must_be_kind_of Array
53
53
  results.length.must_equal 2
54
54
  results.first.must_be_kind_of Azure::CloudServiceManagement::CloudService
55
55
  end
56
56
  end
57
-
58
- describe "#get_cloud_service" do
59
- before {
57
+
58
+ describe '#get_cloud_service' do
59
+ before do
60
60
  ManagementHttpRequest.stubs(:new).with(method, request_path, nil).returns(mock_request)
61
61
  mock_request.expects(:call).returns(response_body)
62
- }
63
-
64
- it "assembles a URI for the request" do
62
+ end
63
+
64
+ it 'assembles a URI for the request' do
65
65
  subject.get_cloud_service 'cloud-service-1'
66
66
  end
67
-
68
- it "returns true if found cloud service with given name" do
67
+
68
+ it 'returns true if found cloud service with given name' do
69
69
  result = subject.get_cloud_service 'cloud-service-1'
70
70
  result.must_equal true
71
71
  end
72
-
72
+
73
73
  it "returns false if cloud service with given name doesn't exists" do
74
74
  result = subject.get_cloud_service 'cloud-service-3'
75
75
  result.must_equal false
76
76
  end
77
77
  end
78
78
 
79
- describe "#create_cloud_service" do
80
-
81
- it "Create cloud service return message if cloud service exists of given name." do
79
+ describe '#create_cloud_service' do
80
+
81
+ it 'Create cloud service return message if cloud service exists of given name.' do
82
82
  ManagementHttpRequest.any_instance.expects(:call).returns response_body
83
83
  msg = subject.create_cloud_service 'cloud-service-1'
84
84
  assert_match(/^Cloud service cloud-service-1 already exists*/, msg)
@@ -59,7 +59,7 @@ describe Azure::CloudServiceManagement::Serialization do
59
59
  end
60
60
 
61
61
  describe '#cloud_services_to_xml' do
62
- let(:cloud_service_name) {'cloud-service'}
62
+ let(:cloud_service_name) { 'cloud-service' }
63
63
 
64
64
  it 'accepts an name and options hash' do
65
65
  subject.cloud_services_to_xml cloud_service_name
@@ -68,9 +68,9 @@ describe Azure::CloudServiceManagement::Serialization do
68
68
  it 'uses name for label if label not provided' do
69
69
  results = subject.cloud_services_to_xml(
70
70
  cloud_service_name,
71
- {
72
- location: 'East Asia'
73
- }
71
+
72
+ location: 'East Asia'
73
+
74
74
  )
75
75
 
76
76
  doc = Nokogiri::XML(results)
@@ -80,10 +80,10 @@ describe Azure::CloudServiceManagement::Serialization do
80
80
  it 'uses label when label is provided' do
81
81
  results = subject.cloud_services_to_xml(
82
82
  cloud_service_name,
83
- {
84
- location: 'East Asia',
85
- label: 'My Label'
86
- }
83
+
84
+ location: 'East Asia',
85
+ label: 'My Label'
86
+
87
87
  )
88
88
 
89
89
  doc = Nokogiri::XML(results)
@@ -92,7 +92,7 @@ describe Azure::CloudServiceManagement::Serialization do
92
92
 
93
93
  it 'serializes the argument to xml' do
94
94
  results = subject.cloud_services_to_xml(
95
- cloud_service_name, { location: 'West US' }
95
+ cloud_service_name, location: 'West US'
96
96
  )
97
97
  results.must_be_kind_of String
98
98
  doc = Nokogiri::XML results
@@ -103,10 +103,10 @@ describe Azure::CloudServiceManagement::Serialization do
103
103
  it 'uses affinity_group if provided and ignores location' do
104
104
  results = subject.cloud_services_to_xml(
105
105
  cloud_service_name,
106
- {
107
- affinity_group_name: 'my-affinity-group',
108
- location: 'West US'
109
- }
106
+
107
+ affinity_group_name: 'my-affinity-group',
108
+ location: 'West US'
109
+
110
110
  )
111
111
  results.must_be_kind_of String
112
112
  doc = Nokogiri::XML results
@@ -119,9 +119,9 @@ describe Azure::CloudServiceManagement::Serialization do
119
119
  it 'uses location when affinity group not provided' do
120
120
  results = subject.cloud_services_to_xml(
121
121
  cloud_service_name,
122
- {
123
- location: 'East Asia'
124
- }
122
+
123
+ location: 'East Asia'
124
+
125
125
  )
126
126
 
127
127
  doc = Nokogiri::XML(results)
@@ -137,9 +137,9 @@ describe Azure::CloudServiceManagement::Serialization do
137
137
  }
138
138
  results = subject.cloud_services_to_xml(
139
139
  cloud_service_name,
140
- {
141
- extended_properties: xtended_props
142
- }
140
+
141
+ extended_properties: xtended_props
142
+
143
143
  )
144
144
 
145
145
  doc = Nokogiri::XML(results)
@@ -159,7 +159,7 @@ describe Azure::CloudServiceManagement::Serialization do
159
159
  it 'serializes the options hash to xml' do
160
160
  results = subject.cloud_services_to_xml(
161
161
  cloud_service_name,
162
- { location: 'East US' }
162
+ location: 'East US'
163
163
  )
164
164
  doc = Nokogiri::XML results
165
165
  doc.css('Location').text.must_equal 'East US'
@@ -12,24 +12,24 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #--------------------------------------------------------------------------
15
- require "test_helper"
15
+ require 'test_helper'
16
16
 
17
17
  describe Azure::VirtualMachineImageManagement::Serialization do
18
18
  subject { Azure::VirtualMachineImageManagement::Serialization }
19
19
 
20
- let(:virtual_machine_images_from_xml) { Fixtures["list_images"] }
20
+ let(:virtual_machine_images_from_xml) { Fixtures['list_images'] }
21
21
 
22
- describe "#virtual_machine_images_from_xml" do
22
+ describe '#virtual_machine_images_from_xml' do
23
23
 
24
- it "accepts an XML string" do
24
+ it 'accepts an XML string' do
25
25
  subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
26
26
  end
27
27
 
28
- it "returns an Array of VirtualMachineImageService instances" do
28
+ it 'returns an Array of VirtualMachineImageService instances' do
29
29
  results = subject.virtual_machine_images_from_xml Nokogiri::XML(virtual_machine_images_from_xml)
30
30
  results.must_be_kind_of Array
31
31
  results[0].must_be_kind_of Azure::VirtualMachineImageManagement::VirtualMachineImage
32
32
  results.count.must_equal 12
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -12,48 +12,48 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
  #--------------------------------------------------------------------------
15
- require "test_helper"
15
+ require 'test_helper'
16
16
 
17
17
  describe Azure::VirtualMachineImageManagementService do
18
18
 
19
19
  subject { Azure::VirtualMachineImageManagementService.new }
20
20
 
21
- let(:request_path) {'/services/images'}
22
- let(:images_xml) { Fixtures["list_images"] }
21
+ let(:request_path) { '/services/images' }
22
+ let(:images_xml) { Fixtures['list_images'] }
23
23
  let(:method) { :get }
24
- let(:mock_request){ mock() }
25
- let(:response) {
26
- response = mock()
24
+ let(:mock_request) { mock }
25
+ let(:response) do
26
+ response = mock
27
27
  response.stubs(:body).returns(images_xml)
28
28
  response
29
- }
29
+ end
30
30
  let(:response_body) { Nokogiri::XML response.body }
31
31
 
32
- before{
32
+ before do
33
33
  Loggerx.expects(:puts).returns(nil).at_least(0)
34
- }
35
-
36
- describe "#list_virtual_machine_images" do
37
-
38
- before {
34
+ end
35
+
36
+ describe '#list_virtual_machine_images' do
37
+
38
+ before do
39
39
  ManagementHttpRequest.stubs(:new).with(
40
40
  method,
41
41
  request_path,
42
42
  nil
43
43
  ).returns(mock_request)
44
44
  mock_request.expects(:call).returns(response_body)
45
- }
46
-
47
- it "assembles a URI for the request" do
45
+ end
46
+
47
+ it 'assembles a URI for the request' do
48
48
  subject.list_virtual_machine_images
49
49
  end
50
-
51
- it "sets the properties of the virtual machine images" do
50
+
51
+ it 'sets the properties of the virtual machine images' do
52
52
  virtual_machine_image = subject.list_virtual_machine_images.first
53
53
  virtual_machine_image.name.must_equal 'RightImage-CentOS-6.2-x64-v5.8.8.1'
54
54
  end
55
55
 
56
- it "returns a list of virtual machine images from server" do
56
+ it 'returns a list of virtual machine images from server' do
57
57
  results = subject.list_virtual_machine_images
58
58
  results.must_be_kind_of Array
59
59
  results.length.must_equal 12
@@ -61,5 +61,5 @@ describe Azure::VirtualMachineImageManagementService do
61
61
  results.first.must_be_kind_of image_klass
62
62
  end
63
63
  end
64
-
64
+
65
65
  end