Class: Chef::Knife::AzurermServerDelete

Inherits:
Chef::Knife show all
Includes:
AzurermBase
Defined in:
lib/chef/knife/azurerm_server_delete.rb

Constant Summary

Constants included from Azure::ARM::ReadCred

Azure::ARM::ReadCred::CRED_TYPE_DOMAIN_CERTIFICATE, Azure::ARM::ReadCred::CRED_TYPE_DOMAIN_PASSWORD, Azure::ARM::ReadCred::CRED_TYPE_DOMAIN_VISIBLE_PASSWORD, Azure::ARM::ReadCred::CRED_TYPE_GENERIC

Instance Method Summary collapse

Methods included from AzurermBase

#authentication_details, #azure_authentication, #check_token_validity, #find_file, #get_azure_cli_version, included, #is_token_valid?, #locate_config_value, #msg_server_summary, #parse_publish_settings_file, #refresh_token, #service, #token_details_for_linux, #token_details_for_windows, #token_details_from_accessToken_file, #validate_arm_keys!, #validate_azure_login, #validate_params!

Methods included from Azure::ARM::WindowsCredentials

#latest_credential_target, #target_name, #token_details_from_WCM

Instance Method Details

#delete_resource_groupObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/chef/knife/azurerm_server_delete.rb', line 89

def delete_resource_group
  resource_group_name = locate_config_value(:azure_resource_group_name)
  ui.warn "Deleting resource group will delete all the virtual_machines inside it."
  begin
    ui.confirm("Do you really want to delete resource group")
  rescue SystemExit   # Need to handle this as confirming with N/n raises SystemExit exception
    server = nil      # Cleanup is implicitly performed in other cloud plugins
    ui.warn "Resource group not deleted. Proceeding for server delete ..."
    service.delete_server(locate_config_value(:azure_resource_group_name), @vm_name)
    exit
  end
  ui.info "Deleting Resource Group " + resource_group_name + " and Virtual Machine " + @vm_name + " .."
  service.delete_resource_group(locate_config_value(:azure_resource_group_name))
  ui.warn "Deleted resource_group_name #{resource_group_name} and #{@vm_name}"
end

#destroy_item(klass, name, type_name) ⇒ Object

Extracted from Chef::Knife.delete_object, because it has a confirmation step built in… By specifying the ‘–purge’ flag (and also explicitly confirming the server destruction!) the user is already making their intent known. It is not necessary to make them confirm two more times.



59
60
61
62
63
64
65
# File 'lib/chef/knife/azurerm_server_delete.rb', line 59

def destroy_item(klass, name, type_name)
  object = klass.load(name)
  object.destroy
  ui.warn("Deleted #{type_name} #{name}")
rescue Net::HTTPServerException
  ui.warn("Could not find a #{type_name} named #{name} to delete!")
end

#purge_nodeObject



105
106
107
108
109
110
111
112
113
# File 'lib/chef/knife/azurerm_server_delete.rb', line 105

def purge_node
  node_to_delete = config[:chef_node_name] || @vm_name
  if node_to_delete
    destroy_item(Chef::Node, node_to_delete, "node")
    destroy_item(Chef::ApiClient, node_to_delete, "client")
  else
    ui.warn("Node name to purge not provided. Corresponding client node will remain on Chef Server.")
  end
end

#runObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/chef/knife/azurerm_server_delete.rb', line 67

def run
  $stdout.sync = true
  # check azure cli version due to azure changed `azure` to `az` in azure-cli2.0
  get_azure_cli_version
  validate_arm_keys!(:azure_resource_group_name)
  @vm_name = @name_args[0]

  if locate_config_value(:delete_resource_group)
    delete_resource_group
  else
    service.delete_server(locate_config_value(:azure_resource_group_name), @vm_name)
  end

  if config[:purge]
    purge_node
  else
    ui.warn("Corresponding node and client for the #{@vm_name} server were not deleted and remain registered with the Chef Server")
  end
rescue => error
  service.common_arm_rescue_block(error)
end