Class: Chef::Knife::BmcsServerDelete
Overview
Server Delete Command: Delete a BMCS instance.
Instance Method Summary
collapse
included
Methods included from BmcsHelper
#bmcs_config, #check_can_access_instance, #compartment_id, #compute_client, #confirm, #display_list, #display_server_info, #error_and_exit, #identity_client, #network_client, #show_value, #validate_required_params, #warn_if_page_is_truncated
Instance Method Details
#confirm_deletion ⇒ Object
90
91
92
93
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 90
def confirm_deletion
return if confirm('Delete server? (y/n)')
error_and_exit 'Server delete canceled.'
end
|
#end_progress_indicator ⇒ Object
100
101
102
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 100
def end_progress_indicator
print ui.color("done\n", :magenta)
end
|
#get_wait_options(wait_for) ⇒ Object
82
83
84
85
86
87
88
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 82
def get_wait_options(wait_for)
opts = {
max_interval_seconds: MAX_INTERVAL_SECONDS
}
opts[:max_wait_seconds] = wait_for if wait_for > 0
opts
end
|
#run ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 32
def run
$stdout.sync = true
validate_required_params(i[instance_id], config)
wait_for = validate_wait
confirm_deletion
check_can_access_instance(config[:instance_id])
terminate_instance(config[:instance_id])
wait_for_instance_terminated(config[:instance_id], wait_for) if wait_for
end
|
#show_progress ⇒ Object
95
96
97
98
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 95
def show_progress
print ui.color('.', :magenta)
$stdout.flush
end
|
#terminate_instance(instance_id) ⇒ Object
46
47
48
49
50
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 46
def terminate_instance(instance_id)
compute_client.terminate_instance(instance_id)
ui.msg "Initiated delete of instance #{instance_id}"
end
|
#validate_wait ⇒ Object
73
74
75
76
77
78
79
80
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 73
def validate_wait
wait_for = nil
if config[:wait]
wait_for = Integer(config[:wait])
error_and_exit 'Wait value must be 0 or greater' if wait_for < 0
end
wait_for
end
|
#wait_for_instance_terminated(instance_id, wait_for) ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/chef/knife/bmcs_server_delete.rb', line 52
def wait_for_instance_terminated(instance_id, wait_for)
print ui.color('Waiting for instance to terminate...', :magenta)
begin
begin
compute_client.get_instance(instance_id).wait_until(:lifecycle_state,
OracleBMC::Core::Models::Instance::LIFECYCLE_STATE_TERMINATED,
get_wait_options(wait_for)) do
show_progress
end
ensure
end_progress_indicator
end
rescue OracleBMC::Waiter::Errors::MaximumWaitTimeExceededError
error_and_exit 'Timeout exceeded while waiting for instance to terminate'
rescue OracleBMC::Errors::ServiceError => service_error
raise unless service_error.serviceCode == 'NotAuthorizedOrNotFound'
ui.warn 'Instance not authorized or not found'
end
end
|