foreman_datacenter 1.19.7 → 1.20.0

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_datacenter/modal.js +9 -22
  3. data/app/assets/stylesheets/foreman_datacenter/datacenter.css +0 -3
  4. data/app/assets/stylesheets/foreman_datacenter/device_roles.css +0 -32
  5. data/app/controllers/api/v2/foreman_datacenter/device_interfaces_controller.rb +1 -1
  6. data/app/controllers/api/v2/foreman_datacenter/devices_controller.rb +1 -1
  7. data/app/controllers/api/v2/foreman_datacenter/management_devices_controller.rb +1 -1
  8. data/app/controllers/api/v2/foreman_datacenter/power_outlets_controller.rb +35 -35
  9. data/app/controllers/concerns/foreman_datacenter/controller/parameters/comment.rb +1 -1
  10. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_port.rb +1 -1
  11. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_port_template.rb +1 -1
  12. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_server_port.rb +1 -1
  13. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_server_port_template.rb +1 -1
  14. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_bay.rb +1 -1
  15. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_bay_template.rb +1 -1
  16. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_interface.rb +1 -1
  17. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_interface_connection.rb +1 -1
  18. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_module.rb +1 -1
  19. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_role.rb +1 -1
  20. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_type.rb +1 -1
  21. data/app/controllers/foreman_datacenter/application_controller.rb +0 -2
  22. data/app/controllers/foreman_datacenter/console_ports_controller.rb +4 -2
  23. data/app/controllers/foreman_datacenter/console_server_ports_controller.rb +10 -5
  24. data/app/controllers/foreman_datacenter/device_bays_controller.rb +10 -5
  25. data/app/controllers/foreman_datacenter/device_interface_connections_controller.rb +4 -7
  26. data/app/controllers/foreman_datacenter/device_interfaces_controller.rb +6 -3
  27. data/app/controllers/foreman_datacenter/device_modules_controller.rb +7 -3
  28. data/app/controllers/foreman_datacenter/device_types_controller.rb +2 -1
  29. data/app/controllers/foreman_datacenter/devices_controller.rb +25 -8
  30. data/app/controllers/foreman_datacenter/management_devices_controller.rb +6 -3
  31. data/app/controllers/foreman_datacenter/power_outlets_controller.rb +10 -5
  32. data/app/controllers/foreman_datacenter/power_ports_controller.rb +10 -5
  33. data/app/controllers/foreman_datacenter/rack_groups_controller.rb +1 -6
  34. data/app/controllers/foreman_datacenter/sites_controller.rb +1 -7
  35. data/app/models/foreman_datacenter/device.rb +0 -1
  36. data/app/models/foreman_datacenter/device_interface_connection.rb +2 -2
  37. data/app/models/foreman_datacenter/site.rb +0 -1
  38. data/app/views/foreman_datacenter/console_ports/index.html.erb +5 -27
  39. data/app/views/foreman_datacenter/device_interface_connections/index.html.erb +3 -23
  40. data/app/views/foreman_datacenter/device_roles/index.html.erb +1 -1
  41. data/app/views/foreman_datacenter/device_roles/show.html.erb +1 -1
  42. data/app/views/foreman_datacenter/device_types/index.html.erb +1 -1
  43. data/app/views/foreman_datacenter/device_types/show.html.erb +1 -1
  44. data/app/views/foreman_datacenter/devices/_interface.html.erb +3 -17
  45. data/app/views/foreman_datacenter/devices/index.html.erb +1 -1
  46. data/app/views/foreman_datacenter/devices/show.html.erb +1 -4
  47. data/app/views/foreman_datacenter/manufacturers/index.html.erb +1 -1
  48. data/app/views/foreman_datacenter/manufacturers/show.html.erb +1 -1
  49. data/app/views/foreman_datacenter/platforms/index.html.erb +1 -1
  50. data/app/views/foreman_datacenter/platforms/show.html.erb +8 -8
  51. data/app/views/foreman_datacenter/rack_groups/show.html.erb +1 -4
  52. data/app/views/foreman_datacenter/rack_groups/welcome.html.erb +0 -2
  53. data/app/views/foreman_datacenter/racks/_device_position.html.erb +3 -21
  54. data/app/views/foreman_datacenter/racks/_device_position.html.erb.back +28 -0
  55. data/app/views/foreman_datacenter/racks/_unpositioned_devices.html.erb +1 -1
  56. data/app/views/foreman_datacenter/racks/welcome.html.erb +0 -2
  57. data/app/views/foreman_datacenter/sites/show.html.erb +1 -4
  58. data/config/routes.rb +0 -2
  59. data/lib/foreman_datacenter/engine.rb +2 -2
  60. data/lib/foreman_datacenter/version.rb +1 -1
  61. metadata +4 -8
  62. data/app/assets/stylesheets/foreman_datacenter/horizontal-scroll.css +0 -9
  63. data/app/controllers/concerns/foreman_datacenter/controller/racks.rb +0 -10
  64. data/app/views/foreman_datacenter/rack_groups/racks.html.erb +0 -18
  65. data/app/views/foreman_datacenter/racks/_dp.html.erb +0 -46
  66. data/app/views/foreman_datacenter/sites/racks.html.erb +0 -36
@@ -3,10 +3,10 @@ module ForemanDatacenter
3
3
  include Foreman::Controller::AutoCompleteSearch
4
4
  include ForemanDatacenter::Controller::Parameters::DeviceInterfaceConnection
5
5
 
6
- before_action :find_resource, only: [:destroy, :planned, :connected, :edit]
6
+ before_action :find_resource, only: [:destroy, :planned, :connected]
7
7
 
8
8
  def index
9
- @device_interface_connections = resource_base_search_and_page.includes(second_interface: [:device], first_interface: [:device])
9
+ @device_interface_connections = resource_base_search_and_page.includes(:second_interface, first_interface: [:device])
10
10
  end
11
11
 
12
12
  def new
@@ -15,16 +15,13 @@ module ForemanDatacenter
15
15
  )
16
16
  end
17
17
 
18
- def edit
19
- @device = @device_interface_connection.first_device
20
- end
21
-
22
18
  def create
23
19
  @device_interface_connection = ForemanDatacenter::DeviceInterfaceConnection.new(device_interface_connection_params.merge(interface_a: params[:device_interface_id]))
24
20
  @device_interface_connection.first_interface = get_device_interface
25
21
 
26
22
  if @device_interface_connection.save
27
- process_success(success_msg: "Connection was successfully created.", success_redirect: device_url(id: @device_interface_connection.first_interface.device))
23
+ redirect_to device_url(@device_interface_connection.first_interface.device),
24
+ notice: 'Connection was successfully created.'
28
25
  else
29
26
  process_error object: @device_interface_connection
30
27
  end
@@ -28,7 +28,8 @@ module ForemanDatacenter
28
28
  @device_interface = ForemanDatacenter::DeviceInterface.new(device_interface_params.merge(device_id: params[:device_id]))
29
29
 
30
30
  if @device_interface.save
31
- process_success(success_msg: "Device interface was successfully created.", success_redirect: device_url(id: @device_interface.device.id))
31
+ redirect_to device_url(id: @device_interface.device_id),
32
+ notice: 'Device interface was successfully created.'
32
33
  else
33
34
  process_error object: @device_interface
34
35
  end
@@ -36,7 +37,8 @@ module ForemanDatacenter
36
37
 
37
38
  def update
38
39
  if @device_interface.update(device_interface_params)
39
- process_success(success_msg: "Device interface was successfully updated.", success_redirect: device_url(id: @device_interface.device.id))
40
+ redirect_to device_url(id: @device_interface.device_id),
41
+ notice: 'Device interface was successfully updated.'
40
42
  else
41
43
  process_error object: @device_interface
42
44
  end
@@ -44,7 +46,8 @@ module ForemanDatacenter
44
46
 
45
47
  def destroy
46
48
  if @device_interface.destroy
47
- process_success(success_msg: "Device interface was successfully destroyed.", success_redirect: device_url(id: @device_interface.device.id))
49
+ redirect_to device_url(id: @device_interface.device_id),
50
+ notice: 'Device interface was successfully destroyed.'
48
51
  else
49
52
  process_error object: @device_interface
50
53
  end
@@ -15,8 +15,10 @@ module ForemanDatacenter
15
15
 
16
16
  def create
17
17
  @device_module = ForemanDatacenter::DeviceModule.new(device_module_params.merge(device_id: params[:device_id]))
18
+
18
19
  if @device_module.save
19
- process_success(success_msg: "Device module was successfully created.", success_redirect: inventory_device_url(id: @device_module.device_id))
20
+ redirect_to inventory_device_url(id: @device_module.device_id),
21
+ notice: 'Device module was successfully created.'
20
22
  else
21
23
  process_error object: @device_module
22
24
  end
@@ -24,7 +26,8 @@ module ForemanDatacenter
24
26
 
25
27
  def update
26
28
  if @device_module.update(device_module_params)
27
- process_success(success_msg: "Device module was successfully updated.", success_redirect: inventory_device_url(id: @device_module.device_id))
29
+ redirect_to inventory_device_url(id: @device_module.device_id),
30
+ notice: 'Device module was successfully updated.'
28
31
  else
29
32
  process_error object: @device_module
30
33
  end
@@ -32,7 +35,8 @@ module ForemanDatacenter
32
35
 
33
36
  def destroy
34
37
  if @device_module.destroy
35
- process_success(success_msg: "Device module was successfully destroyed.", success_redirect: inventory_device_url(id: @device_module.device_id))
38
+ redirect_to inventory_device_url(id: @device_module.device_id),
39
+ notice: 'Device module was successfully destroyed.'
36
40
  else
37
41
  process_error object: @device_module
38
42
  end
@@ -33,7 +33,8 @@ module ForemanDatacenter
33
33
 
34
34
  def update
35
35
  if @device_type.update(device_type_params)
36
- process_success object: @device_type
36
+ redirect_to device_type_url(@device_type),
37
+ notice: 'Device type was successfully updated'
37
38
  else
38
39
  process_error object: @device_type
39
40
  end
@@ -17,8 +17,11 @@ module ForemanDatacenter
17
17
 
18
18
  def show
19
19
  @device = ForemanDatacenter::Device.includes(
20
- power_ports: [:power_outlet],
21
- console_ports: [:console_server_port],
20
+ power_ports: [:power_outlet, :device],
21
+ power_outlets: [:device, :power_port],
22
+ console_ports: [:console_server_port, :device],
23
+ console_server_ports: [:console_port, :device],
24
+ device_bays: [:installed_device],
22
25
  comments: [:user]
23
26
  ).find(params[:id])
24
27
  @comments = @device.comments
@@ -60,10 +63,21 @@ module ForemanDatacenter
60
63
  end
61
64
 
62
65
  def destroy
63
- if @device.destroy
64
- process_success success_redirect: "/datacenter/devices"
66
+ unless params['object_only']
67
+ if @device.destroy
68
+ process_success success_redirect: "/datacenter/devices"
69
+ else
70
+ process_error object: @device
71
+ end
65
72
  else
66
- process_error object: @device
73
+ if @device.host
74
+ @device.host.destroy
75
+ new_device_name = "Unassigned device (former: #{@device.name})"
76
+ @device.update(name: new_device_name)
77
+ process_success success_redirect: '/datacenter/devices', success_msg: 'Associated host deleted'
78
+ else
79
+ process_error success_redirect: '/datacenter/devices', error_msg: 'Associated host not found'
80
+ end
67
81
  end
68
82
  end
69
83
 
@@ -96,7 +110,7 @@ module ForemanDatacenter
96
110
  @device.non_management_interfaces.
97
111
  where(id: params[:interfaces]).
98
112
  destroy_all
99
- process_success(success_msg: "Selected interfaces were successfully destroyed.", success_redirect: device_url(id: @device))
113
+ redirect_to device_url(@device)
100
114
  end
101
115
 
102
116
  def qr_code
@@ -107,9 +121,11 @@ module ForemanDatacenter
107
121
 
108
122
  def sync_interfaces_with_host
109
123
  if @device.sync_interfaces_with_host
110
- process_success(success_msg: "Device successfully synchronized.", success_redirect: device_url(id: @device))
124
+ notice("Device successfully synchronized.")
125
+ redirect_to device_url(@device)
111
126
  else
112
- process_error(error_msg: "Unsuccessfully synchronization.", redirect: device_url(@device))
127
+ error("Unsuccessful synchronization.")
128
+ redirect_to device_url(@device)
113
129
  end
114
130
  end
115
131
 
@@ -138,3 +154,4 @@ module ForemanDatacenter
138
154
  end
139
155
  end
140
156
  end
157
+
@@ -16,7 +16,8 @@ module ForemanDatacenter
16
16
  @management_device = ManagementDevice.new(management_device_params.merge(device_id: params[:device_id]))
17
17
 
18
18
  if @management_device.save
19
- process_success(success_redirect: device_url(id: @management_device.device))
19
+ redirect_to device_url(@management_device.device),
20
+ notice: 'New management device was successfully created'
20
21
  else
21
22
  process_error object: @management_device
22
23
  end
@@ -24,7 +25,8 @@ module ForemanDatacenter
24
25
 
25
26
  def update
26
27
  if @management_device.update(management_device_params)
27
- process_success(success_redirect: device_url(id: @management_device.device))
28
+ redirect_to device_url(@management_device.device),
29
+ notice: 'Management device was successfully updated'
28
30
  else
29
31
  process_error object: @management_device
30
32
  end
@@ -32,7 +34,8 @@ module ForemanDatacenter
32
34
 
33
35
  def destroy
34
36
  if @management_device.destroy
35
- process_success(success_redirect: device_url(id: @management_device.device))
37
+ redirect_to device_url(@management_device.device),
38
+ notice: 'Management device was successfully destroyed'
36
39
  else
37
40
  process_error object: @management_device
38
41
  end
@@ -18,7 +18,8 @@ module ForemanDatacenter
18
18
  @power_outlet = PowerOutlet.new(power_outlet_params.merge(device_id: params[:device_id]))
19
19
 
20
20
  if @power_outlet.save
21
- process_success(success_redirect: device_url(id: @power_outlet.device_id))
21
+ redirect_to device_url(id: @power_outlet.device_id),
22
+ notice: 'Power outlet was successfully created.'
22
23
  else
23
24
  process_error object: @power_outlet
24
25
  end
@@ -26,7 +27,8 @@ module ForemanDatacenter
26
27
 
27
28
  def update
28
29
  if @power_outlet.update(power_outlet_params)
29
- process_success(success_redirect: device_url(id: @power_outlet.device_id))
30
+ redirect_to device_url(id: @power_outlet.device_id),
31
+ notice: 'Power outlet was successfully updated.'
30
32
  else
31
33
  process_error object: @power_outlet
32
34
  end
@@ -34,7 +36,8 @@ module ForemanDatacenter
34
36
 
35
37
  def destroy
36
38
  if @power_outlet.destroy
37
- process_success(success_redirect: device_url(id: @power_outlet.device_id))
39
+ redirect_to device_url(id: @power_outlet.device_id),
40
+ notice: 'Power outlet was successfully destroyed.'
38
41
  else
39
42
  process_error object: @power_outlet
40
43
  end
@@ -49,12 +52,14 @@ module ForemanDatacenter
49
52
  @power_outlet,
50
53
  params[:power_port][:connection_status]
51
54
  )
52
- process_success(success_msg: "Power outlet was successfully connected.", success_redirect: device_url(id: @power_outlet.device_id))
55
+ redirect_to device_url(id: @power_outlet.device_id),
56
+ notice: 'Power outlet was successfully connected.'
53
57
  end
54
58
 
55
59
  def disconnect
56
60
  @power_outlet.power_port.disconnect
57
- process_success(success_msg: "Power outlet was successfully disconnected.", success_redirect: device_url(id: @power_outlet.device_id))
61
+ redirect_to device_url(id: @power_outlet.device_id),
62
+ notice: 'Power outlet was successfully disconnected.'
58
63
  end
59
64
 
60
65
  def for_device
@@ -24,7 +24,8 @@ module ForemanDatacenter
24
24
  @power_port = ForemanDatacenter::PowerPort.new(power_port_params.merge(device_id: params[:device_id]))
25
25
 
26
26
  if @power_port.save
27
- process_success(success_redirect: device_url(id: @power_port.device_id))
27
+ redirect_to device_url(id: @power_port.device_id),
28
+ notice: 'Power port was successfully created.'
28
29
  else
29
30
  process_error object: @power_port
30
31
  end
@@ -32,7 +33,8 @@ module ForemanDatacenter
32
33
 
33
34
  def update
34
35
  if @power_port.update(power_port_params)
35
- process_success(success_redirect: device_url(id: @power_port.device_id))
36
+ redirect_to device_url(id: @power_port.device_id),
37
+ notice: 'Power port was successfully updated.'
36
38
  else
37
39
  process_error object: @power_port
38
40
  end
@@ -40,7 +42,8 @@ module ForemanDatacenter
40
42
 
41
43
  def destroy
42
44
  if @power_port.destroy
43
- process_success(success_redirect: device_url(id: @power_port.device_id))
45
+ redirect_to device_url(id: @power_port.device_id),
46
+ notice: 'Power port was successfully destroyed.'
44
47
  else
45
48
  process_error object: @power_port
46
49
  end
@@ -70,12 +73,14 @@ module ForemanDatacenter
70
73
  power_outlet,
71
74
  params[:power_port][:connection_status]
72
75
  )
73
- process_success(success_msg: "Power port was successfully connected.", success_redirect: device_url(id: @power_port.device_id))
76
+ redirect_to device_url(id: @power_port.device_id),
77
+ notice: 'Power port was successfully connected.'
74
78
  end
75
79
 
76
80
  def disconnect
77
81
  @power_port.disconnect
78
- process_success(success_msg: "Power port was successfully disconnected.", success_redirect: device_url(id: @power_port.device_id))
82
+ redirect_to device_url(id: @power_port.device_id),
83
+ notice: 'Power port was successfully disconnected.'
79
84
  end
80
85
  end
81
86
  end
@@ -3,7 +3,7 @@ module ForemanDatacenter
3
3
  include Foreman::Controller::AutoCompleteSearch
4
4
  include ForemanDatacenter::Controller::Parameters::RackGroup
5
5
 
6
- before_action :find_resource, only: [:show, :edit, :update, :destroy, :move, :racks]
6
+ before_action :find_resource, only: [:show, :edit, :update, :destroy, :move]
7
7
 
8
8
  def index
9
9
  @rack_groups = resource_base_search_and_page.includes(:site, :racks)
@@ -58,11 +58,6 @@ module ForemanDatacenter
58
58
  process_error object: @rack_group, error_msg: 'Current Rack Group haven\'t any Racks.' if @racks.empty?
59
59
  end
60
60
 
61
- def racks
62
- @racks = @rack_group.racks.includes(devices: [:device_role])
63
- process_error redirect: rack_groups_path(@rack_group), error_msg: 'Current Rack Group haven\'t any Racks.' if @racks.empty?
64
- end
65
-
66
61
  def update_associated_objects
67
62
  begin
68
63
  @rack_group = ForemanDatacenter::RackGroup.find(request.env['HTTP_REFERER'].split('/')[-2])
@@ -3,7 +3,7 @@ module ForemanDatacenter
3
3
  include Foreman::Controller::AutoCompleteSearch
4
4
  include ForemanDatacenter::Controller::Parameters::Site
5
5
 
6
- before_action :find_resource, only: [:show, :edit, :update, :destroy, :move, :racks]
6
+ before_action :find_resource, only: [:show, :edit, :update, :destroy, :move]
7
7
 
8
8
  def index
9
9
  @sites = resource_base_search_and_page
@@ -50,12 +50,6 @@ module ForemanDatacenter
50
50
  end
51
51
  end
52
52
 
53
- def racks
54
- @rack_groups = @site.rack_groups.includes(racks: [devices: [:device_role]])
55
- @ungrouped_racks = @site.racks.where(rack_group_id: nil)#.includes(:device_role)
56
- process_error redirect: site_path(@site), error_msg: 'Current site haven\'t any Racks.' if (@rack_groups.empty? && @ungrouped_racks.empty?)
57
- end
58
-
59
53
  def move
60
54
  @sites = resource_base_search_and_page
61
55
  @rack_groups = @site.rack_groups
@@ -51,7 +51,6 @@ module ForemanDatacenter
51
51
  scoped_search in: :device_role, on: :name, complete_value: true, rename: :role
52
52
  scoped_search in: :device_type, on: :model, complete_value: true, rename: :type
53
53
  scoped_search in: :platform, on: :name, complete_value: true, rename: :platform
54
- scoped_search in: :comments, on: :content, complete_value: true, rename: :comments
55
54
 
56
55
  delegate :site_id, to: :rack, allow_nil: true
57
56
  delegate :manufacturer_id, :is_console_server, :is_pdu, :is_network_device,
@@ -23,7 +23,7 @@ module ForemanDatacenter
23
23
  scoped_search in: :second_interface, on: :name, complete_value: true, rename: :interface_b
24
24
 
25
25
  def first_device
26
- self.try(:first_interface).try(:device)
26
+ first_interface.device
27
27
  end
28
28
 
29
29
  def first_rack
@@ -35,7 +35,7 @@ module ForemanDatacenter
35
35
  end
36
36
 
37
37
  def second_device
38
- self.try(:second_interface).try(:device)
38
+ first_interface.device
39
39
  end
40
40
 
41
41
  def second_rack
@@ -20,7 +20,6 @@ module ForemanDatacenter
20
20
  scoped_search on: :shipping_address, complete_value: true, default_order: true
21
21
  scoped_search on: :created_at, complete_value: true, default_order: true
22
22
  scoped_search on: :updated_at, complete_value: true, default_order: true
23
- scoped_search on: :comments, complete_value: true, default_order: true
24
23
 
25
24
  def racks_count
26
25
  @racks_count ||= racks.count
@@ -14,34 +14,12 @@
14
14
  <% for port in @console_ports %>
15
15
  <tr>
16
16
  <td>
17
- <% if port.console_server_port %>
18
- <%= link_to port.console_server_port.device.name,
19
- device_path(port.console_server_port.device) %>
20
- <% else %>
21
- <%= muted_text("Device not found", "span") %>
22
- <% end %>
23
- </td>
24
- <td>
25
- <% if port.console_server_port %>
26
- <%= h port.console_server_port.name %>
27
- <% else %>
28
- <%= muted_text("Port not found", "span") %>
29
- <% end %>
30
- </td>
31
- <td>
32
- <% if port.device %>
33
- <%= link_to port.device.name, device_path(port.device) %>
34
- <% else %>
35
- <%= muted_text("Device not found", "span") %>
36
- <% end %>
37
- </td>
38
- <td>
39
- <% if port %>
40
- <%= h port.name %>
41
- <% else %>
42
- <%= muted_text("Port not found", "span") %>
43
- <% end %>
17
+ <%= link_to port.console_server_port.device.name,
18
+ device_path(port.console_server_port.device) %>
44
19
  </td>
20
+ <td><%= h port.console_server_port.name %></td>
21
+ <td><%= link_to port.device.name, device_path(port.device) %></td>
22
+ <td><%= h port.name %></td>
45
23
  </tr>
46
24
  <% end %>
47
25
  </tbody>
@@ -15,35 +15,15 @@
15
15
  <% for connection in @device_interface_connections %>
16
16
  <tr>
17
17
  <td>
18
- <% if connection.first_device %>
19
- <%= link_to connection.first_device.name,
18
+ <%= link_to connection.first_device.name,
20
19
  device_path(connection.first_device) %>
21
- <% else %>
22
- <%= muted_text("Device not found", "span") %>
23
- <% end %>
24
20
  </td>
21
+ <td><%= h connection.first_interface.name %></td>
25
22
  <td>
26
- <% if connection.first_device %>
27
- <%= h connection.first_interface.name %>
28
- <% else %>
29
- <%= muted_text("Interface not found", "span") %>
30
- <% end %>
31
- </td>
32
- <td>
33
- <% if connection.second_device %>
34
23
  <%= link_to connection.second_device.name,
35
24
  device_path(connection.second_device) %>
36
- <% else %>
37
- <%= muted_text("Device not found", "span") %>
38
- <% end %>
39
- </td>
40
- <td>
41
- <% if connection.second_device %>
42
- <%= h connection.second_interface.name %>
43
- <% else %>
44
- <%= muted_text("Interface not found", "span") %>
45
- <% end %>
46
25
  </td>
26
+ <td><%= h connection.second_interface.name %></td>
47
27
  </tr>
48
28
  <% end %>
49
29
  </tbody>