knife-azure 3.0.6 → 5.0.1

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/azure/azure_interface.rb +1 -1
  3. data/lib/azure/custom_errors.rb +2 -2
  4. data/lib/azure/helpers.rb +1 -1
  5. data/lib/azure/resource_management/ARM_deployment_template.rb +82 -27
  6. data/lib/azure/resource_management/ARM_interface.rb +112 -118
  7. data/lib/azure/resource_management/rest/arm_client.rb +208 -0
  8. data/lib/azure/resource_management/rest/environments.rb +89 -0
  9. data/lib/azure/resource_management/rest/errors.rb +57 -0
  10. data/lib/azure/resource_management/rest/http.rb +335 -0
  11. data/lib/azure/resource_management/rest/rest_object.rb +103 -0
  12. data/lib/azure/resource_management/rest/secure_connection.rb +57 -0
  13. data/lib/azure/resource_management/rest/token_provider.rb +125 -0
  14. data/lib/azure/resource_management/vnet_config.rb +4 -4
  15. data/lib/azure/resource_management/windows_credentials.rb +3 -3
  16. data/lib/chef/knife/azurerm_server_create.rb +22 -10
  17. data/lib/chef/knife/azurerm_server_delete.rb +1 -1
  18. data/lib/chef/knife/azurerm_server_list.rb +1 -1
  19. data/lib/chef/knife/azurerm_server_show.rb +1 -1
  20. data/lib/chef/knife/bootstrap/bootstrapper.rb +142 -14
  21. data/lib/chef/knife/bootstrap/common_bootstrap_options.rb +4 -6
  22. data/lib/chef/knife/bootstrap_azurerm.rb +1 -1
  23. data/lib/chef/knife/helpers/azurerm_base.rb +170 -9
  24. data/lib/knife-azure/version.rb +2 -2
  25. metadata +37 -95
  26. data/lib/azure/service_management/ASM_interface.rb +0 -310
  27. data/lib/azure/service_management/ag.rb +0 -99
  28. data/lib/azure/service_management/certificate.rb +0 -235
  29. data/lib/azure/service_management/connection.rb +0 -102
  30. data/lib/azure/service_management/deploy.rb +0 -221
  31. data/lib/azure/service_management/disk.rb +0 -68
  32. data/lib/azure/service_management/host.rb +0 -184
  33. data/lib/azure/service_management/image.rb +0 -94
  34. data/lib/azure/service_management/loadbalancer.rb +0 -78
  35. data/lib/azure/service_management/rest.rb +0 -126
  36. data/lib/azure/service_management/role.rb +0 -717
  37. data/lib/azure/service_management/storageaccount.rb +0 -127
  38. data/lib/azure/service_management/utility.rb +0 -40
  39. data/lib/azure/service_management/vnet.rb +0 -134
  40. data/lib/chef/knife/azure_ag_create.rb +0 -73
  41. data/lib/chef/knife/azure_ag_list.rb +0 -35
  42. data/lib/chef/knife/azure_image_list.rb +0 -56
  43. data/lib/chef/knife/azure_internal-lb_create.rb +0 -74
  44. data/lib/chef/knife/azure_internal-lb_list.rb +0 -35
  45. data/lib/chef/knife/azure_server_create.rb +0 -531
  46. data/lib/chef/knife/azure_server_delete.rb +0 -136
  47. data/lib/chef/knife/azure_server_list.rb +0 -38
  48. data/lib/chef/knife/azure_server_show.rb +0 -41
  49. data/lib/chef/knife/azure_vnet_create.rb +0 -74
  50. data/lib/chef/knife/azure_vnet_list.rb +0 -35
  51. data/lib/chef/knife/bootstrap_azure.rb +0 -191
  52. data/lib/chef/knife/helpers/azure_base.rb +0 -392
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright (c) Chef Software Inc.
2
+ # Copyright:: Copyright (c) 2012-2026 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -17,7 +17,7 @@
17
17
 
18
18
  module Knife
19
19
  module Azure
20
- VERSION = "3.0.6".freeze
20
+ VERSION = "5.0.1".freeze
21
21
  MAJOR, MINOR, TINY = VERSION.split(".")
22
22
  end
23
23
  end
metadata CHANGED
@@ -1,140 +1,102 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-azure
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.6
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Barry Davis
8
8
  - Chirag Jog
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-09-09 00:00:00.000000000 Z
12
+ date: 2026-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: chef
15
+ name: knife
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 15.10.21
20
+ version: '18.10'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 15.10.21
27
+ version: '18.10'
28
28
  - !ruby/object:Gem::Dependency
29
- name: nokogiri
29
+ name: abbrev
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 1.5.5
34
+ version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 1.5.5
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: azure_mgmt_resources
43
+ name: chef
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: '0.17'
49
46
  - - ">="
50
47
  - !ruby/object:Gem::Version
51
- version: 0.17.2
48
+ version: '18.10'
52
49
  type: :runtime
53
50
  prerelease: false
54
51
  version_requirements: !ruby/object:Gem::Requirement
55
52
  requirements:
56
- - - "~>"
57
- - !ruby/object:Gem::Version
58
- version: '0.17'
59
53
  - - ">="
60
54
  - !ruby/object:Gem::Version
61
- version: 0.17.2
55
+ version: '18.10'
62
56
  - !ruby/object:Gem::Dependency
63
- name: azure_mgmt_compute
57
+ name: nokogiri
64
58
  requirement: !ruby/object:Gem::Requirement
65
59
  requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.18'
69
60
  - - ">="
70
61
  - !ruby/object:Gem::Version
71
- version: 0.18.3
62
+ version: 1.5.5
72
63
  type: :runtime
73
64
  prerelease: false
74
65
  version_requirements: !ruby/object:Gem::Requirement
75
66
  requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '0.18'
79
67
  - - ">="
80
68
  - !ruby/object:Gem::Version
81
- version: 0.18.3
69
+ version: 1.5.5
82
70
  - !ruby/object:Gem::Dependency
83
- name: azure_mgmt_storage
71
+ name: listen
84
72
  requirement: !ruby/object:Gem::Requirement
85
73
  requirements:
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 0.20.0
89
74
  - - "~>"
90
75
  - !ruby/object:Gem::Version
91
- version: '0.20'
76
+ version: '3.1'
92
77
  type: :runtime
93
78
  prerelease: false
94
79
  version_requirements: !ruby/object:Gem::Requirement
95
80
  requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- version: 0.20.0
99
81
  - - "~>"
100
82
  - !ruby/object:Gem::Version
101
- version: '0.20'
83
+ version: '3.1'
102
84
  - !ruby/object:Gem::Dependency
103
- name: azure_mgmt_network
85
+ name: ipaddress
104
86
  requirement: !ruby/object:Gem::Requirement
105
87
  requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '0.18'
109
88
  - - ">="
110
89
  - !ruby/object:Gem::Version
111
- version: 0.18.2
90
+ version: '0'
112
91
  type: :runtime
113
92
  prerelease: false
114
93
  version_requirements: !ruby/object:Gem::Requirement
115
94
  requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '0.18'
119
95
  - - ">="
120
96
  - !ruby/object:Gem::Version
121
- version: 0.18.2
122
- - !ruby/object:Gem::Dependency
123
- name: listen
124
- requirement: !ruby/object:Gem::Requirement
125
- requirements:
126
- - - "~>"
127
- - !ruby/object:Gem::Version
128
- version: '3.1'
129
- type: :runtime
130
- prerelease: false
131
- version_requirements: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - "~>"
134
- - !ruby/object:Gem::Version
135
- version: '3.1'
97
+ version: '0'
136
98
  - !ruby/object:Gem::Dependency
137
- name: ipaddress
99
+ name: ffi
138
100
  requirement: !ruby/object:Gem::Requirement
139
101
  requirements:
140
102
  - - ">="
@@ -148,7 +110,7 @@ dependencies:
148
110
  - !ruby/object:Gem::Version
149
111
  version: '0'
150
112
  - !ruby/object:Gem::Dependency
151
- name: ffi
113
+ name: rb-readline
152
114
  requirement: !ruby/object:Gem::Requirement
153
115
  requirements:
154
116
  - - ">="
@@ -161,7 +123,7 @@ dependencies:
161
123
  - - ">="
162
124
  - !ruby/object:Gem::Version
163
125
  version: '0'
164
- description: A plugin to the Chef knife tool for creating instances on the Microsoft
126
+ description: A plugin to the Chef Infra knife tool for creating instances on the Microsoft
165
127
  Azure platform
166
128
  email: oss@chef.io
167
129
  executables: []
@@ -175,49 +137,29 @@ files:
175
137
  - lib/azure/helpers.rb
176
138
  - lib/azure/resource_management/ARM_deployment_template.rb
177
139
  - lib/azure/resource_management/ARM_interface.rb
140
+ - lib/azure/resource_management/rest/arm_client.rb
141
+ - lib/azure/resource_management/rest/environments.rb
142
+ - lib/azure/resource_management/rest/errors.rb
143
+ - lib/azure/resource_management/rest/http.rb
144
+ - lib/azure/resource_management/rest/rest_object.rb
145
+ - lib/azure/resource_management/rest/secure_connection.rb
146
+ - lib/azure/resource_management/rest/token_provider.rb
178
147
  - lib/azure/resource_management/vnet_config.rb
179
148
  - lib/azure/resource_management/windows_credentials.rb
180
- - lib/azure/service_management/ASM_interface.rb
181
- - lib/azure/service_management/ag.rb
182
- - lib/azure/service_management/certificate.rb
183
- - lib/azure/service_management/connection.rb
184
- - lib/azure/service_management/deploy.rb
185
- - lib/azure/service_management/disk.rb
186
- - lib/azure/service_management/host.rb
187
- - lib/azure/service_management/image.rb
188
- - lib/azure/service_management/loadbalancer.rb
189
- - lib/azure/service_management/rest.rb
190
- - lib/azure/service_management/role.rb
191
- - lib/azure/service_management/storageaccount.rb
192
- - lib/azure/service_management/utility.rb
193
- - lib/azure/service_management/vnet.rb
194
- - lib/chef/knife/azure_ag_create.rb
195
- - lib/chef/knife/azure_ag_list.rb
196
- - lib/chef/knife/azure_image_list.rb
197
- - lib/chef/knife/azure_internal-lb_create.rb
198
- - lib/chef/knife/azure_internal-lb_list.rb
199
- - lib/chef/knife/azure_server_create.rb
200
- - lib/chef/knife/azure_server_delete.rb
201
- - lib/chef/knife/azure_server_list.rb
202
- - lib/chef/knife/azure_server_show.rb
203
- - lib/chef/knife/azure_vnet_create.rb
204
- - lib/chef/knife/azure_vnet_list.rb
205
149
  - lib/chef/knife/azurerm_server_create.rb
206
150
  - lib/chef/knife/azurerm_server_delete.rb
207
151
  - lib/chef/knife/azurerm_server_list.rb
208
152
  - lib/chef/knife/azurerm_server_show.rb
209
153
  - lib/chef/knife/bootstrap/bootstrapper.rb
210
154
  - lib/chef/knife/bootstrap/common_bootstrap_options.rb
211
- - lib/chef/knife/bootstrap_azure.rb
212
155
  - lib/chef/knife/bootstrap_azurerm.rb
213
- - lib/chef/knife/helpers/azure_base.rb
214
156
  - lib/chef/knife/helpers/azurerm_base.rb
215
157
  - lib/knife-azure/version.rb
216
158
  homepage: https://github.com/chef/knife-azure
217
159
  licenses:
218
160
  - Apache 2.0
219
161
  metadata: {}
220
- post_install_message:
162
+ post_install_message:
221
163
  rdoc_options: []
222
164
  require_paths:
223
165
  - lib
@@ -225,16 +167,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
167
  requirements:
226
168
  - - ">="
227
169
  - !ruby/object:Gem::Version
228
- version: '2.6'
170
+ version: '3.1'
229
171
  required_rubygems_version: !ruby/object:Gem::Requirement
230
172
  requirements:
231
173
  - - ">="
232
174
  - !ruby/object:Gem::Version
233
175
  version: '0'
234
176
  requirements: []
235
- rubygems_version: 3.0.3
236
- signing_key:
177
+ rubygems_version: 3.3.27
178
+ signing_key:
237
179
  specification_version: 4
238
- summary: A plugin to the Chef knife tool for creating instances on the Microsoft Azure
239
- platform
180
+ summary: A plugin to the Chef Infra knife tool for creating instances on the Microsoft
181
+ Azure platform
240
182
  test_files: []
@@ -1,310 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require_relative "../azure_interface"
19
- require_relative "rest"
20
- require_relative "connection"
21
-
22
- module Azure
23
- class ServiceManagement
24
- class ASMInterface < AzureInterface
25
- include AzureAPI
26
-
27
- attr_accessor :connection
28
-
29
- def initialize(params = {})
30
- @rest = Rest.new(params)
31
- @connection = Azure::ServiceManagement::Connection.new(@rest)
32
- super
33
- end
34
-
35
- def list_images
36
- connection.images.all
37
- end
38
-
39
- def list_servers
40
- servers = connection.roles.all
41
- cols = ["DNS Name", "VM Name", "Status", "IP Address", "SSH Port", "WinRM Port", "RDP Port"]
42
- rows = []
43
- servers.each do |server|
44
- rows << server.hostedservicename.to_s + ".cloudapp.net" # Info about the DNS name at http://msdn.microsoft.com/en-us/library/ee460806.aspx
45
- rows << server.name.to_s
46
- rows << begin
47
- state = server.status.to_s.downcase
48
- case state
49
- when "shutting-down", "terminated", "stopping", "stopped"
50
- ui.color(state, :red)
51
- when "pending"
52
- ui.color(state, :yellow)
53
- else
54
- ui.color("ready", :green)
55
- end
56
- end
57
- rows << server.publicipaddress.to_s
58
- rows << server.sshport.to_s
59
- rows << server.winrmport.to_s
60
- ports = server.tcpports
61
- rows << rdp_port(ports)
62
- end
63
- display_list(ui, cols, rows)
64
- end
65
-
66
- def rdp_port(arr_ports)
67
- unless arr_ports
68
- return ""
69
- end
70
-
71
- if arr_ports.length > 0
72
- arr_ports.each do |port|
73
- if port["Name"] == "Remote Desktop"
74
- return port["PublicPort"]
75
- end
76
- end
77
- end
78
- ""
79
- end
80
-
81
- def find_server(params = {})
82
- server = connection.roles.find(params[:name], params = { azure_dns_name: params[:azure_dns_name] })
83
- end
84
-
85
- def delete_server(params = {})
86
- server = find_server({ name: params[:name], azure_dns_name: params[:azure_dns_name] })
87
-
88
- unless server
89
- puts "\n"
90
- ui.error("Server #{params[:name]} does not exist")
91
- exit!
92
- end
93
-
94
- puts "\n"
95
- msg_pair(ui, "DNS Name", server.hostedservicename + ".cloudapp.net")
96
- msg_pair(ui, "VM Name", server.name)
97
- msg_pair(ui, "Size", server.size)
98
- msg_pair(ui, "Public Ip Address", server.publicipaddress)
99
- puts "\n"
100
-
101
- begin
102
- ui.confirm("Do you really want to delete this server")
103
- rescue SystemExit # Need to handle this as confirming with N/n raises SystemExit exception
104
- server = nil # Cleanup is implicitly performed in other cloud plugins
105
- exit!
106
- end
107
-
108
- params[:azure_dns_name] = server.hostedservicename
109
-
110
- connection.roles.delete(params)
111
-
112
- puts "\n"
113
- ui.warn("Deleted server #{server.name}")
114
- end
115
-
116
- def show_server(name)
117
- role = connection.roles.find name
118
-
119
- puts ""
120
- if role
121
- details = []
122
- details << ui.color("Role name", :bold, :cyan)
123
- details << role.name
124
- details << ui.color("Status", :bold, :cyan)
125
- details << role.status
126
- details << ui.color("Size", :bold, :cyan)
127
- details << role.size
128
- details << ui.color("Hosted service name", :bold, :cyan)
129
- details << role.hostedservicename
130
- details << ui.color("Deployment name", :bold, :cyan)
131
- details << role.deployname
132
- details << ui.color("Host name", :bold, :cyan)
133
- details << role.hostname
134
- unless role.sshport.nil?
135
- details << ui.color("SSH port", :bold, :cyan)
136
- details << role.sshport
137
- end
138
- unless role.winrmport.nil?
139
- details << ui.color("WinRM port", :bold, :cyan)
140
- details << role.winrmport
141
- end
142
- details << ui.color("Public IP", :bold, :cyan)
143
- details << role.publicipaddress.to_s
144
-
145
- unless role.thumbprint.empty?
146
- details << ui.color("Thumbprint", :bold, :cyan)
147
- details << role.thumbprint
148
- end
149
- puts ui.list(details, :columns_across, 2)
150
- if role.tcpports.length > 0 || role.udpports.length > 0
151
- details.clear
152
- details << ui.color("Ports open", :bold, :cyan)
153
- details << ui.color("Local port", :bold, :cyan)
154
- details << ui.color("IP", :bold, :cyan)
155
- details << ui.color("Public port", :bold, :cyan)
156
- if role.tcpports.length > 0
157
- role.tcpports.each do |port|
158
- details << "tcp"
159
- details << port["LocalPort"]
160
- details << port["Vip"]
161
- details << port["PublicPort"]
162
- end
163
- end
164
- if role.udpports.length > 0
165
- role.udpports.each do |port|
166
- details << "udp"
167
- details << port["LocalPort"]
168
- details << port["Vip"]
169
- details << port["PublicPort"]
170
- end
171
- end
172
- puts ui.list(details, :columns_across, 4)
173
- end
174
- else
175
- puts "No VM found"
176
- end
177
-
178
- rescue => error
179
- puts "#{error.class} and #{error.message}"
180
- end
181
-
182
- def list_internal_lb
183
- lbs = connection.lbs.all
184
- cols = %w{Name Service Subnet VIP}
185
- rows = []
186
- lbs.each do |lb|
187
- cols.each { |col| rows << lb.send(col.downcase).to_s }
188
- end
189
- display_list(ui, cols, rows)
190
- end
191
-
192
- def create_internal_lb(params = {})
193
- connection.lbs.create(params)
194
- end
195
-
196
- def list_vnets
197
- vnets = connection.vnets.all
198
- cols = ["Name", "Affinity Group", "State"]
199
- rows = []
200
- vnets.each do |vnet|
201
- %w{name affinity_group state}.each { |col| rows << vnet.send(col).to_s }
202
- end
203
- display_list(ui, cols, rows)
204
- end
205
-
206
- def create_vnet(params = {})
207
- connection.vnets.create(params)
208
- end
209
-
210
- def list_affinity_groups
211
- affinity_groups = connection.ags.all
212
- cols = %w{Name Location Description}
213
- rows = []
214
- affinity_groups.each do |affinity_group|
215
- cols.each { |col| rows << affinity_group.send(col.downcase).to_s }
216
- end
217
- display_list(ui, cols, rows)
218
- end
219
-
220
- def create_affinity_group(params = {})
221
- connection.ags.create(params)
222
- end
223
-
224
- def create_server(params = {})
225
- remove_hosted_service_on_failure = params[:azure_dns_name]
226
- if connection.hosts.exists?(params[:azure_dns_name])
227
- remove_hosted_service_on_failure = nil
228
- end
229
-
230
- # If Storage Account is not specified, check if the geographic location has one to re-use
231
- if not params[:azure_storage_account]
232
- storage_accts = connection.storageaccounts.all
233
- storage = storage_accts.find { |storage_acct| storage_acct.location.to_s == params[:azure_service_location] }
234
- unless storage
235
- params[:azure_storage_account] = [strip_non_ascii(params[:azure_vm_name]), random_string].join.downcase
236
- remove_storage_service_on_failure = params[:azure_storage_account]
237
- else
238
- remove_storage_service_on_failure = nil
239
- params[:azure_storage_account] = storage.name.to_s
240
- end
241
- else
242
- if connection.storageaccounts.exists?(params[:azure_storage_account])
243
- remove_storage_service_on_failure = nil
244
- else
245
- remove_storage_service_on_failure = params[:azure_storage_account]
246
- end
247
- end
248
-
249
- begin
250
- connection.deploys.create(params)
251
- rescue Exception => e
252
- Chef::Log.error("Failed to create the server -- exception being rescued: #{e}")
253
- backtrace_message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
254
- Chef::Log.debug("#{backtrace_message}")
255
- cleanup_and_exit(remove_hosted_service_on_failure, remove_storage_service_on_failure)
256
- end
257
- end
258
-
259
- def cleanup_and_exit(remove_hosted_service_on_failure, remove_storage_service_on_failure)
260
- Chef::Log.warn("Cleaning up resources...")
261
-
262
- if remove_hosted_service_on_failure
263
- ret_val = connection.hosts.delete(remove_hosted_service_on_failure)
264
- ret_val.content.empty? ? Chef::Log.warn("Deleted created DNS: #{remove_hosted_service_on_failure}.") : Chef::Log.warn("Deletion failed for created DNS:#{remove_hosted_service_on_failure}. " + ret_val.text)
265
- end
266
-
267
- if remove_storage_service_on_failure
268
- ret_val = connection.storageaccounts.delete(remove_storage_service_on_failure)
269
- ret_val.content.empty? ? Chef::Log.warn("Deleted created Storage Account: #{remove_storage_service_on_failure}.") : Chef::Log.warn("Deletion failed for created Storage Account: #{remove_storage_service_on_failure}. " + ret_val.text)
270
- end
271
- exit 1
272
- end
273
-
274
- def get_role_server(dns_name, vm_name)
275
- deploy = connection.deploys.queryDeploy(dns_name)
276
- deploy.find_role(vm_name)
277
- end
278
-
279
- def get_extension(name, publisher)
280
- connection.query_azure("resourceextensions/#{publisher}/#{name}")
281
- end
282
-
283
- def deployment_name(dns_name)
284
- connection.deploys.get_deploy_name_for_hostedservice(dns_name)
285
- end
286
-
287
- def deployment(path)
288
- connection.query_azure(path)
289
- end
290
-
291
- def valid_image?(name)
292
- connection.images.exists?(name)
293
- end
294
-
295
- def vm_image?(name)
296
- connection.images.is_vm_image(name)
297
- end
298
-
299
- def add_extension(name, params = {})
300
- ui.info "Started with Chef Extension deployment on the server #{name}..."
301
- connection.roles.update(name, params)
302
- ui.info "\nSuccessfully deployed Chef Extension on the server #{name}."
303
- rescue Exception => e
304
- Chef::Log.error("Failed to add extension to the server -- exception being rescued: #{e}")
305
- backtrace_message = "#{e.class}: #{e}\n#{e.backtrace.join("\n")}"
306
- Chef::Log.debug("#{backtrace_message}")
307
- end
308
- end
309
- end
310
- end
@@ -1,99 +0,0 @@
1
- #
2
- # Author:: Jeff Mendoza (jeffmendoza@live.com)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- module Azure
20
- class AGs
21
- def initialize(connection)
22
- @connection = connection
23
- end
24
-
25
- def load
26
- @ags ||= begin
27
- @ags = {}
28
- response = @connection.query_azure("affinitygroups",
29
- "get",
30
- "",
31
- "",
32
- true,
33
- false)
34
- response.css("AffinityGroup").each do |ag|
35
- item = AG.new(@connection).parse(ag)
36
- @ags[item.name] = item
37
- end
38
- @ags
39
- end
40
- end
41
-
42
- def all
43
- load.values
44
- end
45
-
46
- def exists?(name)
47
- load.key?(name)
48
- end
49
-
50
- def find(name)
51
- load[name]
52
- end
53
-
54
- def create(params)
55
- ag = AG.new(@connection)
56
- ag.create(params)
57
- end
58
- end
59
- end
60
-
61
- module Azure
62
- class AG
63
- attr_accessor :name, :label, :description, :location
64
-
65
- def initialize(connection)
66
- @connection = connection
67
- end
68
-
69
- def parse(image)
70
- @name = image.at_css("Name").content
71
- @label = image.at_css("Label").content
72
- @description = image.at_css("Description").content if
73
- image.at_css("Description")
74
- @location = image.at_css("Location").content if image.at_css("Location")
75
- self
76
- end
77
-
78
- def create(params)
79
- builder = Nokogiri::XML::Builder.new(encoding: "utf-8") do |xml|
80
- xml.CreateAffinityGroup(
81
- xmlns: "http://schemas.microsoft.com/windowsazure"
82
- ) do
83
- xml.Name params[:azure_ag_name]
84
- xml.Label Base64.strict_encode64(params[:azure_ag_name])
85
- unless params[:azure_ag_desc].nil?
86
- xml.Description params[:azure_ag_desc]
87
- end
88
- xml.Location params[:azure_location]
89
- end
90
- end
91
- @connection.query_azure("affinitygroups",
92
- "post",
93
- builder.to_xml,
94
- "",
95
- true,
96
- false)
97
- end
98
- end
99
- end