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,52 @@
1
+ module ForemanDatacenter
2
+ class InterfaceTemplatesController < ApplicationController
3
+ before_action :set_interface_template, only: [:destroy]
4
+
5
+ def new
6
+ @interface_template = InterfaceTemplate.new(
7
+ device_type: DeviceType.find(params[:device_type_id]),
8
+ form_factor: '10GE (SFP+)'
9
+ )
10
+ end
11
+
12
+ def new_management
13
+ @interface_template = InterfaceTemplate.new(
14
+ device_type: DeviceType.find(params[:device_type_id]),
15
+ form_factor: '10GE (SFP+)',
16
+ mgmt_only: true
17
+ )
18
+ render :new
19
+ end
20
+
21
+ def create
22
+ @interface_template = InterfaceTemplate.new(interface_template_params)
23
+
24
+ if @interface_template.save
25
+ redirect_to device_type_url(@interface_template.device_type),
26
+ notice: 'New interface template was successfully created'
27
+ else
28
+ process_error object: @interface_template
29
+ end
30
+ end
31
+
32
+ def destroy
33
+ if @interface_template.destroy
34
+ redirect_to device_type_url(@interface_template.device_type),
35
+ notice: 'Interface template was successfully destroyed'
36
+ else
37
+ process_error object: @interface_template
38
+ end
39
+ end
40
+
41
+ private
42
+
43
+ def set_interface_template
44
+ @interface_template = InterfaceTemplate.find(params[:id])
45
+ end
46
+
47
+ def interface_template_params
48
+ params[:interface_template].
49
+ permit(:device_type_id, :name, :form_factor, :mgmt_only)
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,55 @@
1
+ module ForemanDatacenter
2
+ class ManufacturersController < ApplicationController
3
+ before_action :set_manufacturer, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @manufacturers = Manufacturer.all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @manufacturer = Manufacturer.new
14
+ end
15
+
16
+ def edit
17
+ end
18
+
19
+ def create
20
+ @manufacturer = Manufacturer.new(manufacturer_params)
21
+
22
+ if @manufacturer.save
23
+ process_success object: @manufacturer
24
+ else
25
+ process_error object: @manufacturer
26
+ end
27
+ end
28
+
29
+ def update
30
+ if @manufacturer.update(manufacturer_params)
31
+ process_success object: @manufacturer
32
+ else
33
+ process_error object: @manufacturer
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ if @manufacturer.destroy
39
+ process_success object: @manufacturer
40
+ else
41
+ process_error object: @manufacturer
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def set_manufacturer
48
+ @manufacturer = Manufacturer.find(params[:id])
49
+ end
50
+
51
+ def manufacturer_params
52
+ params[:manufacturer].permit(:name)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,55 @@
1
+ module ForemanDatacenter
2
+ class PlatformsController < ApplicationController
3
+ before_action :set_platform, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @platforms = Platform.includes(:devices).all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @platform = Platform.new
14
+ end
15
+
16
+ def edit
17
+ end
18
+
19
+ def create
20
+ @platform = Platform.new(platform_params)
21
+
22
+ if @platform.save
23
+ process_success object: @platform
24
+ else
25
+ process_error object: @platform
26
+ end
27
+ end
28
+
29
+ def update
30
+ if @platform.update(platform_params)
31
+ process_success object: @platform
32
+ else
33
+ process_error object: @platform
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ if @platform.destroy
39
+ process_success object: @platform
40
+ else
41
+ process_error object: @platform
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def set_platform
48
+ @platform = Platform.find(params[:id])
49
+ end
50
+
51
+ def platform_params
52
+ params[:platform].permit(:name, :rpc_client)
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,41 @@
1
+ module ForemanDatacenter
2
+ class PowerOutletTemplatesController < ApplicationController
3
+ before_action :set_power_outlet_template, only: [:destroy]
4
+
5
+ def new
6
+ @power_outlet_template = PowerOutletTemplate.new(
7
+ device_type: DeviceType.find(params[:device_type_id])
8
+ )
9
+ end
10
+
11
+ def create
12
+ @power_outlet_template = PowerOutletTemplate.new(power_outlet_template_params)
13
+
14
+ if @power_outlet_template.save
15
+ redirect_to device_type_url(@power_outlet_template.device_type),
16
+ notice: 'New power outlet template was successfully created'
17
+ else
18
+ process_error object: @power_outlet_template
19
+ end
20
+ end
21
+
22
+ def destroy
23
+ if @power_outlet_template.destroy
24
+ redirect_to device_type_url(@power_outlet_template.device_type),
25
+ notice: 'Power outlet template was successfully destroyed'
26
+ else
27
+ process_error object: @power_outlet_template
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def set_power_outlet_template
34
+ @power_outlet_template = PowerOutletTemplate.find(params[:id])
35
+ end
36
+
37
+ def power_outlet_template_params
38
+ params[:power_outlet_template].permit(:device_type_id, :name)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,77 @@
1
+ module ForemanDatacenter
2
+ class PowerOutletsController < ApplicationController
3
+ before_action :set_power_outlet, only: [:edit, :update, :destroy, :new_connection,
4
+ :connect, :disconnect]
5
+
6
+ def new
7
+ device = Device.find(params[:device_id])
8
+ @power_outlet = PowerOutlet.new(device: device)
9
+ end
10
+
11
+ def edit
12
+ end
13
+
14
+ def create
15
+ @power_outlet = PowerOutlet.new(power_outlet_params)
16
+
17
+ if @power_outlet.save
18
+ redirect_to device_url(id: @power_outlet.device_id),
19
+ notice: 'Power outlet was successfully created.'
20
+ else
21
+ process_error object: @power_outlet
22
+ end
23
+ end
24
+
25
+ def update
26
+ if @power_outlet.update(power_outlet_params)
27
+ redirect_to device_url(id: @power_outlet.device_id),
28
+ notice: 'Power outlet was successfully updated.'
29
+ else
30
+ process_error object: @power_outlet
31
+ end
32
+ end
33
+
34
+ def destroy
35
+ if @power_outlet.destroy
36
+ redirect_to device_url(id: @power_outlet.device_id),
37
+ notice: 'Power outlet was successfully destroyed.'
38
+ else
39
+ process_error object: @power_outlet
40
+ end
41
+ end
42
+
43
+ def new_connection
44
+ end
45
+
46
+ def connect
47
+ power_port = PowerPort.find(params[:power_port][:id])
48
+ power_port.connect(
49
+ @power_outlet,
50
+ params[:power_port][:connection_status]
51
+ )
52
+ redirect_to device_url(id: @power_outlet.device_id),
53
+ notice: 'Power outlet was successfully connected.'
54
+ end
55
+
56
+ def disconnect
57
+ @power_outlet.power_port.disconnect
58
+ redirect_to device_url(id: @power_outlet.device_id),
59
+ notice: 'Power outlet was successfully disconnected.'
60
+ end
61
+
62
+ def for_device
63
+ @device = Device.find(params[:device_id])
64
+ render partial: 'for_device'
65
+ end
66
+
67
+ private
68
+
69
+ def set_power_outlet
70
+ @power_outlet = PowerOutlet.find(params[:id])
71
+ end
72
+
73
+ def power_outlet_params
74
+ params[:power_outlet].permit(:device_id, :name)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,41 @@
1
+ module ForemanDatacenter
2
+ class PowerPortTemplatesController < ApplicationController
3
+ before_action :set_power_port_template, only: [:destroy]
4
+
5
+ def new
6
+ @power_port_template = PowerPortTemplate.new(
7
+ device_type: DeviceType.find(params[:device_type_id]),
8
+ )
9
+ end
10
+
11
+ def create
12
+ @power_port_template = PowerPortTemplate.new(power_port_template_params)
13
+
14
+ if @power_port_template.save
15
+ redirect_to device_type_url(@power_port_template.device_type),
16
+ notice: 'New power port template was successfully created'
17
+ else
18
+ process_error object: @power_port_template
19
+ end
20
+ end
21
+
22
+ def destroy
23
+ if @power_port_template.destroy
24
+ redirect_to device_type_url(@power_port_template.device_type),
25
+ notice: 'Power port template was successfully destroyed'
26
+ else
27
+ process_error object: @power_port_template
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ def set_power_port_template
34
+ @power_port_template = PowerPortTemplate.find(params[:id])
35
+ end
36
+
37
+ def power_port_template_params
38
+ params[:power_port_template].permit(:device_type_id, :name)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,94 @@
1
+ module ForemanDatacenter
2
+ class PowerPortsController < ApplicationController
3
+ before_action :set_power_port, only: [:edit, :update, :destroy, :connected,
4
+ :planned, :new_connection, :connect,
5
+ :disconnect]
6
+
7
+ def index
8
+ @power_ports = PowerPort.where.not(power_outlet_id: nil).
9
+ includes(:device, power_outlet: [:device])
10
+ end
11
+
12
+ def new
13
+ @power_port = PowerPort.new(
14
+ device: Device.find(params[:device_id])
15
+ )
16
+ end
17
+
18
+ def edit
19
+ end
20
+
21
+ def create
22
+ @power_port = PowerPort.new(power_port_params)
23
+
24
+ if @power_port.save
25
+ redirect_to device_url(id: @power_port.device_id),
26
+ notice: 'Power port was successfully created.'
27
+ else
28
+ process_error object: @power_port
29
+ end
30
+ end
31
+
32
+ def update
33
+ if @power_port.update(power_port_params)
34
+ redirect_to device_url(id: @power_port.device_id),
35
+ notice: 'Power port was successfully updated.'
36
+ else
37
+ process_error object: @power_port
38
+ end
39
+ end
40
+
41
+ def destroy
42
+ if @power_port.destroy
43
+ redirect_to device_url(id: @power_port.device_id),
44
+ notice: 'Power port was successfully destroyed.'
45
+ else
46
+ process_error object: @power_port
47
+ end
48
+ end
49
+
50
+ def connected
51
+ @power_port.connected!
52
+ head :ok
53
+ end
54
+
55
+ def planned
56
+ @power_port.planned!
57
+ head :ok
58
+ end
59
+
60
+ def for_device
61
+ @device = Device.find(params[:device_id])
62
+ render partial: 'for_device'
63
+ end
64
+
65
+ def new_connection
66
+ end
67
+
68
+ def connect
69
+ power_outlet = PowerOutlet.find(params[:power_outlet][:id])
70
+ @power_port.connect(
71
+ power_outlet,
72
+ params[:power_port][:connection_status]
73
+ )
74
+ redirect_to device_url(id: @power_port.device_id),
75
+ notice: 'Power port was successfully connected.'
76
+ end
77
+
78
+ def disconnect
79
+ @power_port.disconnect
80
+ redirect_to device_url(id: @power_port.device_id),
81
+ notice: 'Power port was successfully disconnected.'
82
+ end
83
+
84
+ private
85
+
86
+ def set_power_port
87
+ @power_port = PowerPort.find(params[:id])
88
+ end
89
+
90
+ def power_port_params
91
+ params[:power_port].permit(:device_id, :name)
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,55 @@
1
+ module ForemanDatacenter
2
+ class RackGroupsController < ApplicationController
3
+ before_action :set_rack_group, only: [:show, :edit, :update, :destroy]
4
+
5
+ def index
6
+ @rack_groups = RackGroup.includes(:site, :racks).all
7
+ end
8
+
9
+ def show
10
+ end
11
+
12
+ def new
13
+ @rack_group = RackGroup.new
14
+ end
15
+
16
+ def edit
17
+ end
18
+
19
+ def create
20
+ @rack_group = RackGroup.new(rack_group_params)
21
+
22
+ if @rack_group.save
23
+ process_success object: @rack_group
24
+ else
25
+ process_error object: @rack_group
26
+ end
27
+ end
28
+
29
+ def update
30
+ if @rack_group.update(rack_group_params)
31
+ process_success object: @rack_group
32
+ else
33
+ process_error object: @rack_group
34
+ end
35
+ end
36
+
37
+ def destroy
38
+ if @rack_group.destroy
39
+ process_success object: @rack_group
40
+ else
41
+ process_error object: @rack_group
42
+ end
43
+ end
44
+
45
+ private
46
+
47
+ def set_rack_group
48
+ @rack_group = RackGroup.find(params[:id])
49
+ end
50
+
51
+ def rack_group_params
52
+ params[:rack_group].permit(:name, :site_id)
53
+ end
54
+ end
55
+ end