forked from ManageIQ/manageiq-ui-classic
-
Notifications
You must be signed in to change notification settings - Fork 0
/
disassociate_floating_ip.rb
122 lines (114 loc) · 4.57 KB
/
disassociate_floating_ip.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
module Mixins
module Actions
module VmActions
module DisassociateFloatingIp
def disassociate_floating_ip_vms
assert_privileges("instance_disassociate_floating_ip")
recs = checked_or_params
@record = find_record_with_rbac(VmCloud, recs.first)
if @record.supports_disassociate_floating_ip? && @record.ext_management_system.present?
if @explorer
disassociate_floating_ip
@refresh_partial = "vm_common/disassociate_floating_ip"
else
render :update do |page|
page << javascript_prologue
page.redirect_to :controller => 'vm',
:action => 'disassociate_floating_ip',
:rec_id => @record.id,
:escape => false
end
end
else
add_flash(_("Unable to disassociate Floating IP from Instance \"%{name}\": %{details}") % {
:name => @record.name,
:details => @record.unsupported_reason(:disassociate_floating_ip)}, :error)
end
end
alias instance_disassociate_floating_ip disassociate_floating_ip_vms
def disassociate_floating_ip
assert_privileges("instance_disassociate_floating_ip")
@record ||= find_record_with_rbac(VmCloud, params[:rec_id])
drop_breadcrumb(
:name => _("Disssociate Floating IP from Instance '%{name}'") % {:name => @record.name},
:url => "/vm_cloud/disassociate_floating_ip"
) unless @explorer
@sb[:explorer] = @explorer
@in_a_form = true
@live_migrate = true
render :action => "show" unless @explorer
end
def disassociate_floating_ip_form_fields
assert_privileges("instance_disassociate_floating_ip")
@record = find_record_with_rbac(VmCloud, params[:id])
floating_ips = []
unless @record.ext_management_system.nil?
@record.floating_ips.each do |floating_ip|
floating_ips << floating_ip
end
end
render :json => {
:floating_ips => floating_ips
}
end
def disassociate_floating_ip_vm
assert_privileges("instance_disassociate_floating_ip")
@record = find_record_with_rbac(VmCloud, params[:id])
case params[:button]
when "cancel" then disassociate_handle_cancel_button
when "submit" then disassociate_handle_submit_button
end
end
private
def disassociate_handle_cancel_button
add_flash(_("Disassociation of Floating IP from Instance \"%{name}\" was cancelled by the user") % {:name => @record.name})
@record = @sb[:action] = nil
if @sb[:explorer]
replace_right_cell
else
session[:flash_msgs] = @flash_array.dup
render :update do |page|
page << javascript_prologue
page.redirect_to previous_breadcrumb_url
end
end
end
def disassociate_handle_submit_button
if @record.supports_disassociate_floating_ip?
floating_ip = params[:floating_ip]
begin
@record.disassociate_floating_ip_queue(session[:userid], floating_ip)
add_flash(_("Disassociating Floating IP %{address} from Instance \"%{name}\"") % {
:address => floating_ip,
:name => @record.name
})
rescue => ex
add_flash(_("Unable to disassociate Floating IP %{address} from Instance \"%{name}\": %{details}") % {
:address => floating_ip,
:name => @record.name,
:details => get_error_message_from_fog(ex.to_s)
}, :error)
end
else
add_flash(_("Unable to disassociate Floating IP from Instance \"%{name}\": %{details}") % {
:name => @record.name,
:details => @record.unsupported_reason(:disassociate_floating_ip)
}, :error)
end
params[:id] = @record.id.to_s # reset id in params for show
@record = nil
@sb[:action] = nil
if @sb[:explorer]
replace_right_cell
else
session[:flash_msgs] = @flash_array.dup
render :update do |page|
page << javascript_prologue
page.redirect_to previous_breadcrumb_url
end
end
end
end
end
end
end