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,41 @@
1
+ module ForemanDatacenter
2
+ class DeviceBayTemplatesController < ApplicationController
3
+ before_action :set_device_bay_template, only: [:destroy]
4
+
5
+ def new
6
+ @device_bay_template = DeviceBayTemplate.new(
7
+ device_type: DeviceType.find(params[:device_type_id])
8
+ )
9
+ end
10
+
11
+ def create
12
+ @device_bay_template = DeviceBayTemplate.new(device_bay_template_params)
13
+
14
+ if @device_bay_template.save
15
+ redirect_to device_type_url(@device_bay_template.device_type),
16
+ notice: 'Device bay template was successfully created'
17
+ else
18
+ process_error object: @device_bay_template
19
+ end
20
+ end
21
+
22
+ def destroy
23
+ if @device_bay_template.destroy
24
+ redirect_to device_type_url(@device_bay_template.device_type),
25
+ notice: 'Device bay template was successfully destroyed'
26
+ else
27
+ process_error object: @device_bay_template
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def set_device_bay_template
34
+ @device_bay_template = DeviceBayTemplate.find(params[:id])
35
+ end
36
+
37
+ def device_bay_template_params
38
+ params[:device_bay_template].permit(:device_type_id, :name)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,74 @@
1
+ module ForemanDatacenter
2
+ class DeviceBaysController < ApplicationController
3
+ before_action :set_device_bay, only: [:depopulate, :populate,
4
+ :populate_new, :edit, :update, :destroy]
5
+
6
+ def new
7
+ @device_bay = DeviceBay.new(device: Device.find(params[:device_id]))
8
+ end
9
+
10
+ def edit
11
+ end
12
+
13
+ def create
14
+ @device_bay = DeviceBay.new(device_bay_params)
15
+
16
+ if @device_bay.save
17
+ redirect_to device_url(@device_bay.device),
18
+ notice: 'New device bay was successfully created'
19
+ else
20
+ process_error object: @device_bay
21
+ end
22
+ end
23
+
24
+ def update
25
+ if @device_bay.update(device_bay_params)
26
+ redirect_to device_url(@device_bay.device),
27
+ notice: 'Device bay was successfully updated'
28
+ else
29
+ process_error object: @device_bay
30
+ end
31
+ end
32
+
33
+ def destroy
34
+ if @device_bay.destroy
35
+ redirect_to device_url(@device_bay.device),
36
+ notice: 'Device bay was successfully destroyed'
37
+ else
38
+ process_error object: @device_bay
39
+ end
40
+ end
41
+
42
+ def populate_new
43
+ end
44
+
45
+ def populate
46
+ device_id = params[:device_bay][:installed_device_id]
47
+ if @device_bay.update(installed_device_id: device_id)
48
+ redirect_to device_url(@device_bay.device),
49
+ notice: 'Device bay was successfully populated'
50
+ else
51
+ process_error object: @device_bay
52
+ end
53
+ end
54
+
55
+ def depopulate
56
+ if @device_bay.update(installed_device_id: nil)
57
+ redirect_to device_url(@device_bay.device),
58
+ notice: 'Device bay was successfully depopulated'
59
+ else
60
+ process_error object: @device_bay
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ def set_device_bay
67
+ @device_bay = DeviceBay.find(params[:id])
68
+ end
69
+
70
+ def device_bay_params
71
+ params[:device_bay].permit(:name, :device_id)
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,65 @@
1
+ module ForemanDatacenter
2
+ class DeviceInterfaceConnectionsController < ApplicationController
3
+ before_action :set_device_interface_connection,
4
+ only: [:destroy, :planned, :connected]
5
+
6
+ def index
7
+ @device_interface_connections = DeviceInterfaceConnection.includes(
8
+ :second_interface, first_interface: [:device]
9
+ )
10
+ end
11
+
12
+ def new
13
+ @device_interface_connection = DeviceInterfaceConnection.connected.new(
14
+ first_interface: get_device_interface
15
+ )
16
+ end
17
+
18
+ def create
19
+ @device_interface_connection = DeviceInterfaceConnection.new(device_interface_connection_params)
20
+ @device_interface_connection.first_interface = get_device_interface
21
+
22
+ if @device_interface_connection.save
23
+ redirect_to device_url(@device_interface_connection.first_interface.device),
24
+ notice: 'Connection was successfully created.'
25
+ else
26
+ process_error object: @device_interface_connection
27
+ end
28
+ end
29
+
30
+ def destroy
31
+ @device_interface_connection.destroy
32
+ head :ok
33
+ end
34
+
35
+ def planned
36
+ @device_interface_connection.planned!
37
+ head :ok
38
+ end
39
+
40
+ def connected
41
+ @device_interface_connection.connected!
42
+ head :ok
43
+ end
44
+
45
+ def interfaces
46
+ @interfaces = Device.find(params[:device_id]).free_interfaces
47
+ render partial: 'interfaces'
48
+ end
49
+
50
+ private
51
+
52
+ def set_device_interface_connection
53
+ @device_interface_connection = DeviceInterfaceConnection.find(params[:id])
54
+ end
55
+
56
+ def device_interface_connection_params
57
+ params[:device_interface_connection].
58
+ permit(:interface_a, :interface_b, :connection_status)
59
+ end
60
+
61
+ def get_device_interface
62
+ DeviceInterface.find(params[:device_interface_id])
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,65 @@
1
+ module ForemanDatacenter
2
+ class DeviceInterfacesController < ApplicationController
3
+ before_action :set_device_interface, only: [:edit, :update, :destroy]
4
+
5
+ def new
6
+ device = Device.find(params[:device_id])
7
+ @device_interface = DeviceInterface.new(
8
+ device: device,
9
+ form_factor: DeviceInterface::DEFAULT_FORM_FACTOR
10
+ )
11
+ end
12
+
13
+ def new_management
14
+ @device_interface = DeviceInterface.new(
15
+ device: Device.find(params[:device_id]),
16
+ form_factor: DeviceInterface::DEFAULT_FORM_FACTOR,
17
+ mgmt_only: true
18
+ )
19
+ render :new
20
+ end
21
+
22
+ def edit
23
+ end
24
+
25
+ def create
26
+ @device_interface = DeviceInterface.new(device_interface_params)
27
+
28
+ if @device_interface.save
29
+ redirect_to device_url(id: @device_interface.device_id),
30
+ notice: 'Device interface was successfully created.'
31
+ else
32
+ process_error object: @device_interface
33
+ end
34
+ end
35
+
36
+ def update
37
+ if @device_interface.update(device_interface_params)
38
+ redirect_to device_url(id: @device_interface.device_id),
39
+ notice: 'Device interface was successfully updated.'
40
+ else
41
+ process_error object: @device_interface
42
+ end
43
+ end
44
+
45
+ def destroy
46
+ if @device_interface.destroy
47
+ redirect_to device_url(id: @device_interface.device_id),
48
+ notice: 'Device interface was successfully destroyed.'
49
+ else
50
+ process_error object: @device_interface
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def set_device_interface
57
+ @device_interface = DeviceInterface.find(params[:id])
58
+ end
59
+
60
+ def device_interface_params
61
+ params[:device_interface].
62
+ permit(:device_id, :name, :form_factor, :mac_address, :mgmt_only, :description)
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,53 @@
1
+ module ForemanDatacenter
2
+ class DeviceModulesController < ApplicationController
3
+ before_action :set_device_module, only: [:edit, :update, :destroy]
4
+
5
+ def new
6
+ @device_module = DeviceModule.new(
7
+ device: Device.find(params[:device_id])
8
+ )
9
+ end
10
+
11
+ def edit
12
+ end
13
+
14
+ def create
15
+ @device_module = DeviceModule.new(device_module_params)
16
+
17
+ if @device_module.save
18
+ redirect_to inventory_device_url(id: @device_module.device_id),
19
+ notice: 'Device module was successfully created.'
20
+ else
21
+ process_error object: @device_module
22
+ end
23
+ end
24
+
25
+ def update
26
+ if @device_module.update(device_module_params)
27
+ redirect_to inventory_device_url(id: @device_module.device_id),
28
+ notice: 'Device module was successfully updated.'
29
+ else
30
+ process_error object: @device_module
31
+ end
32
+ end
33
+
34
+ def destroy
35
+ if @device_module.destroy
36
+ redirect_to inventory_device_url(id: @device_module.device_id),
37
+ notice: 'Device module was successfully destroyed.'
38
+ else
39
+ process_error object: @device_module
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def set_device_module
46
+ @device_module = DeviceModule.find(params[:id])
47
+ end
48
+
49
+ def device_module_params
50
+ params[:device_module].permit(:device_id, :name, :part_id, :serial)
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,55 @@
1
+ module ForemanDatacenter
2
+ class DeviceRolesController < ApplicationController
3
+ before_action :set_device_role, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @device_roles = DeviceRole.includes(:devices).all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @device_role = DeviceRole.new
14
+ end
15
+
16
+ def edit
17
+ end
18
+
19
+ def create
20
+ @device_role = DeviceRole.new(device_role_params)
21
+
22
+ if @device_role.save
23
+ process_success object: @device_role
24
+ else
25
+ process_error object: @device_role
26
+ end
27
+ end
28
+
29
+ def update
30
+ if @device_role.update(device_role_params)
31
+ process_success object: @device_role
32
+ else
33
+ process_error object: @device_role
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ if @device_role.destroy
39
+ process_success object: @device_role
40
+ else
41
+ process_error object: @device_role
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def set_device_role
48
+ @device_role = DeviceRole.find(params[:id])
49
+ end
50
+
51
+ def device_role_params
52
+ params[:device_role].permit(:name, :color)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,60 @@
1
+ module ForemanDatacenter
2
+ class DeviceTypesController < ApplicationController
3
+ before_action :set_device_type, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @device_types = DeviceType.includes(:manufacturer).all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @device_type = DeviceType.new(u_height: 1, is_full_depth: true,
14
+ is_console_server: false, is_pdu: false,
15
+ is_network_device: true)
16
+ end
17
+
18
+ def edit
19
+ end
20
+
21
+ def create
22
+ @device_type = DeviceType.new(device_type_params)
23
+
24
+ if @device_type.save
25
+ process_success object: @device_type
26
+ else
27
+ process_error object: @device_type
28
+ end
29
+ end
30
+
31
+ def update
32
+ if @device_type.update(device_type_params)
33
+ redirect_to device_type_url(@device_type),
34
+ notice: 'Device type was successfully updated'
35
+ else
36
+ process_error object: @device_type
37
+ end
38
+ end
39
+
40
+ def destroy
41
+ if @device_type.destroy
42
+ process_success object: @device_type
43
+ else
44
+ process_error object: @device_type
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def set_device_type
51
+ @device_type = DeviceType.find(params[:id])
52
+ end
53
+
54
+ def device_type_params
55
+ params[:device_type].permit(:manufacturer_id, :model, :u_height,
56
+ :is_full_depth, :is_console_server,
57
+ :is_pdu, :is_network_device, :subdevice_role)
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,82 @@
1
+ module ForemanDatacenter
2
+ class DevicesController < ApplicationController
3
+ before_action :set_device, only: [:edit, :update, :destroy, :inventory]
4
+
5
+ def index
6
+ @devices = Device.includes(:device_role, :device_type, rack: [:site]).all
7
+ end
8
+
9
+ def show
10
+ @device = Device.includes(
11
+ device_bays: [:installed_device],
12
+ console_server_ports: [:console_port],
13
+ power_outlets: [:power_port],
14
+ console_ports: [:console_server_port],
15
+ power_ports: [:power_outlet]
16
+ ).find(params[:id])
17
+ end
18
+
19
+ def inventory
20
+ end
21
+
22
+ def new
23
+ @device = Device.new
24
+ end
25
+
26
+ def edit
27
+ end
28
+
29
+ def create
30
+ @device = Device.new(device_params)
31
+
32
+ if @device.save
33
+ process_success object: @device
34
+ else
35
+ process_error object: @device
36
+ end
37
+ end
38
+
39
+ def update
40
+ if @device.update(device_params)
41
+ process_success object: @device
42
+ else
43
+ process_error object: @device
44
+ end
45
+ end
46
+
47
+ def destroy
48
+ if @device.destroy
49
+ process_success object: @device
50
+ else
51
+ process_error object: @device
52
+ end
53
+ end
54
+
55
+ def device_types
56
+ @manufacturer_id = params[:manufacturer_id]
57
+ render partial: 'device_types'
58
+ end
59
+
60
+ def racks
61
+ @site_id = params[:site_id]
62
+ render partial: 'racks'
63
+ end
64
+
65
+ def for_rack
66
+ @rack = ForemanDatacenter::Rack.find(params[:rack_id])
67
+ render partial: 'for_rack'
68
+ end
69
+
70
+ private
71
+
72
+ def set_device
73
+ @device = Device.find(params[:id])
74
+ end
75
+
76
+ def device_params
77
+ params[:device].permit(:device_type_id, :device_role_id, :platform_id,
78
+ :name, :serial, :rack_id, :position, :face,
79
+ :status, :primary_ip4, :primary_ip6, :comments)
80
+ end
81
+ end
82
+ end