foreman_datacenter 0.0.1

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 (210) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +619 -0
  3. data/README.md +38 -0
  4. data/Rakefile +47 -0
  5. data/app/assets/javascripts/foreman_datacenter/ajax.js +18 -0
  6. data/app/assets/javascripts/foreman_datacenter/console_ports.js +2 -0
  7. data/app/assets/javascripts/foreman_datacenter/device_interface_connections.js +16 -0
  8. data/app/assets/javascripts/foreman_datacenter/devices.js +33 -0
  9. data/app/assets/javascripts/foreman_datacenter/racks.js +16 -0
  10. data/app/assets/javascripts/foreman_datacenter/shared.js +19 -0
  11. data/app/assets/stylesheets/foreman_datacenter/device_interface_connections.css +3 -0
  12. data/app/controllers/foreman_datacenter/console_port_templates_controller.rb +41 -0
  13. data/app/controllers/foreman_datacenter/console_ports_controller.rb +94 -0
  14. data/app/controllers/foreman_datacenter/console_server_port_templates_controller.rb +41 -0
  15. data/app/controllers/foreman_datacenter/console_server_ports_controller.rb +78 -0
  16. data/app/controllers/foreman_datacenter/device_bay_templates_controller.rb +41 -0
  17. data/app/controllers/foreman_datacenter/device_bays_controller.rb +74 -0
  18. data/app/controllers/foreman_datacenter/device_interface_connections_controller.rb +65 -0
  19. data/app/controllers/foreman_datacenter/device_interfaces_controller.rb +65 -0
  20. data/app/controllers/foreman_datacenter/device_modules_controller.rb +53 -0
  21. data/app/controllers/foreman_datacenter/device_roles_controller.rb +55 -0
  22. data/app/controllers/foreman_datacenter/device_types_controller.rb +60 -0
  23. data/app/controllers/foreman_datacenter/devices_controller.rb +82 -0
  24. data/app/controllers/foreman_datacenter/interface_templates_controller.rb +52 -0
  25. data/app/controllers/foreman_datacenter/manufacturers_controller.rb +55 -0
  26. data/app/controllers/foreman_datacenter/platforms_controller.rb +55 -0
  27. data/app/controllers/foreman_datacenter/power_outlet_templates_controller.rb +41 -0
  28. data/app/controllers/foreman_datacenter/power_outlets_controller.rb +77 -0
  29. data/app/controllers/foreman_datacenter/power_port_templates_controller.rb +41 -0
  30. data/app/controllers/foreman_datacenter/power_ports_controller.rb +94 -0
  31. data/app/controllers/foreman_datacenter/rack_groups_controller.rb +55 -0
  32. data/app/controllers/foreman_datacenter/racks_controller.rb +63 -0
  33. data/app/controllers/foreman_datacenter/sites_controller.rb +56 -0
  34. data/app/helpers/foreman_datacenter/console_ports_helper.rb +11 -0
  35. data/app/helpers/foreman_datacenter/console_server_ports_helper.rb +11 -0
  36. data/app/helpers/foreman_datacenter/device_bays_helper.rb +12 -0
  37. data/app/helpers/foreman_datacenter/device_interface_connections_helper.rb +10 -0
  38. data/app/helpers/foreman_datacenter/device_interfaces_helper.rb +4 -0
  39. data/app/helpers/foreman_datacenter/device_roles_helper.rb +7 -0
  40. data/app/helpers/foreman_datacenter/device_types_helper.rb +7 -0
  41. data/app/helpers/foreman_datacenter/devices_helper.rb +54 -0
  42. data/app/helpers/foreman_datacenter/interface_templates_helper.rb +7 -0
  43. data/app/helpers/foreman_datacenter/platforms_helper.rb +7 -0
  44. data/app/helpers/foreman_datacenter/power_outlets_helper.rb +11 -0
  45. data/app/helpers/foreman_datacenter/power_ports_helper.rb +11 -0
  46. data/app/helpers/foreman_datacenter/racks_helper.rb +8 -0
  47. data/app/helpers/foreman_datacenter/shared_helper.rb +29 -0
  48. data/app/models/foreman_datacenter/console_port.rb +19 -0
  49. data/app/models/foreman_datacenter/console_port_template.rb +12 -0
  50. data/app/models/foreman_datacenter/console_server_port.rb +9 -0
  51. data/app/models/foreman_datacenter/console_server_port_template.rb +12 -0
  52. data/app/models/foreman_datacenter/device.rb +136 -0
  53. data/app/models/foreman_datacenter/device_bay.rb +15 -0
  54. data/app/models/foreman_datacenter/device_bay_template.rb +12 -0
  55. data/app/models/foreman_datacenter/device_interface.rb +36 -0
  56. data/app/models/foreman_datacenter/device_interface_connection.rb +43 -0
  57. data/app/models/foreman_datacenter/device_module.rb +10 -0
  58. data/app/models/foreman_datacenter/device_role.rb +14 -0
  59. data/app/models/foreman_datacenter/device_type.rb +43 -0
  60. data/app/models/foreman_datacenter/interface_template.rb +17 -0
  61. data/app/models/foreman_datacenter/manufacturer.rb +7 -0
  62. data/app/models/foreman_datacenter/platform.rb +16 -0
  63. data/app/models/foreman_datacenter/power_outlet.rb +9 -0
  64. data/app/models/foreman_datacenter/power_outlet_template.rb +12 -0
  65. data/app/models/foreman_datacenter/power_port.rb +19 -0
  66. data/app/models/foreman_datacenter/power_port_template.rb +12 -0
  67. data/app/models/foreman_datacenter/rack.rb +13 -0
  68. data/app/models/foreman_datacenter/rack_group.rb +9 -0
  69. data/app/models/foreman_datacenter/site.rb +22 -0
  70. data/app/views/foreman_datacenter/console_port_templates/_form.html.erb +15 -0
  71. data/app/views/foreman_datacenter/console_port_templates/new.html.erb +3 -0
  72. data/app/views/foreman_datacenter/console_ports/_for_device.html.erb +5 -0
  73. data/app/views/foreman_datacenter/console_ports/_form.html.erb +15 -0
  74. data/app/views/foreman_datacenter/console_ports/edit.html.erb +3 -0
  75. data/app/views/foreman_datacenter/console_ports/index.html.erb +29 -0
  76. data/app/views/foreman_datacenter/console_ports/new.html.erb +3 -0
  77. data/app/views/foreman_datacenter/console_ports/new_connection.html.erb +22 -0
  78. data/app/views/foreman_datacenter/console_server_port_templates/_form.html.erb +15 -0
  79. data/app/views/foreman_datacenter/console_server_port_templates/new.html.erb +3 -0
  80. data/app/views/foreman_datacenter/console_server_ports/_for_device.html.erb +5 -0
  81. data/app/views/foreman_datacenter/console_server_ports/_form.html.erb +15 -0
  82. data/app/views/foreman_datacenter/console_server_ports/edit.html.erb +3 -0
  83. data/app/views/foreman_datacenter/console_server_ports/new.html.erb +3 -0
  84. data/app/views/foreman_datacenter/console_server_ports/new_connection.html.erb +22 -0
  85. data/app/views/foreman_datacenter/device_bay_templates/_form.html.erb +15 -0
  86. data/app/views/foreman_datacenter/device_bay_templates/new.html.erb +3 -0
  87. data/app/views/foreman_datacenter/device_bays/_form.html.erb +15 -0
  88. data/app/views/foreman_datacenter/device_bays/edit.html.erb +3 -0
  89. data/app/views/foreman_datacenter/device_bays/new.html.erb +3 -0
  90. data/app/views/foreman_datacenter/device_bays/populate_new.html.erb +21 -0
  91. data/app/views/foreman_datacenter/device_interface_connections/_form.html.erb +72 -0
  92. data/app/views/foreman_datacenter/device_interface_connections/_interfaces.html.erb +5 -0
  93. data/app/views/foreman_datacenter/device_interface_connections/index.html.erb +32 -0
  94. data/app/views/foreman_datacenter/device_interface_connections/new.html.erb +7 -0
  95. data/app/views/foreman_datacenter/device_interfaces/_form.html.erb +22 -0
  96. data/app/views/foreman_datacenter/device_interfaces/edit.html.erb +3 -0
  97. data/app/views/foreman_datacenter/device_interfaces/new.html.erb +3 -0
  98. data/app/views/foreman_datacenter/device_modules/_form.html.erb +17 -0
  99. data/app/views/foreman_datacenter/device_modules/edit.html.erb +3 -0
  100. data/app/views/foreman_datacenter/device_modules/new.html.erb +3 -0
  101. data/app/views/foreman_datacenter/device_roles/_form.html.erb +11 -0
  102. data/app/views/foreman_datacenter/device_roles/edit.html.erb +3 -0
  103. data/app/views/foreman_datacenter/device_roles/index.html.erb +36 -0
  104. data/app/views/foreman_datacenter/device_roles/new.html.erb +3 -0
  105. data/app/views/foreman_datacenter/device_roles/show.html.erb +56 -0
  106. data/app/views/foreman_datacenter/device_types/_form.html.erb +26 -0
  107. data/app/views/foreman_datacenter/device_types/edit.html.erb +3 -0
  108. data/app/views/foreman_datacenter/device_types/index.html.erb +36 -0
  109. data/app/views/foreman_datacenter/device_types/new.html.erb +3 -0
  110. data/app/views/foreman_datacenter/device_types/show.html.erb +357 -0
  111. data/app/views/foreman_datacenter/devices/_console_port.html.erb +60 -0
  112. data/app/views/foreman_datacenter/devices/_console_server_port.html.erb +64 -0
  113. data/app/views/foreman_datacenter/devices/_device_bay.html.erb +46 -0
  114. data/app/views/foreman_datacenter/devices/_device_module.html.erb +16 -0
  115. data/app/views/foreman_datacenter/devices/_device_types.html.erb +5 -0
  116. data/app/views/foreman_datacenter/devices/_for_rack.html.erb +9 -0
  117. data/app/views/foreman_datacenter/devices/_form.html.erb +80 -0
  118. data/app/views/foreman_datacenter/devices/_interface.html.erb +67 -0
  119. data/app/views/foreman_datacenter/devices/_management_interface.html.erb +67 -0
  120. data/app/views/foreman_datacenter/devices/_power_outlet.html.erb +60 -0
  121. data/app/views/foreman_datacenter/devices/_power_port.html.erb +60 -0
  122. data/app/views/foreman_datacenter/devices/_racks.html.erb +5 -0
  123. data/app/views/foreman_datacenter/devices/edit.html.erb +5 -0
  124. data/app/views/foreman_datacenter/devices/index.html.erb +51 -0
  125. data/app/views/foreman_datacenter/devices/inventory.html.erb +66 -0
  126. data/app/views/foreman_datacenter/devices/new.html.erb +5 -0
  127. data/app/views/foreman_datacenter/devices/show.html.erb +303 -0
  128. data/app/views/foreman_datacenter/hosts/hosts/new_action.html.erb +1 -0
  129. data/app/views/foreman_datacenter/hosts/new_action.html.erb +1 -0
  130. data/app/views/foreman_datacenter/interface_templates/_form.html.erb +19 -0
  131. data/app/views/foreman_datacenter/interface_templates/new.html.erb +3 -0
  132. data/app/views/foreman_datacenter/layouts/layouts/new_layout.html.erb +0 -0
  133. data/app/views/foreman_datacenter/layouts/new_layout.html.erb +0 -0
  134. data/app/views/foreman_datacenter/manufacturers/_form.html.erb +7 -0
  135. data/app/views/foreman_datacenter/manufacturers/edit.html.erb +3 -0
  136. data/app/views/foreman_datacenter/manufacturers/index.html.erb +34 -0
  137. data/app/views/foreman_datacenter/manufacturers/new.html.erb +3 -0
  138. data/app/views/foreman_datacenter/manufacturers/show.html.erb +52 -0
  139. data/app/views/foreman_datacenter/platforms/_form.html.erb +11 -0
  140. data/app/views/foreman_datacenter/platforms/edit.html.erb +3 -0
  141. data/app/views/foreman_datacenter/platforms/index.html.erb +34 -0
  142. data/app/views/foreman_datacenter/platforms/new.html.erb +3 -0
  143. data/app/views/foreman_datacenter/platforms/show.html.erb +56 -0
  144. data/app/views/foreman_datacenter/power_outlet_templates/_form.html.erb +15 -0
  145. data/app/views/foreman_datacenter/power_outlet_templates/new.html.erb +3 -0
  146. data/app/views/foreman_datacenter/power_outlets/_for_device.html.erb +5 -0
  147. data/app/views/foreman_datacenter/power_outlets/_form.html.erb +15 -0
  148. data/app/views/foreman_datacenter/power_outlets/edit.html.erb +3 -0
  149. data/app/views/foreman_datacenter/power_outlets/new.html.erb +3 -0
  150. data/app/views/foreman_datacenter/power_outlets/new_connection.html.erb +22 -0
  151. data/app/views/foreman_datacenter/power_port_templates/_form.html.erb +15 -0
  152. data/app/views/foreman_datacenter/power_port_templates/new.html.erb +3 -0
  153. data/app/views/foreman_datacenter/power_ports/_for_device.html.erb +5 -0
  154. data/app/views/foreman_datacenter/power_ports/_form.html.erb +15 -0
  155. data/app/views/foreman_datacenter/power_ports/edit.html.erb +3 -0
  156. data/app/views/foreman_datacenter/power_ports/index.html.erb +29 -0
  157. data/app/views/foreman_datacenter/power_ports/new.html.erb +3 -0
  158. data/app/views/foreman_datacenter/power_ports/new_connection.html.erb +22 -0
  159. data/app/views/foreman_datacenter/rack_groups/_form.html.erb +11 -0
  160. data/app/views/foreman_datacenter/rack_groups/edit.html.erb +3 -0
  161. data/app/views/foreman_datacenter/rack_groups/index.html.erb +36 -0
  162. data/app/views/foreman_datacenter/rack_groups/new.html.erb +3 -0
  163. data/app/views/foreman_datacenter/rack_groups/show.html.erb +56 -0
  164. data/app/views/foreman_datacenter/racks/_form.html.erb +25 -0
  165. data/app/views/foreman_datacenter/racks/_rack_groups.html.erb +8 -0
  166. data/app/views/foreman_datacenter/racks/edit.html.erb +5 -0
  167. data/app/views/foreman_datacenter/racks/index.html.erb +50 -0
  168. data/app/views/foreman_datacenter/racks/new.html.erb +5 -0
  169. data/app/views/foreman_datacenter/racks/show.html.erb +67 -0
  170. data/app/views/foreman_datacenter/shared/_rack_device_select.html.erb +22 -0
  171. data/app/views/foreman_datacenter/sites/_form.html.erb +12 -0
  172. data/app/views/foreman_datacenter/sites/edit.html.erb +3 -0
  173. data/app/views/foreman_datacenter/sites/index.html.erb +40 -0
  174. data/app/views/foreman_datacenter/sites/new.html.erb +3 -0
  175. data/app/views/foreman_datacenter/sites/show.html.erb +98 -0
  176. data/config/routes.rb +92 -0
  177. data/db/migrate/20160727161914_create_sites.rb +16 -0
  178. data/db/migrate/20160728123353_create_rack_groups.rb +12 -0
  179. data/db/migrate/20160728143149_create_racks.rb +16 -0
  180. data/db/migrate/20160728161636_create_platforms.rb +12 -0
  181. data/db/migrate/20160728162635_create_device_roles.rb +12 -0
  182. data/db/migrate/20160728163815_create_manufacturers.rb +12 -0
  183. data/db/migrate/20160728164858_create_device_types.rb +18 -0
  184. data/db/migrate/20160728171422_create_devices.rb +31 -0
  185. data/db/migrate/20160728194401_create_device_interfaces.rb +17 -0
  186. data/db/migrate/20160728195242_create_device_interface_connections.rb +18 -0
  187. data/db/migrate/20160804104103_create_interface_templates.rb +15 -0
  188. data/db/migrate/20160804142618_create_console_port_templates.rb +13 -0
  189. data/db/migrate/20160804164301_create_power_port_templates.rb +13 -0
  190. data/db/migrate/20160805080626_create_console_server_port_templates.rb +13 -0
  191. data/db/migrate/20160805084726_create_power_outlet_templates.rb +13 -0
  192. data/db/migrate/20160805100411_create_device_bay_templates.rb +13 -0
  193. data/db/migrate/20160809091611_create_device_bays.rb +16 -0
  194. data/db/migrate/20160809103211_create_power_outlets.rb +13 -0
  195. data/db/migrate/20160809104325_create_power_ports.rb +17 -0
  196. data/db/migrate/20160809112815_create_console_server_ports.rb +13 -0
  197. data/db/migrate/20160809113846_create_console_ports.rb +17 -0
  198. data/db/migrate/20160816224805_create_device_modules.rb +15 -0
  199. data/lib/foreman_datacenter.rb +4 -0
  200. data/lib/foreman_datacenter/engine.rb +70 -0
  201. data/lib/foreman_datacenter/version.rb +3 -0
  202. data/lib/tasks/foreman_datacenter_tasks.rake +45 -0
  203. data/locale/Makefile +60 -0
  204. data/locale/en/foreman_datacenter.po +19 -0
  205. data/locale/foreman_datacenter.pot +19 -0
  206. data/locale/gemspec.rb +2 -0
  207. data/test/factories/foreman_datacenter_factories.rb +5 -0
  208. data/test/test_plugin_helper.rb +6 -0
  209. data/test/unit/foreman_datacenter_test.rb +11 -0
  210. metadata +310 -0
@@ -0,0 +1,26 @@
1
+ <%= form_for @device_type, as: :device_type, url: (@device_type.new_record? ? device_types_path : device_type_path(@device_type)) do |f| %>
2
+ <%= base_errors_for @device_type %>
3
+
4
+ <%= selectable_f f, :manufacturer_id,
5
+ options_from_collection_for_select(ForemanDatacenter::Manufacturer.all, 'id', 'name', @device_type.manufacturer_id),
6
+ {include_blank: 'Choose a manufacturer'},
7
+ {required: true} %>
8
+ <%= text_f f, :model, required: true %>
9
+ <%= text_f f, :u_height, label: 'Height (U)', type: 'number', min: 0 %>
10
+
11
+ <%= checkbox_f f, :is_full_depth, label: 'Is full depth',
12
+ help_inline: 'Device consumes both front and rear rack faces' %>
13
+ <%= checkbox_f f, :is_console_server, label: 'Is a console server',
14
+ help_inline: 'This type of device has console server ports' %>
15
+ <%= checkbox_f f, :is_pdu, label: 'Is a PDU',
16
+ help_inline: 'This type of device has power outlets' %>
17
+ <%= checkbox_f f, :is_network_device, label: 'Is a network device',
18
+ help_inline: 'This type of device has network interfaces' %>
19
+
20
+ <%= selectable_f f, :subdevice_role,
21
+ options_for_select(device_type_subdevice_roles, @device_type.subdevice_role), {},
22
+ {label: 'Parent/child status',
23
+ help_inline: 'Parent devices house child devices in device bays. Select "None" if this device type is neither a parent nor a child.'} %>
24
+
25
+ <%= submit_or_cancel f %>
26
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% title 'Editing device type' %>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,36 @@
1
+ <% title _('Device Types') %>
2
+ <% title_actions display_link_if_authorized(_('New device type'), hash_for_new_device_type_path, class: 'btn btn-success'), help_path %>
3
+
4
+ <table class="table table-bordered table-striped table-two-pane">
5
+ <thead>
6
+ <tr>
7
+ <th>Device Type</th>
8
+ <th>Manufacturer</th>
9
+ <th>Height (U)</th>
10
+ <th>Action</th>
11
+ </tr>
12
+ </thead>
13
+
14
+ <tbody>
15
+ <% @device_types.each do |device_type| %>
16
+ <tr>
17
+ <td><%= link_to device_type.model, device_type_path(device_type) %></td>
18
+ <td><%= device_type.manufacturer.name %></td>
19
+ <td><%= device_type.u_height %></td>
20
+ <td>
21
+ <%= action_buttons(
22
+ display_link_if_authorized(
23
+ _("Edit"),
24
+ hash_for_edit_device_type_path(:id => device_type).merge(:auth_object => device_type, :authorizer => authorizer)
25
+ ),
26
+ display_delete_if_authorized(
27
+ hash_for_device_type_path(:id => device_type).merge(:auth_object => device_type, :authorizer => authorizer),
28
+ :data => { :confirm => 'Are you sure?'},
29
+ :action => :destroy
30
+ )
31
+ ) %>
32
+ </td>
33
+ </tr>
34
+ <% end %>
35
+ </tbody>
36
+ </table>
@@ -0,0 +1,3 @@
1
+ <% title 'New device type' %>
2
+
3
+ <%= render 'form' %>
@@ -0,0 +1,357 @@
1
+ <% title h(@device_type.model) %>
2
+
3
+ <% title_actions display_link_if_authorized(
4
+ _('Edit'),
5
+ hash_for_edit_device_type_path(:id => @device_type).merge(:auth_object => @device_type, :authorizer => authorizer),
6
+ :class => 'btn btn-warning'
7
+ ),
8
+ display_delete_if_authorized(
9
+ hash_for_device_type_path(:id => @device_type).merge(:auth_object => @device_type, :authorizer => authorizer),
10
+ :data => { :confirm => 'Are you sure?'},
11
+ :action => :destroy,
12
+ :class => 'btn btn-danger'
13
+ )
14
+ help_path %>
15
+
16
+ <div class="col-md-6">
17
+ <!-- Chassis -->
18
+ <div class="panel panel-default">
19
+ <div class="panel-heading">
20
+ <strong>Chassis</strong>
21
+ </div>
22
+ <table class="table table-hover panel-body">
23
+ <tbody>
24
+ <tr>
25
+ <td>Manufacturer</td>
26
+ <td><%= h @device_type.manufacturer.name %></td>
27
+ </tr>
28
+ <tr>
29
+ <td>Model Name</td>
30
+ <td><%= h @device_type.model %></td>
31
+ </tr>
32
+ <tr>
33
+ <td>Height (U)</td>
34
+ <td><%= @device_type.u_height %></td>
35
+ </tr>
36
+ <tr>
37
+ <td>Full Depth</td>
38
+ <td><%= @device_type.is_full_depth ? 'Yes' : 'No' %></td>
39
+ </tr>
40
+ </tbody>
41
+ </table>
42
+ </div>
43
+
44
+ <!-- Function -->
45
+ <div class="panel panel-default">
46
+ <div class="panel-heading">
47
+ <strong>Function</strong>
48
+ </div>
49
+ <table class="table table-hover panel-body">
50
+ <tbody>
51
+ <tr>
52
+ <td class="col-sm-3 text-right">
53
+ <% if @device_type.is_console_server %>
54
+ <span class="glyphicon glyphicon-ok text-success"></span>
55
+ <% else %>
56
+ <span class="glyphicon glyphicon-remove text-danger"></span>
57
+ <% end %>
58
+ </td>
59
+ <td class="col-sm-10">
60
+ <strong>Console Server</strong>
61
+ <br>
62
+ <% if @device_type.is_console_server %>
63
+ <small class="text-muted">This device has console server ports</small>
64
+ <% else %>
65
+ <small class="text-muted">This device does not have console server ports</small>
66
+ <% end %>
67
+ </td>
68
+ </tr>
69
+ <tr>
70
+ <td class="col-sm-3 text-right">
71
+ <% if @device_type.is_pdu %>
72
+ <span class="glyphicon glyphicon-ok text-success"></span>
73
+ <% else %>
74
+ <span class="glyphicon glyphicon-remove text-danger"></span>
75
+ <% end %>
76
+ </td>
77
+ <td class="col-sm-10">
78
+ <strong>PDU</strong>
79
+ <br>
80
+ <% if @device_type.is_pdu %>
81
+ <small class="text-muted">This device has power outlets</small>
82
+ <% else %>
83
+ <small class="text-muted">This device does not have power outlets</small>
84
+ <% end %>
85
+ </td>
86
+ </tr>
87
+ <tr>
88
+ <td class="col-sm-3 text-right">
89
+ <% if @device_type.is_network_device %>
90
+ <span class="glyphicon glyphicon-ok text-success"></span>
91
+ <% else %>
92
+ <span class="glyphicon glyphicon-remove text-danger"></span>
93
+ <% end %>
94
+ </td>
95
+ <td class="col-sm-10">
96
+ <strong>Network Device</strong>
97
+ <br>
98
+ <% if @device_type.is_network_device %>
99
+ <small class="text-muted">This device has non-management network interfaces</small>
100
+ <% else %>
101
+ <small class="text-muted">This device does not have non-management network interfaces</small>
102
+ <% end %>
103
+ </td>
104
+ </tr>
105
+ <tr>
106
+ <td class="col-sm-3 text-right">
107
+ <% if @device_type.parent? %>
108
+ <label class="label label-info">Parent</label>
109
+ <% elsif @device_type.child? %>
110
+ <label class="label label-primary">Child</label>
111
+ <% else %>
112
+ <label class="label label-default">None</label>
113
+ <% end %>
114
+ </td>
115
+ <td class="col-sm-10">
116
+ <strong>Parent/Child</strong>
117
+ <br>
118
+ <% if @device_type.parent? %>
119
+ <small class="text-muted">This device has device bays for mounting child devices</small>
120
+ <% elsif @device_type.child? %>
121
+ <small class="text-muted">This device can only be mounted in a parent device</small>
122
+ <% else %>
123
+ <small class="text-muted">This device does not have device bays</small>
124
+ <% end %>
125
+ </td>
126
+ </tr>
127
+ </tbody>
128
+ </table>
129
+ </div>
130
+
131
+ <!-- Console ports -->
132
+ <div class="panel panel-default">
133
+ <div class="panel-heading">
134
+ <%= link_to 'Add a console port', new_device_type_console_port_template_path(@device_type),
135
+ class: 'btn btn-primary btn-xs pull-right'%>
136
+ <strong>Console ports</strong>
137
+ </div>
138
+ <% if @device_type.console_port_templates.empty? %>
139
+ <div class="panel-body">None</div>
140
+ <% else %>
141
+ <table class="table table-hover panel-body">
142
+ <tbody>
143
+ <% @device_type.console_port_templates.each do |console_port| %>
144
+ <tr>
145
+ <td class="col-sm-10"><%= console_port.name %></td>
146
+ <td class="col-sm-2">
147
+ <%= action_buttons(
148
+ display_delete_if_authorized(
149
+ hash_for_device_type_console_port_template_path(id: console_port, device_type_id: @device_type).merge(:auth_object => console_port, :authorizer => authorizer),
150
+ :data => { :confirm => 'Are you sure?'},
151
+ :action => :destroy
152
+ )
153
+ ) %>
154
+ </td>
155
+ </tr>
156
+ <% end %>
157
+ </tbody>
158
+ </table>
159
+ <% end %>
160
+ </div>
161
+
162
+ <!-- Power ports -->
163
+ <div class="panel panel-default">
164
+ <div class="panel-heading">
165
+ <%= link_to 'Add a power port', new_device_type_power_port_template_path(@device_type),
166
+ class: 'btn btn-primary btn-xs pull-right' %>
167
+ <strong>Power ports</strong>
168
+ </div>
169
+ <% if @device_type.power_port_templates.empty? %>
170
+ <div class="panel-body">None</div>
171
+ <% else %>
172
+ <table class="table table-hover panel-body">
173
+ <tbody>
174
+ <% @device_type.power_port_templates.each do |power_port| %>
175
+ <tr>
176
+ <td class="col-sm-10"><%= power_port.name %></td>
177
+ <td class="col-sm-2">
178
+ <%= action_buttons(
179
+ display_delete_if_authorized(
180
+ hash_for_device_type_power_port_template_path(id: power_port, device_type_id: @device_type).merge(:auth_object => power_port, :authorizer => authorizer),
181
+ :data => { :confirm => 'Are you sure?'},
182
+ :action => :destroy
183
+ )
184
+ ) %>
185
+ </td>
186
+ </tr>
187
+ <% end %>
188
+ </tbody>
189
+ </table>
190
+ <% end %>
191
+ </div>
192
+
193
+ <!-- Management Interfaces -->
194
+ <div class="panel panel-default">
195
+ <div class="panel-heading">
196
+ <%= link_to 'Add a management interface', new_management_device_type_interface_templates_path(@device_type),
197
+ class: 'btn btn-primary btn-xs pull-right' %>
198
+ <strong>Management Interfaces</strong>
199
+ </div>
200
+ <% if @device_type.management_interfaces.empty? %>
201
+ <div class="panel-body">None</div>
202
+ <% else %>
203
+ <table class="table table-hover panel-body">
204
+ <tbody>
205
+ <% @device_type.management_interfaces.each do |management_interface| %>
206
+ <tr>
207
+ <td class="col-sm-10"><%= management_interface.name %></td>
208
+ <td class="col-sm-2">
209
+ <%= action_buttons(
210
+ display_delete_if_authorized(
211
+ hash_for_device_type_interface_template_path(id: management_interface, device_type_id: @device_type).merge(:auth_object => management_interface, :authorizer => authorizer),
212
+ :data => { :confirm => 'Are you sure?'},
213
+ :action => :destroy
214
+ )
215
+ ) %>
216
+ </td>
217
+ </tr>
218
+ <% end %>
219
+ </tbody>
220
+ </table>
221
+ <% end %>
222
+ </div>
223
+ </div>
224
+
225
+ <div class="col-md-6">
226
+ <!-- Device Bays -->
227
+ <% if @device_type.parent? %>
228
+ <div class="panel panel-default">
229
+ <div class="panel-heading">
230
+ <%= link_to 'Add a device bay', new_device_type_device_bay_template_path(@device_type),
231
+ class: 'btn btn-primary btn-xs pull-right'%>
232
+ <strong>Device Bays</strong>
233
+ </div>
234
+ <% if @device_type.device_bay_templates.empty? %>
235
+ <div class="panel-body">None</div>
236
+ <% else %>
237
+ <table class="table table-hover panel-body">
238
+ <tbody>
239
+ <% @device_type.device_bay_templates.each do |device_bay| %>
240
+ <tr>
241
+ <td class="col-sm-10"><%= device_bay.name %></td>
242
+ <td class="col-sm-10">
243
+ <%= action_buttons(
244
+ display_delete_if_authorized(
245
+ hash_for_device_type_device_bay_template_path(id: device_bay, device_type_id: @device_type).merge(:auth_object => device_bay, :authorizer => authorizer),
246
+ :data => { :confirm => 'Are you sure?'},
247
+ :action => :destroy
248
+ )
249
+ ) %>
250
+ </td>
251
+ </tr>
252
+ <% end %>
253
+ </tbody>
254
+ </table>
255
+ <% end %>
256
+ </div>
257
+ <% end %>
258
+
259
+ <!-- Interfaces -->
260
+ <% if @device_type.is_network_device %>
261
+ <div class="panel panel-default">
262
+ <div class="panel-heading">
263
+ <%= link_to 'Add an interface', new_device_type_interface_template_path(@device_type),
264
+ class: 'btn btn-primary btn-xs pull-right'%>
265
+ <strong>Interfaces</strong>
266
+ </div>
267
+ <% if @device_type.network_interfaces.empty? %>
268
+ <div class="panel-body">None</div>
269
+ <% else %>
270
+ <table class="table table-hover panel-body">
271
+ <tbody>
272
+ <% @device_type.network_interfaces.each do |interface| %>
273
+ <tr>
274
+ <td class="col-sm-10"><%= interface.name %></td>
275
+ <td class="col-sm-2">
276
+ <%= action_buttons(
277
+ display_delete_if_authorized(
278
+ hash_for_device_type_interface_template_path(id: interface, device_type_id: @device_type).merge(:auth_object => interface, :authorizer => authorizer),
279
+ :data => { :confirm => 'Are you sure?'},
280
+ :action => :destroy
281
+ )
282
+ ) %>
283
+ </td>
284
+ </tr>
285
+ <% end %>
286
+ </tbody>
287
+ </table>
288
+ <% end %>
289
+ </div>
290
+ <% end %>
291
+
292
+ <!-- Console server ports -->
293
+ <% if @device_type.is_console_server %>
294
+ <div class="panel panel-default">
295
+ <div class="panel-heading">
296
+ <%= link_to 'Add a console server port', new_device_type_console_server_port_template_path(@device_type),
297
+ class: 'btn btn-primary btn-xs pull-right'%>
298
+ <strong>Console Server Ports</strong>
299
+ </div>
300
+ <% if @device_type.console_server_port_templates.empty? %>
301
+ <div class="panel-body">None</div>
302
+ <% else %>
303
+ <table class="table table-hover panel-body">
304
+ <tbody>
305
+ <% @device_type.console_server_port_templates.each do |console_server_port| %>
306
+ <tr>
307
+ <td class="col-sm-10"><%= console_server_port.name %></td>
308
+ <td class="col-sm-2">
309
+ <%= action_buttons(
310
+ display_delete_if_authorized(
311
+ hash_for_device_type_console_server_port_template_path(id: console_server_port, device_type_id: @device_type).merge(:auth_object => console_server_port, :authorizer => authorizer),
312
+ :data => { :confirm => 'Are you sure?'},
313
+ :action => :destroy
314
+ )
315
+ ) %>
316
+ </td>
317
+ </tr>
318
+ <% end %>
319
+ </tbody>
320
+ </table>
321
+ <% end %>
322
+ </div>
323
+ <% end %>
324
+
325
+ <!-- Power outlets -->
326
+ <% if @device_type.is_pdu %>
327
+ <div class="panel panel-default">
328
+ <div class="panel-heading">
329
+ <%= link_to 'Add a power outlet', new_device_type_power_outlet_template_path(@device_type),
330
+ class: 'btn btn-primary btn-xs pull-right'%>
331
+ <strong>Power Outlets</strong>
332
+ </div>
333
+ <% if @device_type.power_outlet_templates.empty? %>
334
+ <div class="panel-body">None</div>
335
+ <% else %>
336
+ <table class="table table-hover panel-body">
337
+ <tbody>
338
+ <% @device_type.power_outlet_templates.each do |power_outlet| %>
339
+ <tr>
340
+ <td class="col-sm-10"><%= power_outlet.name %> </td>
341
+ <td class="col-sm-2">
342
+ <%= action_buttons(
343
+ display_delete_if_authorized(
344
+ hash_for_device_type_power_outlet_template_path(id: power_outlet, device_type_id: @device_type).merge(:auth_object => power_outlet, :authorizer => authorizer),
345
+ :data => { :confirm => 'Are you sure?'},
346
+ :action => :destroy
347
+ )
348
+ ) %>
349
+ </td>
350
+ </tr>
351
+ <% end %>
352
+ </tbody>
353
+ </table>
354
+ <% end %>
355
+ </div>
356
+ <% end %>
357
+ </div>
@@ -0,0 +1,60 @@
1
+ <tr>
2
+ <td>
3
+ <i class="fa fa-fw fa-keyboard-o"></i>
4
+ <%= h console_port.name %>
5
+ </td>
6
+ <% if console_port.console_server_port %>
7
+ <td>
8
+ <%= link_to console_port.console_server_port.device.name,
9
+ device_path(console_port.console_server_port.device) %>
10
+ </td>
11
+ <td><%= h console_port.console_server_port.name %></td>
12
+ <td class="text-right">
13
+ <% if console_port.planned? %>
14
+ <%= link_to connected_console_port_path(console_port),
15
+ class: 'btn btn-success btn-xs', remote: true,
16
+ data: { confirm: 'Are you sure?', action: 'connected' },
17
+ method: :patch, title: 'Mark connected' do %>
18
+ <i class="glyphicon glyphicon-wrench"></i>
19
+ <% end %>
20
+ <% else %>
21
+ <%= link_to planned_console_port_path(console_port),
22
+ class: 'btn btn-warning btn-xs', remote: true,
23
+ data: { confirm: 'Are you sure?', action: 'planned' },
24
+ method: :patch, title: 'Mark planned' do %>
25
+ <i class="glyphicon glyphicon-ban-circle"></i>
26
+ <% end %>
27
+ <% end %>
28
+ <%= link_to disconnect_console_server_port_path(console_port.console_server_port),
29
+ class: 'btn btn-danger btn-xs', title: 'Disconnect',
30
+ data: { confirm: 'Are you sure?' }, method: :patch do %>
31
+ <i class="glyphicon glyphicon-remove"></i>
32
+ <% end %>
33
+ <%= link_to edit_console_port_path(console_port),
34
+ class: 'btn btn-info btn-xs', title: 'Edit port' do %>
35
+ <i class="glyphicon glyphicon-pencil"></i>
36
+ <% end %>
37
+ <button class="btn btn-danger btn-xs" disabled>
38
+ <i class="glyphicon glyphicon-trash"></i>
39
+ </button>
40
+ </td>
41
+ <% else %>
42
+ <td class="text-muted">Not connected</td>
43
+ <td></td>
44
+ <td class="text-right">
45
+ <%= link_to new_connection_console_port_path(console_port),
46
+ class: 'btn btn-success btn-xs', title: 'Connect' do %>
47
+ <i class="glyphicon glyphicon-plus"></i>
48
+ <% end %>
49
+ <%= link_to edit_console_port_path(console_port),
50
+ class: 'btn btn-info btn-xs', title: 'Edit port' do %>
51
+ <i class="glyphicon glyphicon-pencil"></i>
52
+ <% end %>
53
+ <%= link_to console_port_path(console_port),
54
+ class: 'btn btn-danger btn-xs', title: 'Delete port',
55
+ data: { confirm: 'Are you sure?' }, method: :delete do %>
56
+ <i class="glyphicon glyphicon-trash"></i>
57
+ <% end %>
58
+ </td>
59
+ <% end %>
60
+ </tr>