knife-azure 2.0.13 → 3.0.5

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/azure/azure_interface.rb +1 -1
  3. data/lib/azure/custom_errors.rb +1 -1
  4. data/lib/azure/helpers.rb +1 -1
  5. data/lib/azure/resource_management/ARM_deployment_template.rb +1 -1
  6. data/lib/azure/resource_management/ARM_interface.rb +7 -9
  7. data/lib/azure/resource_management/vnet_config.rb +2 -2
  8. data/lib/azure/resource_management/windows_credentials.rb +6 -7
  9. data/lib/azure/service_management/ASM_interface.rb +1 -1
  10. data/lib/azure/service_management/ag.rb +1 -1
  11. data/lib/azure/service_management/certificate.rb +4 -4
  12. data/lib/azure/service_management/connection.rb +1 -1
  13. data/lib/azure/service_management/deploy.rb +1 -1
  14. data/lib/azure/service_management/disk.rb +1 -1
  15. data/lib/azure/service_management/host.rb +1 -1
  16. data/lib/azure/service_management/image.rb +1 -1
  17. data/lib/azure/service_management/loadbalancer.rb +1 -1
  18. data/lib/azure/service_management/rest.rb +5 -4
  19. data/lib/azure/service_management/role.rb +2 -2
  20. data/lib/azure/service_management/storageaccount.rb +1 -1
  21. data/lib/azure/service_management/utility.rb +1 -1
  22. data/lib/azure/service_management/vnet.rb +1 -1
  23. data/lib/chef/knife/azure_ag_create.rb +4 -4
  24. data/lib/chef/knife/azure_ag_list.rb +1 -1
  25. data/lib/chef/knife/azure_image_list.rb +3 -3
  26. data/lib/chef/knife/azure_internal-lb_create.rb +5 -5
  27. data/lib/chef/knife/azure_internal-lb_list.rb +1 -1
  28. data/lib/chef/knife/azure_server_create.rb +71 -71
  29. data/lib/chef/knife/azure_server_delete.rb +7 -7
  30. data/lib/chef/knife/azure_server_list.rb +1 -1
  31. data/lib/chef/knife/azure_server_show.rb +1 -1
  32. data/lib/chef/knife/azure_vnet_create.rb +5 -5
  33. data/lib/chef/knife/azure_vnet_list.rb +1 -1
  34. data/lib/chef/knife/azurerm_server_create.rb +45 -45
  35. data/lib/chef/knife/azurerm_server_delete.rb +8 -8
  36. data/lib/chef/knife/azurerm_server_list.rb +3 -3
  37. data/lib/chef/knife/azurerm_server_show.rb +3 -3
  38. data/lib/chef/knife/bootstrap/bootstrapper.rb +29 -35
  39. data/lib/chef/knife/bootstrap/common_bootstrap_options.rb +3 -5
  40. data/lib/chef/knife/bootstrap_azure.rb +15 -15
  41. data/lib/chef/knife/bootstrap_azurerm.rb +7 -7
  42. data/lib/chef/knife/helpers/azure_base.rb +54 -65
  43. data/lib/chef/knife/helpers/azurerm_base.rb +46 -57
  44. data/lib/knife-azure/version.rb +2 -2
  45. metadata +13 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9baf62dbe0e3f274214deaf426511698b3ed0acbcb5cacbfa2e1d0b7d557a6d2
4
- data.tar.gz: 634f4598fbb9b5b65779d211df0de9fa6062635c4b3ebf56d31909547b47980a
3
+ metadata.gz: '09efc06fd6788aa94f2af8ace7bd411b9d90c4f3df736a0559997bc5298a5336'
4
+ data.tar.gz: 6cfd515b9371c8d4a7c0c7ed58575f581470c2ecd3ed7604329291c2fb1a1eec
5
5
  SHA512:
6
- metadata.gz: f15b38070e1a624376327ff112dc753d53d717363b11c60057373ce14e9a3b91bf32264718d44456d3e4b89ca839371d35ac08b9b8bd843c9219c00a84ed8089
7
- data.tar.gz: 763b6e6b17c6e14c0ea32e6bcb0a3b79c1c2b37984e0ed25a84f4259eaa56a23ced45eafc46d3d691dbd8dd0e23cbefadf7414acb8baa7ab7fbff0b440a51515
6
+ metadata.gz: a8e905e8136596fa27fa18898f73dd871138f52118792939df1be75da3f4122bcf358529605793b0a517fb7cf37036bf0b3b7f85ff57ffcec1a8aa1efff45652
7
+ data.tar.gz: 25b0054daa620887733644c1ad87983fd7e5c325de4781071c81773dee39f83c7a8c2a308c9ee1341220583be9415d8596fa8ac9cf525fd32d0d2facec11c8d0
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: vasundhara.jagdale@clogeny.com
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Nimisha Sharad (nimisha.sharad@clogeny.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -215,7 +215,7 @@ module Azure
215
215
  if e.body
216
216
  err_json = JSON.parse(e.response.body)
217
217
  if err_json["error"]["code"] == "ResourceNotFound"
218
- return false
218
+ false
219
219
  else
220
220
  raise e
221
221
  end
@@ -229,7 +229,7 @@ module Azure
229
229
  if e.body
230
230
  err_json = JSON.parse(e.response.body)
231
231
  if err_json["error"]["code"] == "ResourceNotFound"
232
- return false
232
+ false
233
233
  else
234
234
  raise e
235
235
  end
@@ -323,7 +323,7 @@ module Azure
323
323
  else
324
324
  ui.log("Creating ResourceGroup....\n\n")
325
325
  resource_group = create_resource_group(params)
326
- Chef::Log.info("ResourceGroup creation successfull.")
326
+ Chef::Log.info("ResourceGroup creation successful.")
327
327
  Chef::Log.info("Resource Group name is: #{resource_group.name}")
328
328
  Chef::Log.info("Resource Group ID is: #{resource_group.id}")
329
329
  end
@@ -355,7 +355,7 @@ module Azure
355
355
 
356
356
  ui.log("Creating Virtual Machine....")
357
357
  deployment = create_virtual_machine_using_template(params)
358
- ui.log("Virtual Machine creation successfull.") unless deployment.nil?
358
+ ui.log("Virtual Machine creation successful.") unless deployment.nil?
359
359
 
360
360
  unless deployment.nil?
361
361
  ui.log("Deployment name is: #{deployment.name}")
@@ -422,8 +422,7 @@ module Azure
422
422
  deploy_params = Deployment.new
423
423
  deploy_params.properties = deploy_prop
424
424
 
425
- deployment = resource_management_client.deployments.create_or_update(params[:azure_resource_group_name], "#{params[:azure_vm_name]}_deploy", deploy_params)
426
- deployment
425
+ resource_management_client.deployments.create_or_update(params[:azure_resource_group_name], "#{params[:azure_vm_name]}_deploy", deploy_params)
427
426
  end
428
427
 
429
428
  def create_vm_extension(params)
@@ -467,8 +466,7 @@ module Azure
467
466
  params[:chef_extension]
468
467
  ).last.name
469
468
  ext_version_split_values = ext_version.split(".")
470
- ext_version = ext_version_split_values[0] + "." + ext_version_split_values[1]
471
- ext_version
469
+ ext_version_split_values[0] + "." + ext_version_split_values[1]
472
470
  end
473
471
 
474
472
  def delete_resource_group(resource_group_name)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Aliasgar Batterywala (aliasgar.batterywala@clogeny.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,7 +41,7 @@ module Azure::ARM
41
41
  if error.body
42
42
  err_json = JSON.parse(error.response.body)
43
43
  if err_json["error"]["code"] == "ResourceNotFound"
44
- return false
44
+ false
45
45
  else
46
46
  raise error
47
47
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Nimisha Sharad (nimisha.sharad@clogeny.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,8 +19,8 @@
19
19
  # XPLAT stores the access token and other information in windows credential manager.
20
20
  # Using FFI to call CredRead function
21
21
  require "chef"
22
- require "mixlib/shellout"
23
- require "ffi"
22
+ require "mixlib/shellout" unless defined?(Mixlib::ShellOut)
23
+ require "ffi" unless defined?(FFI)
24
24
  require "chef/win32/api"
25
25
 
26
26
  module Azure
@@ -123,8 +123,8 @@ module Azure
123
123
  def target_name
124
124
  # cmdkey command is used for accessing windows credential manager.
125
125
  # Multiple credentials get created in windows credential manager for a single Azure account in xplat-cli
126
- # One of them is for common tanent id, which can't be used
127
- # Others end with --0-x,--1-x,--2-x etc, where x represents the total no. of credentails across which the token is divided
126
+ # One of them is for common tenant id, which can't be used
127
+ # Others end with --0-x,--1-x,--2-x etc, where x represents the total no. of credentials across which the token is divided
128
128
  # The one ending with --0-x has the complete accessToken in the credentialBlob.
129
129
  # Refresh Token is split across both credentials (ending with --0-x and --1-x).
130
130
  # Xplat splits the credentials based on the number of bytes of the tokens.
@@ -150,8 +150,7 @@ module Azure
150
150
 
151
151
  # If "azure login" is run for multiple users, there will be multiple credentials
152
152
  # Picking up the latest logged in user's credentials
153
- latest_target = latest_credential_target target_names
154
- latest_target
153
+ latest_credential_target target_names
155
154
  end
156
155
 
157
156
  def latest_credential_target(targets)
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
3
  # License:: Apache License, Version 2.0
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Jeff Mendoza (jeffmendoza@live.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Mukta Aphale (mukta.aphale@clogeny.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -85,7 +85,7 @@ module Azure
85
85
  ca.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
86
86
  ca.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
87
87
  ca.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
88
- ca.sign(key, OpenSSL::Digest::SHA256.new)
88
+ ca.sign(key, OpenSSL::Digest.new("SHA256"))
89
89
  # Generate the SHA1 fingerprint of the der format of the X 509 certificate
90
90
  @fingerprint = OpenSSL::Digest::SHA1.new(ca.to_der)
91
91
  # Create the pfx format of the certificate
@@ -142,7 +142,7 @@ module Azure
142
142
  puts "Certificate Thumbprint: #{@thumbprint.to_s.upcase}"
143
143
  puts "*" * 70
144
144
 
145
- Chef::Config[:knife][:ca_trust_file] = file_path + ".pem" if Chef::Config[:knife][:ca_trust_file].nil?
145
+ config[:ca_trust_file] = file_path + ".pem" if config[:ca_trust_file].nil?
146
146
  cert_data = File.read (file_path + ".b64")
147
147
  add_certificate cert_data, @winrm_cert_passphrase, "pfx", cert_params[:azure_dns_name]
148
148
  @thumbprint
@@ -216,7 +216,7 @@ module Azure
216
216
  cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
217
217
  cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
218
218
  cert.add_extension(ef.create_extension("extendedKeyUsage", "1.3.6.1.5.5.7.3.1", false))
219
- cert.sign(rsa_key, OpenSSL::Digest::SHA1.new)
219
+ cert.sign(rsa_key, OpenSSL::Digest.new("SHA1"))
220
220
  @thumbprint = OpenSSL::Digest::SHA1.new(cert.to_der)
221
221
  cert
222
222
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Aiman Alsari (aiman.alsari@gmail.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,9 +16,10 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "net/https"
20
- require "uri"
21
- require "nokogiri"
19
+ require "net/http" unless defined?(Net::HTTP)
20
+ require "openssl" unless defined?(OpenSSL)
21
+ require "uri" unless defined?(URI)
22
+ require "nokogiri" unless defined?(Nokogiri)
22
23
 
23
24
  module AzureAPI
24
25
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "securerandom"
19
+ require "securerandom" unless defined?(SecureRandom)
20
20
  require_relative "utility"
21
21
 
22
22
  module Azure
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Jeff Mendoza (jeffmendoza@live.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Jeff Mendoza (jeffmendoza@live.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -50,9 +50,9 @@ class Chef
50
50
  :azure_service_location)
51
51
 
52
52
  params = {
53
- azure_ag_name: locate_config_value(:azure_affinity_group),
54
- azure_ag_desc: locate_config_value(:azure_ag_desc),
55
- azure_location: locate_config_value(:azure_service_location),
53
+ azure_ag_name: config[:azure_affinity_group],
54
+ azure_ag_desc: config[:azure_ag_desc],
55
+ azure_location: config[:azure_service_location],
56
56
  }
57
57
 
58
58
  rsp = service.create_affinity_group(params)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Jeff Mendoza (jeffmendoza@live.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -2,7 +2,7 @@
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
3
  # Author:: Seth Chisamore (<schisamo@chef.io>)
4
4
  # Author:: Adam Jacob (<adam@chef.io>)
5
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
5
+ # Copyright:: Copyright (c) Chef Software Inc.
6
6
  # License:: Apache License, Version 2.0
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -40,7 +40,7 @@ class Chef
40
40
  validate_asm_keys!
41
41
  items = service.list_images
42
42
 
43
- image_labels = !locate_config_value(:show_all_fields) ? %w{Name OS Location} : %w{Name Category Label OS Location}
43
+ image_labels = !config[:show_all_fields] ? %w{Name OS Location} : %w{Name Category Label OS Location}
44
44
  image_list = image_labels.map { |label| ui.color(label, :bold) }
45
45
 
46
46
  image_items = image_labels.map(&:downcase)
@@ -49,7 +49,7 @@ class Chef
49
49
  end
50
50
 
51
51
  puts "\n"
52
- puts ui.list(image_list, :uneven_columns_across, !locate_config_value(:show_all_fields) ? 3 : 5)
52
+ puts ui.list(image_list, :uneven_columns_across, !config[:show_all_fields] ? 3 : 5)
53
53
  end
54
54
  end
55
55
  end
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Aiman Alsari (aiman.alsari@gmail.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -50,10 +50,10 @@ class Chef
50
50
  validate_asm_keys!(:azure_load_balancer)
51
51
 
52
52
  params = {
53
- azure_load_balancer: locate_config_value(:azure_load_balancer),
54
- azure_lb_static_vip: locate_config_value(:azure_lb_static_vip),
55
- azure_subnet_name: locate_config_value(:azure_subnet_name),
56
- azure_dns_name: locate_config_value(:azure_dns_name),
53
+ azure_load_balancer: config[:azure_load_balancer],
54
+ azure_lb_static_vip: config[:azure_lb_static_vip],
55
+ azure_subnet_name: config[:azure_subnet_name],
56
+ azure_dns_name: config[:azure_dns_name],
57
57
  }
58
58
 
59
59
  rsp = service.create_internal_lb(params)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Aiman Alsari (aiman.alsari@gmail.com)
3
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -2,7 +2,7 @@
2
2
  # Author:: Barry Davis (barryd@jetstreamsoftware.com)
3
3
  # Author:: Adam Jacob (<adam@chef.io>)
4
4
  # Author:: Seth Chisamore (<schisamo@chef.io>)
5
- # Copyright:: Copyright 2010-2019, Chef Software Inc.
5
+ # Copyright:: Copyright (c) Chef Software Inc.
6
6
  # License:: Apache License, Version 2.0
7
7
  #
8
8
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -32,7 +32,7 @@ class Chef
32
32
  include Knife::Bootstrap::Bootstrapper
33
33
 
34
34
  deps do
35
- require "securerandom"
35
+ require "securerandom" unless defined?(SecureRandom)
36
36
  require "readline"
37
37
  require "chef/json_compat"
38
38
  require "chef/knife/bootstrap"
@@ -196,7 +196,7 @@ class Chef
196
196
 
197
197
  config[:connection_port] = server_def[:port]
198
198
  config[:connection_protocol] = server_def[:connection_protocol]
199
- config[:chef_node_name] = locate_config_value(:chef_node_name) || server_name
199
+ config[:chef_node_name] = config[:chef_node_name] || server_name
200
200
  rescue => error
201
201
  ui.error("Something went wrong. Please use -VV option for more details.")
202
202
  Chef::Log.debug(error.backtrace.join("\n").to_s)
@@ -216,7 +216,7 @@ class Chef
216
216
  alias host_descriptor server_name
217
217
 
218
218
  def plugin_finalize
219
- if locate_config_value(:connection_protocol) == "cloud-api" && locate_config_value(:extended_logs)
219
+ if config[:connection_protocol] == "cloud-api" && config[:extended_logs]
220
220
  print "\nWaiting for the first chef-client run"
221
221
  fetch_chef_client_logs(Time.now, 30)
222
222
  end
@@ -228,8 +228,8 @@ class Chef
228
228
  def wait_until_virtual_machine_ready(retry_interval_in_seconds = 30)
229
229
  vm_status = nil
230
230
  begin
231
- azure_vm_startup_timeout = locate_config_value(:azure_vm_startup_timeout).to_i
232
- azure_vm_ready_timeout = locate_config_value(:azure_vm_ready_timeout).to_i
231
+ azure_vm_startup_timeout = config[:azure_vm_startup_timeout].to_i
232
+ azure_vm_ready_timeout = config[:azure_vm_ready_timeout].to_i
233
233
  vm_status = wait_for_virtual_machine_state(:vm_status_provisioning, azure_vm_startup_timeout, retry_interval_in_seconds)
234
234
  if vm_status != :vm_status_ready
235
235
  begin
@@ -242,7 +242,7 @@ class Chef
242
242
 
243
243
  msg_server_summary(@server)
244
244
 
245
- if locate_config_value(:connection_protocol) == "cloud-api"
245
+ if config[:connection_protocol] == "cloud-api"
246
246
  extension_status = wait_for_resource_extension_state(:wagent_provisioning, 5, retry_interval_in_seconds)
247
247
 
248
248
  if extension_status != :extension_installing
@@ -323,7 +323,7 @@ class Chef
323
323
  end
324
324
 
325
325
  def get_virtual_machine_status
326
- @server = service.get_role_server(locate_config_value(:azure_dns_name), locate_config_value(:azure_vm_name))
326
+ @server = service.get_role_server(config[:azure_dns_name], config[:azure_vm_name])
327
327
  if @server.nil?
328
328
  :vm_status_not_detected
329
329
  else
@@ -340,14 +340,14 @@ class Chef
340
340
  end
341
341
 
342
342
  def get_extension_status
343
- deployment_name = service.deployment_name(locate_config_value(:azure_dns_name))
344
- deployment = service.deployment("hostedservices/#{locate_config_value(:azure_dns_name)}/deployments/#{deployment_name}")
343
+ deployment_name = service.deployment_name(config[:azure_dns_name])
344
+ deployment = service.deployment("hostedservices/#{config[:azure_dns_name]}/deployments/#{deployment_name}")
345
345
  extension_status = {}
346
346
 
347
347
  if deployment.at_css("Deployment Name") != nil
348
348
  role_list_xml = deployment.css("RoleInstanceList RoleInstance")
349
349
  role_list_xml.each do |role|
350
- if role.at_css("RoleName").text == locate_config_value(:azure_vm_name)
350
+ if role.at_css("RoleName").text == config[:azure_vm_name]
351
351
  lnx_waagent_fail_msg = "Failed to deserialize the status reported by the Guest Agent"
352
352
  waagent_status_msg = role.at_css("GuestAgentStatus FormattedMessage Message").text
353
353
  if role.at_css("GuestAgentStatus Status").text == "Ready"
@@ -384,32 +384,32 @@ class Chef
384
384
 
385
385
  def create_server_def
386
386
  server_def = {
387
- azure_storage_account: locate_config_value(:azure_storage_account),
388
- azure_api_host_name: locate_config_value(:azure_api_host_name),
389
- azure_dns_name: locate_config_value(:azure_dns_name),
390
- azure_vm_name: locate_config_value(:azure_vm_name),
391
- azure_service_location: locate_config_value(:azure_service_location),
392
- azure_os_disk_name: locate_config_value(:azure_os_disk_name),
393
- azure_source_image: locate_config_value(:azure_source_image),
394
- azure_vm_size: locate_config_value(:azure_vm_size),
395
- tcp_endpoints: locate_config_value(:tcp_endpoints),
396
- udp_endpoints: locate_config_value(:udp_endpoints),
397
- connection_protocol: locate_config_value(:connection_protocol),
398
- azure_connect_to_existing_dns: locate_config_value(:azure_connect_to_existing_dns),
399
- connection_user: locate_config_value(:connection_user),
400
- azure_availability_set: locate_config_value(:azure_availability_set),
401
- azure_affinity_group: locate_config_value(:azure_affinity_group),
402
- azure_network_name: locate_config_value(:azure_network_name),
403
- azure_subnet_name: locate_config_value(:azure_subnet_name),
404
- ssl_cert_fingerprint: locate_config_value(:thumbprint),
405
- cert_path: locate_config_value(:cert_path),
406
- cert_password: locate_config_value(:cert_passphrase),
407
- winrm_ssl: locate_config_value(:winrm_ssl),
408
- winrm_max_timeout: locate_config_value(:winrm_max_timeout).to_i * 60 * 1000, # converting minutes to milliseconds
409
- winrm_max_memory_per_shell: locate_config_value(:winrm_max_memory_per_shell),
387
+ azure_storage_account: config[:azure_storage_account],
388
+ azure_api_host_name: config[:azure_api_host_name],
389
+ azure_dns_name: config[:azure_dns_name],
390
+ azure_vm_name: config[:azure_vm_name],
391
+ azure_service_location: config[:azure_service_location],
392
+ azure_os_disk_name: config[:azure_os_disk_name],
393
+ azure_source_image: config[:azure_source_image],
394
+ azure_vm_size: config[:azure_vm_size],
395
+ tcp_endpoints: config[:tcp_endpoints],
396
+ udp_endpoints: config[:udp_endpoints],
397
+ connection_protocol: config[:connection_protocol],
398
+ azure_connect_to_existing_dns: config[:azure_connect_to_existing_dns],
399
+ connection_user: config[:connection_user],
400
+ azure_availability_set: config[:azure_availability_set],
401
+ azure_affinity_group: config[:azure_affinity_group],
402
+ azure_network_name: config[:azure_network_name],
403
+ azure_subnet_name: config[:azure_subnet_name],
404
+ ssl_cert_fingerprint: config[:thumbprint],
405
+ cert_path: config[:cert_path],
406
+ cert_password: config[:cert_passphrase],
407
+ winrm_ssl: config[:winrm_ssl],
408
+ winrm_max_timeout: config[:winrm_max_timeout].to_i * 60 * 1000, # converting minutes to milliseconds
409
+ winrm_max_memory_per_shell: config[:winrm_max_memory_per_shell],
410
410
  }
411
411
 
412
- if locate_config_value(:connection_protocol) == "cloud-api"
412
+ if config[:connection_protocol] == "cloud-api"
413
413
  server_def[:chef_extension] = get_chef_extension_name
414
414
  server_def[:chef_extension_publisher] = get_chef_extension_publisher
415
415
  server_def[:chef_extension_version] = get_chef_extension_version
@@ -420,20 +420,20 @@ class Chef
420
420
  # We can specify the AdminUsername after API version 2013-03-01. However, in this API version,
421
421
  # the AdminUsername is a required parameter.
422
422
  # Also, the user name cannot be Administrator, Admin, Admin1 etc, for enhanced security (provided by Azure)
423
- if locate_config_value(:connection_user).nil? || locate_config_value(:connection_user).downcase =~ /admin*/
423
+ if config[:connection_user].nil? || config[:connection_user].downcase =~ /admin*/
424
424
  ui.error("Connection User is compulsory parameter and it cannot be named 'admin*'")
425
425
  exit 1
426
426
  # take cares of when user name contains domain
427
427
  # azure add role api doesn't support '\\' in user name
428
- elsif locate_config_value(:connection_user).split('\\').length.eql?(2)
429
- server_def[:connection_user] = locate_config_value(:connection_user).split('\\')[1]
428
+ elsif config[:connection_user].split('\\').length.eql?(2)
429
+ server_def[:connection_user] = config[:connection_user].split('\\')[1]
430
430
  end
431
431
  else
432
- unless locate_config_value(:connection_user)
432
+ unless config[:connection_user]
433
433
  ui.error("Connection User is compulsory parameter")
434
434
  exit 1
435
435
  end
436
- unless locate_config_value(:connection_password) || locate_config_value(:ssh_identity_file)
436
+ unless config[:connection_password] || config[:ssh_identity_file]
437
437
  ui.error("Specify either SSH Key or SSH Password")
438
438
  exit 1
439
439
  end
@@ -442,52 +442,52 @@ class Chef
442
442
 
443
443
  if is_image_windows?
444
444
  server_def[:os_type] = "Windows"
445
- server_def[:admin_password] = locate_config_value(:connection_password)
446
- server_def[:connection_protocol] = locate_config_value(:connection_protocol) || "winrm"
445
+ server_def[:admin_password] = config[:connection_password]
446
+ server_def[:connection_protocol] = config[:connection_protocol] || "winrm"
447
447
  else
448
448
  server_def[:os_type] = "Linux"
449
- server_def[:connection_protocol] = locate_config_value(:connection_protocol).nil? || locate_config_value(:connection_protocol) == "winrm" ? "ssh" : locate_config_value(:connection_protocol)
450
- server_def[:connection_user] = locate_config_value(:connection_user)
451
- server_def[:connection_password] = locate_config_value(:connection_password)
452
- server_def[:ssh_identity_file] = locate_config_value(:ssh_identity_file)
453
- server_def[:identity_file_passphrase] = locate_config_value(:identity_file_passphrase)
449
+ server_def[:connection_protocol] = config[:connection_protocol].nil? || config[:connection_protocol] == "winrm" ? "ssh" : config[:connection_protocol]
450
+ server_def[:connection_user] = config[:connection_user]
451
+ server_def[:connection_password] = config[:connection_password]
452
+ server_def[:ssh_identity_file] = config[:ssh_identity_file]
453
+ server_def[:identity_file_passphrase] = config[:identity_file_passphrase]
454
454
  end
455
455
 
456
- azure_connect_to_existing_dns = locate_config_value(:azure_connect_to_existing_dns)
456
+ azure_connect_to_existing_dns = config[:azure_connect_to_existing_dns]
457
457
  if is_image_windows? && server_def[:connection_protocol] == "winrm"
458
- port = locate_config_value(:connection_port) || "5985"
459
- port = locate_config_value(:connection_port) || Random.rand(64000) + 1000 if azure_connect_to_existing_dns
458
+ port = config[:connection_port] || "5985"
459
+ port = config[:connection_port] || Random.rand(64000) + 1000 if azure_connect_to_existing_dns
460
460
  elsif server_def[:connection_protocol] == "ssh"
461
- port = locate_config_value(:connection_port) || "22"
462
- port = locate_config_value(:connection_port) || Random.rand(64000) + 1000 if azure_connect_to_existing_dns
461
+ port = config[:connection_port] || "22"
462
+ port = config[:connection_port] || Random.rand(64000) + 1000 if azure_connect_to_existing_dns
463
463
  end
464
464
 
465
465
  server_def[:port] = port
466
466
 
467
- server_def[:is_vm_image] = service.vm_image?(locate_config_value(:azure_source_image))
468
- server_def[:azure_domain_name] = locate_config_value(:azure_domain_name) if locate_config_value(:azure_domain_name)
467
+ server_def[:is_vm_image] = service.vm_image?(config[:azure_source_image])
468
+ server_def[:azure_domain_name] = config[:azure_domain_name] if config[:azure_domain_name]
469
469
 
470
- if locate_config_value(:azure_domain_user)
470
+ if config[:azure_domain_user]
471
471
  # extract domain name since it should be part of username
472
- case locate_config_value(:azure_domain_user)
472
+ case config[:azure_domain_user]
473
473
  when /(\S+)\\(.+)/ # format - fully-qualified-DNS-domain\username
474
- server_def[:azure_domain_name] = $1 if locate_config_value(:azure_domain_name).nil?
474
+ server_def[:azure_domain_name] = $1 if config[:azure_domain_name].nil?
475
475
  server_def[:azure_user_domain_name] = $1
476
476
  server_def[:azure_domain_user] = $2
477
477
  when /(.+)@(\S+)/ # format - user@fully-qualified-DNS-domain
478
- server_def[:azure_domain_name] = $2 if locate_config_value(:azure_domain_name).nil?
478
+ server_def[:azure_domain_name] = $2 if config[:azure_domain_name].nil?
479
479
  server_def[:azure_user_domain_name] = $2
480
480
  server_def[:azure_domain_user] = $1
481
481
  else
482
- if locate_config_value(:azure_domain_name).nil?
482
+ if config[:azure_domain_name].nil?
483
483
  ui.error('--azure-domain-name should be specified if --azure-domain-user is not in one of the following formats: fully-qualified-DNS-domain\username, user@fully-qualified-DNS-domain')
484
484
  exit 1
485
485
  end
486
- server_def[:azure_domain_user] = locate_config_value(:azure_domain_user)
486
+ server_def[:azure_domain_user] = config[:azure_domain_user]
487
487
  end
488
488
  end
489
- server_def[:azure_domain_passwd] = locate_config_value(:azure_domain_passwd)
490
- server_def[:azure_domain_ou_dn] = locate_config_value(:azure_domain_ou_dn)
489
+ server_def[:azure_domain_passwd] = config[:azure_domain_passwd]
490
+ server_def[:azure_domain_ou_dn] = config[:azure_domain_ou_dn]
491
491
 
492
492
  server_def
493
493
  end
@@ -499,17 +499,17 @@ class Chef
499
499
  end
500
500
 
501
501
  def set_configs
502
- unless locate_config_value(:connection_user).nil?
503
- config[:connection_user] = locate_config_value(:connection_user)
502
+ unless config[:connection_user].nil?
503
+ config[:connection_user] = config[:connection_user]
504
504
  end
505
505
 
506
- unless locate_config_value(:connection_password).nil?
507
- config[:connection_password] = locate_config_value(:connection_password)
506
+ unless config[:connection_password].nil?
507
+ config[:connection_password] = config[:connection_password]
508
508
  end
509
509
 
510
- config[:azure_dns_name] = get_dns_name(locate_config_value(:azure_dns_name))
511
- config[:azure_vm_name] = locate_config_value(:azure_dns_name) unless locate_config_value(:azure_vm_name)
512
- config[:chef_node_name] = locate_config_value(:azure_vm_name) unless locate_config_value(:chef_node_name)
510
+ config[:azure_dns_name] = get_dns_name(config[:azure_dns_name])
511
+ config[:azure_vm_name] = config[:azure_dns_name] unless config[:azure_vm_name]
512
+ config[:chef_node_name] = config[:azure_vm_name] unless config[:chef_node_name]
513
513
  end
514
514
 
515
515
  # This is related to Windows VM's specifically and computer name
@@ -520,10 +520,10 @@ class Chef
520
520
  def get_dns_name(azure_dns_name, prefix = "az-")
521
521
  return azure_dns_name unless azure_dns_name.nil?
522
522
 
523
- if locate_config_value(:azure_vm_name).nil?
523
+ if config[:azure_vm_name].nil?
524
524
  (prefix + SecureRandom.hex((MAX_VM_NAME_CHARACTERS - prefix.length) / 2))
525
525
  else
526
- locate_config_value(:azure_vm_name)
526
+ config[:azure_vm_name]
527
527
  end
528
528
  end
529
529
  end