foreman_datacenter 0.1.54 → 0.1.55

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 (404) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/foreman_datacenter/modal.js +75 -0
  3. data/app/assets/javascripts/foreman_datacenter/modal_bck.js +21 -0
  4. data/app/assets/stylesheets/foreman_datacenter/datacenter.css +3 -2
  5. data/app/assets/stylesheets/foreman_datacenter/device_roles.css +0 -1
  6. data/app/assets/stylesheets/foreman_datacenter/devices.css +2 -0
  7. data/app/assets/stylesheets/foreman_datacenter/modal.css +109 -0
  8. data/app/assets/stylesheets/foreman_datacenter/title_filter.css +3 -0
  9. data/app/controllers/api/v2/foreman_datacenter/base_controller.rb +77 -0
  10. data/app/controllers/api/v2/foreman_datacenter/console_port_templates_controller.rb +48 -0
  11. data/app/controllers/api/v2/foreman_datacenter/console_ports_controller.rb +95 -0
  12. data/app/controllers/api/v2/foreman_datacenter/console_server_port_templates_controller.rb +48 -0
  13. data/app/controllers/api/v2/foreman_datacenter/console_server_ports_controller.rb +77 -0
  14. data/app/controllers/api/v2/foreman_datacenter/device_bay_templates_controller.rb +49 -0
  15. data/app/controllers/api/v2/foreman_datacenter/device_bays_controller.rb +75 -0
  16. data/app/controllers/api/v2/foreman_datacenter/device_interface_connections_controller.rb +71 -0
  17. data/app/controllers/api/v2/foreman_datacenter/device_interfaces_controller.rb +62 -0
  18. data/app/controllers/api/v2/foreman_datacenter/device_modules_controller.rb +58 -0
  19. data/app/controllers/api/v2/foreman_datacenter/device_roles_controller.rb +58 -0
  20. data/app/controllers/api/v2/foreman_datacenter/device_types_controller.rb +67 -0
  21. data/app/controllers/api/v2/foreman_datacenter/devices_controller.rb +87 -0
  22. data/app/controllers/api/v2/foreman_datacenter/devices_controller.rb~ +87 -0
  23. data/app/controllers/api/v2/foreman_datacenter/interface_templates_controller.rb +50 -0
  24. data/app/controllers/api/v2/foreman_datacenter/management_devices_controller.rb +58 -0
  25. data/app/controllers/api/v2/foreman_datacenter/manufacturers_controller.rb +57 -0
  26. data/app/controllers/api/v2/foreman_datacenter/platforms_controller.rb +58 -0
  27. data/app/controllers/api/v2/foreman_datacenter/power_outlet_templates_controller.rb +49 -0
  28. data/app/controllers/api/v2/foreman_datacenter/power_outlets_controller.rb +77 -0
  29. data/app/controllers/api/v2/foreman_datacenter/power_port_templates_controller.rb +49 -0
  30. data/app/controllers/api/v2/foreman_datacenter/power_ports_controller.rb +94 -0
  31. data/app/controllers/api/v2/foreman_datacenter/rack_groups_controller.rb +64 -0
  32. data/app/controllers/api/v2/foreman_datacenter/racks_controller.rb +62 -0
  33. data/app/controllers/api/v2/foreman_datacenter/sites_controller.rb +65 -0
  34. data/app/controllers/concerns/foreman_datacenter/controller/parameters/comment.rb +16 -0
  35. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_port.rb +15 -0
  36. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_port_template.rb +15 -0
  37. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_server_port.rb +15 -0
  38. data/app/controllers/concerns/foreman_datacenter/controller/parameters/console_server_port_template.rb +15 -0
  39. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device.rb +18 -0
  40. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_bay.rb +15 -0
  41. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_bay_template.rb +15 -0
  42. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_interface.rb +17 -0
  43. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_interface_connection.rb +15 -0
  44. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_module.rb +15 -0
  45. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_role.rb +15 -0
  46. data/app/controllers/concerns/foreman_datacenter/controller/parameters/device_type.rb +17 -0
  47. data/app/controllers/concerns/foreman_datacenter/controller/parameters/interface_template.rb +15 -0
  48. data/app/controllers/concerns/foreman_datacenter/controller/parameters/management_device.rb +15 -0
  49. data/app/controllers/concerns/foreman_datacenter/controller/parameters/manufacturer.rb +15 -0
  50. data/app/controllers/concerns/foreman_datacenter/controller/parameters/platform.rb +15 -0
  51. data/app/controllers/concerns/foreman_datacenter/controller/parameters/power_outlet.rb +15 -0
  52. data/app/controllers/concerns/foreman_datacenter/controller/parameters/power_outlet_template.rb +15 -0
  53. data/app/controllers/concerns/foreman_datacenter/controller/parameters/power_port.rb +15 -0
  54. data/app/controllers/concerns/foreman_datacenter/controller/parameters/power_port_template.rb +15 -0
  55. data/app/controllers/concerns/foreman_datacenter/controller/parameters/rack.rb +16 -0
  56. data/app/controllers/concerns/foreman_datacenter/controller/parameters/rack_group.rb +15 -0
  57. data/app/controllers/concerns/foreman_datacenter/controller/parameters/site.rb +16 -0
  58. data/app/controllers/foreman_datacenter/application_controller.rb +99 -0
  59. data/app/controllers/foreman_datacenter/comments_controller.rb +38 -53
  60. data/app/controllers/foreman_datacenter/console_port_templates_controller.rb +9 -19
  61. data/app/controllers/foreman_datacenter/console_ports_controller.rb +14 -23
  62. data/app/controllers/foreman_datacenter/console_server_port_templates_controller.rb +9 -19
  63. data/app/controllers/foreman_datacenter/console_server_ports_controller.rb +11 -19
  64. data/app/controllers/foreman_datacenter/device_bay_templates_controller.rb +9 -19
  65. data/app/controllers/foreman_datacenter/device_bays_controller.rb +8 -15
  66. data/app/controllers/foreman_datacenter/device_interface_connections_controller.rb +10 -19
  67. data/app/controllers/foreman_datacenter/device_interfaces_controller.rb +8 -17
  68. data/app/controllers/foreman_datacenter/device_modules_controller.rb +6 -14
  69. data/app/controllers/foreman_datacenter/device_roles_controller.rb +15 -16
  70. data/app/controllers/foreman_datacenter/device_types_controller.rb +17 -21
  71. data/app/controllers/foreman_datacenter/devices_controller.rb +35 -45
  72. data/app/controllers/foreman_datacenter/interface_templates_controller.rb +6 -17
  73. data/app/controllers/foreman_datacenter/management_devices_controller.rb +5 -14
  74. data/app/controllers/foreman_datacenter/manufacturers_controller.rb +14 -15
  75. data/app/controllers/foreman_datacenter/platforms_controller.rb +12 -14
  76. data/app/controllers/foreman_datacenter/power_outlet_templates_controller.rb +7 -17
  77. data/app/controllers/foreman_datacenter/power_outlets_controller.rb +7 -14
  78. data/app/controllers/foreman_datacenter/power_port_templates_controller.rb +9 -19
  79. data/app/controllers/foreman_datacenter/power_ports_controller.rb +8 -16
  80. data/app/controllers/foreman_datacenter/rack_groups_controller.rb +29 -12
  81. data/app/controllers/foreman_datacenter/racks_controller.rb +29 -15
  82. data/app/controllers/foreman_datacenter/sites_controller.rb +34 -17
  83. data/app/helpers/foreman_datacenter/application_helper.rb +66 -0
  84. data/app/helpers/foreman_datacenter/comments_helper.rb +8 -0
  85. data/app/models/foreman_datacenter/comment.rb +2 -2
  86. data/app/models/foreman_datacenter/console_port.rb +10 -0
  87. data/app/models/foreman_datacenter/console_port_template.rb +5 -0
  88. data/app/models/foreman_datacenter/console_server_port.rb +6 -0
  89. data/app/models/foreman_datacenter/console_server_port_template.rb +5 -0
  90. data/app/models/foreman_datacenter/device.rb +20 -26
  91. data/app/models/foreman_datacenter/device_bay.rb +5 -0
  92. data/app/models/foreman_datacenter/device_bay_template.rb +5 -0
  93. data/app/models/foreman_datacenter/device_interface.rb +5 -0
  94. data/app/models/foreman_datacenter/device_interface_connection.rb +6 -0
  95. data/app/models/foreman_datacenter/device_module.rb +5 -0
  96. data/app/models/foreman_datacenter/device_role.rb +14 -0
  97. data/app/models/foreman_datacenter/device_type.rb +31 -6
  98. data/app/models/foreman_datacenter/interface_template.rb +5 -0
  99. data/app/models/foreman_datacenter/management_device.rb +9 -0
  100. data/app/models/foreman_datacenter/manufacturer.rb +18 -0
  101. data/app/models/foreman_datacenter/platform.rb +15 -0
  102. data/app/models/foreman_datacenter/power_outlet.rb +5 -0
  103. data/app/models/foreman_datacenter/power_outlet_template.rb +5 -0
  104. data/app/models/foreman_datacenter/power_port.rb +10 -0
  105. data/app/models/foreman_datacenter/power_port_template.rb +5 -0
  106. data/app/models/foreman_datacenter/rack.rb +19 -1
  107. data/app/models/foreman_datacenter/rack_group.rb +21 -0
  108. data/app/models/foreman_datacenter/site.rb +36 -2
  109. data/app/views/api/v2/foreman_datacenter/console_port_templates/base.json.rabl +3 -0
  110. data/app/views/api/v2/foreman_datacenter/console_port_templates/create.json.rabl +3 -0
  111. data/app/views/api/v2/foreman_datacenter/console_port_templates/index.json.rabl +3 -0
  112. data/app/views/api/v2/foreman_datacenter/console_port_templates/main.json.rabl +5 -0
  113. data/app/views/api/v2/foreman_datacenter/console_port_templates/show.json.rabl +7 -0
  114. data/app/views/api/v2/foreman_datacenter/console_ports/base.json.rabl +3 -0
  115. data/app/views/api/v2/foreman_datacenter/console_ports/create.json.rabl +3 -0
  116. data/app/views/api/v2/foreman_datacenter/console_ports/index.json.rabl +3 -0
  117. data/app/views/api/v2/foreman_datacenter/console_ports/main.json.rabl +5 -0
  118. data/app/views/api/v2/foreman_datacenter/console_ports/show.json.rabl +11 -0
  119. data/app/views/api/v2/foreman_datacenter/console_ports/update.json.rabl +3 -0
  120. data/app/views/api/v2/foreman_datacenter/console_server_port_templates/base.json.rabl +3 -0
  121. data/app/views/api/v2/foreman_datacenter/console_server_port_templates/create.json.rabl +3 -0
  122. data/app/views/api/v2/foreman_datacenter/console_server_port_templates/index.json.rabl +3 -0
  123. data/app/views/api/v2/foreman_datacenter/console_server_port_templates/main.json.rabl +5 -0
  124. data/app/views/api/v2/foreman_datacenter/console_server_port_templates/show.json.rabl +11 -0
  125. data/app/views/api/v2/foreman_datacenter/console_server_ports/base.json.rabl +3 -0
  126. data/app/views/api/v2/foreman_datacenter/console_server_ports/create.json.rabl +3 -0
  127. data/app/views/api/v2/foreman_datacenter/console_server_ports/index.json.rabl +3 -0
  128. data/app/views/api/v2/foreman_datacenter/console_server_ports/main.json.rabl +5 -0
  129. data/app/views/api/v2/foreman_datacenter/console_server_ports/show.json.rabl +7 -0
  130. data/app/views/api/v2/foreman_datacenter/console_server_ports/update.json.rabl +3 -0
  131. data/app/views/api/v2/foreman_datacenter/device_bay_templates/base.json.rabl +3 -0
  132. data/app/views/api/v2/foreman_datacenter/device_bay_templates/create.json.rabl +3 -0
  133. data/app/views/api/v2/foreman_datacenter/device_bay_templates/index.json.rabl +3 -0
  134. data/app/views/api/v2/foreman_datacenter/device_bay_templates/main.json.rabl +5 -0
  135. data/app/views/api/v2/foreman_datacenter/device_bay_templates/show.json.rabl +7 -0
  136. data/app/views/api/v2/foreman_datacenter/device_bays/base.json.rabl +3 -0
  137. data/app/views/api/v2/foreman_datacenter/device_bays/create.json.rabl +3 -0
  138. data/app/views/api/v2/foreman_datacenter/device_bays/index.json.rabl +3 -0
  139. data/app/views/api/v2/foreman_datacenter/device_bays/main.json.rabl +5 -0
  140. data/app/views/api/v2/foreman_datacenter/device_bays/show.json.rabl +7 -0
  141. data/app/views/api/v2/foreman_datacenter/device_bays/update.json.rabl +3 -0
  142. data/app/views/api/v2/foreman_datacenter/device_interface_connections/base.json.rabl +3 -0
  143. data/app/views/api/v2/foreman_datacenter/device_interface_connections/create.json.rabl +3 -0
  144. data/app/views/api/v2/foreman_datacenter/device_interface_connections/index.json.rabl +3 -0
  145. data/app/views/api/v2/foreman_datacenter/device_interface_connections/main.json.rabl +5 -0
  146. data/app/views/api/v2/foreman_datacenter/device_interface_connections/show.json.rabl +3 -0
  147. data/app/views/api/v2/foreman_datacenter/device_interface_connections/update.json.rabl +3 -0
  148. data/app/views/api/v2/foreman_datacenter/device_interfaces/base.json.rabl +3 -0
  149. data/app/views/api/v2/foreman_datacenter/device_interfaces/create.json.rabl +3 -0
  150. data/app/views/api/v2/foreman_datacenter/device_interfaces/index.json.rabl +3 -0
  151. data/app/views/api/v2/foreman_datacenter/device_interfaces/main.json.rabl +5 -0
  152. data/app/views/api/v2/foreman_datacenter/device_interfaces/show.json.rabl +7 -0
  153. data/app/views/api/v2/foreman_datacenter/device_interfaces/update.json.rabl +3 -0
  154. data/app/views/api/v2/foreman_datacenter/device_modules/base.json.rabl +3 -0
  155. data/app/views/api/v2/foreman_datacenter/device_modules/create.json.rabl +3 -0
  156. data/app/views/api/v2/foreman_datacenter/device_modules/index.json.rabl +3 -0
  157. data/app/views/api/v2/foreman_datacenter/device_modules/main.json.rabl +5 -0
  158. data/app/views/api/v2/foreman_datacenter/device_modules/show.json.rabl +7 -0
  159. data/app/views/api/v2/foreman_datacenter/device_modules/update.json.rabl +3 -0
  160. data/app/views/api/v2/foreman_datacenter/device_roles/base.json.rabl +3 -0
  161. data/app/views/api/v2/foreman_datacenter/device_roles/create.json.rabl +3 -0
  162. data/app/views/api/v2/foreman_datacenter/device_roles/index.json.rabl +3 -0
  163. data/app/views/api/v2/foreman_datacenter/device_roles/main.json.rabl +5 -0
  164. data/app/views/api/v2/foreman_datacenter/device_roles/show.json.rabl +7 -0
  165. data/app/views/api/v2/foreman_datacenter/device_roles/update.json.rabl +3 -0
  166. data/app/views/api/v2/foreman_datacenter/device_types/base.json.rabl +3 -0
  167. data/app/views/api/v2/foreman_datacenter/device_types/create.json.rabl +3 -0
  168. data/app/views/api/v2/foreman_datacenter/device_types/index.json.rabl +3 -0
  169. data/app/views/api/v2/foreman_datacenter/device_types/main.json.rabl +5 -0
  170. data/app/views/api/v2/foreman_datacenter/device_types/show.json.rabl +31 -0
  171. data/app/views/api/v2/foreman_datacenter/device_types/update.json.rabl +7 -0
  172. data/app/views/api/v2/foreman_datacenter/devices/base.json.rabl +3 -0
  173. data/app/views/api/v2/foreman_datacenter/devices/create.json.rabl +3 -0
  174. data/app/views/api/v2/foreman_datacenter/devices/index.json.rabl +3 -0
  175. data/app/views/api/v2/foreman_datacenter/devices/main.json.rabl +5 -0
  176. data/app/views/api/v2/foreman_datacenter/devices/show.json.rabl +63 -0
  177. data/app/views/api/v2/foreman_datacenter/devices/update.json.rabl +7 -0
  178. data/app/views/api/v2/foreman_datacenter/interface_templates/base.json.rabl +3 -0
  179. data/app/views/api/v2/foreman_datacenter/interface_templates/create.json.rabl +3 -0
  180. data/app/views/api/v2/foreman_datacenter/interface_templates/index.json.rabl +3 -0
  181. data/app/views/api/v2/foreman_datacenter/interface_templates/main.json.rabl +5 -0
  182. data/app/views/api/v2/foreman_datacenter/interface_templates/show.json.rabl +7 -0
  183. data/app/views/api/v2/foreman_datacenter/management_devices/base.json.rabl +3 -0
  184. data/app/views/api/v2/foreman_datacenter/management_devices/create.json.rabl +3 -0
  185. data/app/views/api/v2/foreman_datacenter/management_devices/index.json.rabl +3 -0
  186. data/app/views/api/v2/foreman_datacenter/management_devices/main.json.rabl +5 -0
  187. data/app/views/api/v2/foreman_datacenter/management_devices/show.json.rabl +7 -0
  188. data/app/views/api/v2/foreman_datacenter/management_devices/update.json.rabl +3 -0
  189. data/app/views/api/v2/foreman_datacenter/manufacturers/base.json.rabl +3 -0
  190. data/app/views/api/v2/foreman_datacenter/manufacturers/create.json.rabl +3 -0
  191. data/app/views/api/v2/foreman_datacenter/manufacturers/index.json.rabl +3 -0
  192. data/app/views/api/v2/foreman_datacenter/manufacturers/main.json.rabl +5 -0
  193. data/app/views/api/v2/foreman_datacenter/manufacturers/show.json.rabl +7 -0
  194. data/app/views/api/v2/foreman_datacenter/manufacturers/update.json.rabl +3 -0
  195. data/app/views/api/v2/foreman_datacenter/platforms/base.json.rabl +3 -0
  196. data/app/views/api/v2/foreman_datacenter/platforms/create.json.rabl +3 -0
  197. data/app/views/api/v2/foreman_datacenter/platforms/index.json.rabl +3 -0
  198. data/app/views/api/v2/foreman_datacenter/platforms/main.json.rabl +5 -0
  199. data/app/views/api/v2/foreman_datacenter/platforms/show.json.rabl +7 -0
  200. data/app/views/api/v2/foreman_datacenter/platforms/update.json.rabl +3 -0
  201. data/app/views/api/v2/foreman_datacenter/power_outlet_templates/base.json.rabl +3 -0
  202. data/app/views/api/v2/foreman_datacenter/power_outlet_templates/create.json.rabl +3 -0
  203. data/app/views/api/v2/foreman_datacenter/power_outlet_templates/index.json.rabl +3 -0
  204. data/app/views/api/v2/foreman_datacenter/power_outlet_templates/main.json.rabl +5 -0
  205. data/app/views/api/v2/foreman_datacenter/power_outlet_templates/show.json.rabl +7 -0
  206. data/app/views/api/v2/foreman_datacenter/power_outlets/base.json.rabl +3 -0
  207. data/app/views/api/v2/foreman_datacenter/power_outlets/create.json.rabl +3 -0
  208. data/app/views/api/v2/foreman_datacenter/power_outlets/index.json.rabl +3 -0
  209. data/app/views/api/v2/foreman_datacenter/power_outlets/main.json.rabl +5 -0
  210. data/app/views/api/v2/foreman_datacenter/power_outlets/show.json.rabl +11 -0
  211. data/app/views/api/v2/foreman_datacenter/power_outlets/update.json.rabl +3 -0
  212. data/app/views/api/v2/foreman_datacenter/power_port_templates/base.json.rabl +3 -0
  213. data/app/views/api/v2/foreman_datacenter/power_port_templates/create.json.rabl +3 -0
  214. data/app/views/api/v2/foreman_datacenter/power_port_templates/index.json.rabl +3 -0
  215. data/app/views/api/v2/foreman_datacenter/power_port_templates/main.json.rabl +5 -0
  216. data/app/views/api/v2/foreman_datacenter/power_port_templates/show.json.rabl +7 -0
  217. data/app/views/api/v2/foreman_datacenter/power_ports/base.json.rabl +3 -0
  218. data/app/views/api/v2/foreman_datacenter/power_ports/create.json.rabl +3 -0
  219. data/app/views/api/v2/foreman_datacenter/power_ports/index.json.rabl +3 -0
  220. data/app/views/api/v2/foreman_datacenter/power_ports/main.json.rabl +5 -0
  221. data/app/views/api/v2/foreman_datacenter/power_ports/show.json.rabl +11 -0
  222. data/app/views/api/v2/foreman_datacenter/power_ports/update.json.rabl +3 -0
  223. data/app/views/api/v2/foreman_datacenter/rack_groups/base.json.rabl +3 -0
  224. data/app/views/api/v2/foreman_datacenter/rack_groups/create.json.rabl +3 -0
  225. data/app/views/api/v2/foreman_datacenter/rack_groups/index.json.rabl +3 -0
  226. data/app/views/api/v2/foreman_datacenter/rack_groups/main.json.rabl +5 -0
  227. data/app/views/api/v2/foreman_datacenter/rack_groups/show.json.rabl +7 -0
  228. data/app/views/api/v2/foreman_datacenter/rack_groups/update.json.rabl +3 -0
  229. data/app/views/api/v2/foreman_datacenter/racks/base.json.rabl +3 -0
  230. data/app/views/api/v2/foreman_datacenter/racks/create.json.rabl +3 -0
  231. data/app/views/api/v2/foreman_datacenter/racks/index.json.rabl +3 -0
  232. data/app/views/api/v2/foreman_datacenter/racks/main.json.rabl +5 -0
  233. data/app/views/api/v2/foreman_datacenter/racks/show.json.rabl +11 -0
  234. data/app/views/api/v2/foreman_datacenter/racks/update.json.rabl +3 -0
  235. data/app/views/api/v2/foreman_datacenter/sites/base.json.rabl +3 -0
  236. data/app/views/api/v2/foreman_datacenter/sites/create.json.rabl +3 -0
  237. data/app/views/api/v2/foreman_datacenter/sites/index.json.rabl +3 -0
  238. data/app/views/api/v2/foreman_datacenter/sites/main.json.rabl +5 -0
  239. data/app/views/api/v2/foreman_datacenter/sites/show.json.rabl +11 -0
  240. data/app/views/api/v2/foreman_datacenter/sites/update.json.rabl +3 -0
  241. data/app/views/foreman_datacenter/comments/_children.html.erb +2 -2
  242. data/app/views/foreman_datacenter/comments/_comments.html.erb +8 -10
  243. data/app/views/foreman_datacenter/comments/_form.html.erb +27 -39
  244. data/app/views/foreman_datacenter/comments/_item.html.erb +4 -4
  245. data/app/views/foreman_datacenter/comments/_list.html.erb +26 -0
  246. data/app/views/foreman_datacenter/comments/edit.html.erb +3 -2
  247. data/app/views/foreman_datacenter/comments/new.html.erb +3 -2
  248. data/app/views/foreman_datacenter/common/404.html.erb +10 -0
  249. data/app/views/foreman_datacenter/console_port_templates/_form.html.erb +4 -3
  250. data/app/views/foreman_datacenter/console_port_templates/new.html.erb +3 -1
  251. data/app/views/foreman_datacenter/console_ports/_form.html.erb +4 -3
  252. data/app/views/foreman_datacenter/console_ports/edit.html.erb +3 -1
  253. data/app/views/foreman_datacenter/console_ports/index.html.erb +25 -26
  254. data/app/views/foreman_datacenter/console_ports/new.html.erb +3 -1
  255. data/app/views/foreman_datacenter/console_ports/new_connection.html.erb +2 -0
  256. data/app/views/foreman_datacenter/console_ports/welcome.html.erb +15 -0
  257. data/app/views/foreman_datacenter/console_server_port_templates/_form.html.erb +4 -3
  258. data/app/views/foreman_datacenter/console_server_port_templates/new.html.erb +3 -1
  259. data/app/views/foreman_datacenter/console_server_ports/_form.html.erb +4 -3
  260. data/app/views/foreman_datacenter/console_server_ports/edit.html.erb +3 -1
  261. data/app/views/foreman_datacenter/console_server_ports/new.html.erb +3 -1
  262. data/app/views/foreman_datacenter/console_server_ports/new_connection.html.erb +3 -1
  263. data/app/views/foreman_datacenter/device_bay_templates/_form.html.erb +4 -3
  264. data/app/views/foreman_datacenter/device_bay_templates/new.html.erb +3 -1
  265. data/app/views/foreman_datacenter/device_bays/_form.html.erb +4 -3
  266. data/app/views/foreman_datacenter/device_bays/edit.html.erb +3 -1
  267. data/app/views/foreman_datacenter/device_bays/new.html.erb +3 -1
  268. data/app/views/foreman_datacenter/device_bays/populate_new.html.erb +12 -4
  269. data/app/views/foreman_datacenter/device_interface_connections/_form.html.erb +20 -14
  270. data/app/views/foreman_datacenter/device_interface_connections/index.html.erb +29 -29
  271. data/app/views/foreman_datacenter/device_interface_connections/new.html.erb +3 -1
  272. data/app/views/foreman_datacenter/device_interface_connections/welcome.html.erb +15 -0
  273. data/app/views/foreman_datacenter/device_interfaces/_form.html.erb +6 -5
  274. data/app/views/foreman_datacenter/device_interfaces/edit.html.erb +3 -1
  275. data/app/views/foreman_datacenter/device_interfaces/new.html.erb +3 -1
  276. data/app/views/foreman_datacenter/device_modules/_form.html.erb +4 -3
  277. data/app/views/foreman_datacenter/device_modules/edit.html.erb +3 -1
  278. data/app/views/foreman_datacenter/device_modules/new.html.erb +3 -1
  279. data/app/views/foreman_datacenter/device_roles/edit.html.erb +3 -1
  280. data/app/views/foreman_datacenter/device_roles/index.html.erb +26 -16
  281. data/app/views/foreman_datacenter/device_roles/new.html.erb +3 -1
  282. data/app/views/foreman_datacenter/device_roles/show.html.erb +42 -16
  283. data/app/views/foreman_datacenter/device_roles/welcome.html.erb +2 -0
  284. data/app/views/foreman_datacenter/device_types/_form.html.erb +10 -10
  285. data/app/views/foreman_datacenter/device_types/edit.html.erb +3 -1
  286. data/app/views/foreman_datacenter/device_types/index.html.erb +30 -16
  287. data/app/views/foreman_datacenter/device_types/new.html.erb +3 -1
  288. data/app/views/foreman_datacenter/device_types/show.html.erb +178 -170
  289. data/app/views/foreman_datacenter/device_types/welcome.html.erb +2 -0
  290. data/app/views/foreman_datacenter/devices/_aracks.html.erb +2 -2
  291. data/app/views/foreman_datacenter/devices/_console_port.html.erb +1 -1
  292. data/app/views/foreman_datacenter/devices/_console_server_port.html.erb +1 -1
  293. data/app/views/foreman_datacenter/devices/_device_bay.html.erb +1 -1
  294. data/app/views/foreman_datacenter/devices/_device_module.html.erb +2 -2
  295. data/app/views/foreman_datacenter/devices/_device_types.html.erb +3 -3
  296. data/app/views/foreman_datacenter/devices/_for_rack.html.erb +2 -2
  297. data/app/views/foreman_datacenter/devices/_form.html.erb +2 -4
  298. data/app/views/foreman_datacenter/devices/_power_outlet.html.erb +1 -1
  299. data/app/views/foreman_datacenter/devices/_racks.html.erb +3 -3
  300. data/app/views/foreman_datacenter/devices/edit.html.erb +3 -1
  301. data/app/views/foreman_datacenter/devices/index.html.erb +40 -23
  302. data/app/views/foreman_datacenter/devices/inventory.html.erb +17 -14
  303. data/app/views/foreman_datacenter/devices/new.html.erb +3 -1
  304. data/app/views/foreman_datacenter/devices/show.html.erb +132 -114
  305. data/app/views/foreman_datacenter/devices/welcome.html.erb +2 -0
  306. data/app/views/foreman_datacenter/interface_templates/_form.html.erb +4 -3
  307. data/app/views/foreman_datacenter/interface_templates/new.html.erb +3 -1
  308. data/app/views/foreman_datacenter/management_devices/_form.html.erb +4 -3
  309. data/app/views/foreman_datacenter/management_devices/edit.html.erb +3 -1
  310. data/app/views/foreman_datacenter/management_devices/new.html.erb +3 -1
  311. data/app/views/foreman_datacenter/manufacturers/edit.html.erb +3 -1
  312. data/app/views/foreman_datacenter/manufacturers/index.html.erb +30 -15
  313. data/app/views/foreman_datacenter/manufacturers/new.html.erb +3 -1
  314. data/app/views/foreman_datacenter/manufacturers/show.html.erb +54 -24
  315. data/app/views/foreman_datacenter/manufacturers/welcome.html.erb +2 -0
  316. data/app/views/foreman_datacenter/platforms/edit.html.erb +3 -1
  317. data/app/views/foreman_datacenter/platforms/index.html.erb +27 -15
  318. data/app/views/foreman_datacenter/platforms/new.html.erb +3 -1
  319. data/app/views/foreman_datacenter/platforms/show.html.erb +43 -17
  320. data/app/views/foreman_datacenter/platforms/welcome.html.erb +2 -0
  321. data/app/views/foreman_datacenter/power_outlet_templates/_form.html.erb +4 -3
  322. data/app/views/foreman_datacenter/power_outlet_templates/new.html.erb +3 -1
  323. data/app/views/foreman_datacenter/power_outlets/_form.html.erb +4 -3
  324. data/app/views/foreman_datacenter/power_outlets/edit.html.erb +3 -1
  325. data/app/views/foreman_datacenter/power_outlets/new.html.erb +3 -1
  326. data/app/views/foreman_datacenter/power_outlets/new_connection.html.erb +3 -1
  327. data/app/views/foreman_datacenter/power_port_templates/_form.html.erb +4 -3
  328. data/app/views/foreman_datacenter/power_port_templates/new.html.erb +3 -1
  329. data/app/views/foreman_datacenter/power_ports/_form.html.erb +4 -3
  330. data/app/views/foreman_datacenter/power_ports/edit.html.erb +3 -1
  331. data/app/views/foreman_datacenter/power_ports/index.html.erb +26 -26
  332. data/app/views/foreman_datacenter/power_ports/new.html.erb +3 -1
  333. data/app/views/foreman_datacenter/power_ports/new_connection.html.erb +2 -0
  334. data/app/views/foreman_datacenter/power_ports/welcome.html.erb +15 -0
  335. data/app/views/foreman_datacenter/rack_groups/edit.html.erb +3 -1
  336. data/app/views/foreman_datacenter/rack_groups/index.html.erb +31 -17
  337. data/app/views/foreman_datacenter/rack_groups/move.html.erb +24 -0
  338. data/app/views/foreman_datacenter/rack_groups/new.html.erb +3 -1
  339. data/app/views/foreman_datacenter/rack_groups/show.html.erb +80 -55
  340. data/app/views/foreman_datacenter/racks/_device_position.html.erb +2 -2
  341. data/app/views/foreman_datacenter/racks/_form.html.erb +18 -18
  342. data/app/views/foreman_datacenter/racks/_rack_groups.html.erb +6 -6
  343. data/app/views/foreman_datacenter/racks/_unpositioned_devices.html.erb +2 -2
  344. data/app/views/foreman_datacenter/racks/edit.html.erb +3 -1
  345. data/app/views/foreman_datacenter/racks/index.html.erb +37 -27
  346. data/app/views/foreman_datacenter/racks/move.html.erb +24 -0
  347. data/app/views/foreman_datacenter/racks/new.html.erb +3 -1
  348. data/app/views/foreman_datacenter/racks/show.html.erb +47 -30
  349. data/app/views/foreman_datacenter/shared/_aa.html.erb +1 -0
  350. data/app/views/foreman_datacenter/shared/_modal.html.erb +28 -0
  351. data/app/views/foreman_datacenter/shared/_rack_device_select.html.erb +4 -4
  352. data/app/views/foreman_datacenter/sites/_form.html.erb +1 -0
  353. data/app/views/foreman_datacenter/sites/edit.html.erb +3 -1
  354. data/app/views/foreman_datacenter/sites/index.html.erb +30 -18
  355. data/app/views/foreman_datacenter/sites/move.html.erb +27 -0
  356. data/app/views/foreman_datacenter/sites/new.html.erb +3 -1
  357. data/app/views/foreman_datacenter/sites/show.html.erb +86 -56
  358. data/config/routes.rb +12 -1
  359. data/lib/foreman_datacenter/engine.rb +13 -1
  360. data/lib/foreman_datacenter/version.rb +1 -1
  361. data/test/controllers/foreman_datacenter/device_types_contoller_test.rb +91 -0
  362. data/test/controllers/foreman_datacenter/manufacturers_contoller_test.rb +97 -0
  363. data/test/controllers/foreman_datacenter/platforms_contoller_test.rb +97 -0
  364. data/test/controllers/foreman_datacenter/power_port_templates_contoller_test.rb +53 -0
  365. data/test/controllers/foreman_datacenter/rack_groups_contoller_test.rb +85 -91
  366. data/test/controllers/foreman_datacenter/racks_contoller_test.rb +65 -72
  367. data/test/controllers/foreman_datacenter/sites_contoller_test.rb +107 -71
  368. data/test/datacenter_helper.rb +4 -0
  369. data/test/factories/device_type.rb +13 -0
  370. data/test/factories/manufacturer.rb +5 -0
  371. data/test/factories/platform.rb +5 -0
  372. data/test/factories/rack.rb +8 -0
  373. data/test/factories/rack_group.rb +107 -0
  374. data/test/factories/site.rb +5 -0
  375. data/test/fixtures/foreman_datacenter/comments.yml +30 -0
  376. data/test/fixtures/foreman_datacenter/console_port_templates.yml +42 -0
  377. data/test/fixtures/foreman_datacenter/console_ports.yml +108 -0
  378. data/test/fixtures/foreman_datacenter/console_server_port_templates.yml +42 -0
  379. data/test/fixtures/foreman_datacenter/console_server_ports.yml +84 -0
  380. data/test/fixtures/foreman_datacenter/device_bay_templates.yml +14 -0
  381. data/test/fixtures/foreman_datacenter/device_bays.yml +32 -0
  382. data/test/fixtures/foreman_datacenter/device_interface_connections.yml +96 -0
  383. data/test/fixtures/foreman_datacenter/device_interfaces.yml +240 -0
  384. data/test/fixtures/foreman_datacenter/device_modules.yml +54 -0
  385. data/test/fixtures/foreman_datacenter/device_roles.yml +22 -0
  386. data/test/fixtures/foreman_datacenter/device_types.yml +54 -0
  387. data/test/fixtures/foreman_datacenter/devices.yml +126 -0
  388. data/test/fixtures/foreman_datacenter/interface_templates.yml +54 -0
  389. data/test/fixtures/foreman_datacenter/management_devices.yml +27 -0
  390. data/test/fixtures/foreman_datacenter/manufacturers.yml +24 -0
  391. data/test/fixtures/foreman_datacenter/platforms.yml +28 -0
  392. data/test/fixtures/foreman_datacenter/power_outlet_templates.yml +42 -0
  393. data/test/fixtures/foreman_datacenter/power_outlets.yml +84 -0
  394. data/test/fixtures/foreman_datacenter/power_port_templates.yml +42 -0
  395. data/test/fixtures/foreman_datacenter/power_ports.yml +108 -0
  396. data/test/fixtures/foreman_datacenter/rack_groups.yml +16 -6
  397. data/test/fixtures/foreman_datacenter/racks.yml +31 -10
  398. data/test/fixtures/foreman_datacenter/sites.yml +23 -12
  399. data/test/integration/foreman_datacenter/rack_group_test.rb +25 -25
  400. data/test/integration/foreman_datacenter/rack_test.rb +25 -25
  401. data/test/integration/foreman_datacenter/site_test.rb +29 -29
  402. data/test/test_plugin_helper.rb +1 -0
  403. data/test/unit/foreman_datacenter_test.rb +1 -1
  404. metadata +264 -2
@@ -1,24 +1,23 @@
1
1
  module ForemanDatacenter
2
- class SitesController < ApplicationController
3
- before_action :set_site, only: [:show, :edit, :update, :destroy]
2
+ class SitesController < ForemanDatacenter::ApplicationController
3
+ include Foreman::Controller::AutoCompleteSearch
4
+ include ForemanDatacenter::Controller::Parameters::Site
4
5
 
5
- def index
6
- @sites = Site.all
7
- end
6
+ before_action :find_resource, only: [:show, :edit, :update, :destroy, :move]
8
7
 
9
- def show
8
+ def index
9
+ @sites = resource_base_search_and_page
10
10
  end
11
11
 
12
12
  def new
13
- @site = Site.new
13
+ @site = ForemanDatacenter::Site.new
14
14
  end
15
15
 
16
16
  def edit
17
17
  end
18
18
 
19
19
  def create
20
- @site = Site.new(site_params)
21
-
20
+ @site = ForemanDatacenter::Site.new(site_params)
22
21
  if @site.save
23
22
  process_success object: @site
24
23
  else
@@ -35,22 +34,40 @@ module ForemanDatacenter
35
34
  end
36
35
 
37
36
  def destroy
37
+ unless params['object_only']
38
+ @site.racks.each { |r| r.devices.each { |d| d.destroy } }
39
+ @site.rack_groups.delete_all(:delete_all)
40
+ @site.racks.delete_all(:delete_all)
41
+ else
42
+ @site.rack_groups.delete_all(:nullify)
43
+ @site.racks.delete_all(:nullify)
44
+ end
45
+
38
46
  if @site.destroy
39
- process_success object: @site
47
+ process_success success_redirect: sites_path
40
48
  else
41
49
  process_error object: @site
42
50
  end
43
51
  end
44
52
 
45
- private
46
-
47
- def set_site
48
- @site = Site.find(params[:id])
53
+ def move
54
+ @sites = resource_base_search_and_page
55
+ @rack_groups = @site.rack_groups
56
+ @racks = @site.racks
57
+ process_error object: @site, error_msg: 'Current site haven\'t any Racks/RackGroups.' if (@racks.empty? && @rack_groups.empty?)
49
58
  end
50
59
 
51
- def site_params
52
- params[:site].
53
- permit(:name, :facility, :asn, :physical_address, :shipping_address, :comments)
60
+ def update_associated_objects
61
+ begin
62
+ @site = ForemanDatacenter::Site.find(request.env['HTTP_REFERER'].split('/')[-2])
63
+ @rack_groups = @site.rack_groups
64
+ @racks = @site.racks
65
+ @racks.update_all(site_id: params[:site_id])
66
+ @rack_groups.update_all(site_id: params[:site_id])
67
+ process_success success_redirect: sites_path, success_msg: 'Associated objects successfully moved.'
68
+ rescue => e
69
+ process_error object: @site, error_msg: "#{e}"
70
+ end
54
71
  end
55
72
  end
56
73
  end
@@ -22,5 +22,71 @@ module ForemanDatacenter
22
22
  end
23
23
  end
24
24
 
25
+ def display_fake_delete_if_authorized(options = {}, html_options = {}, as = 'button')
26
+ text = options.delete(:text) || _("Delete")
27
+ method = options.delete(:method) || :delete
28
+ options = {:auth_action => :destroy}.merge(options)
29
+ html_options = {}.merge(html_options)
30
+ if authorized_for(options)
31
+ link_to(text, options, html_options)
32
+ else
33
+ ""
34
+ end
35
+ end
36
+
37
+ def recursive_tags(text, tags)
38
+ return _("#{text}") if tags.empty?
39
+ ct = tags[0].parameterize.underscore.to_sym
40
+ if tags.length == 1
41
+ content_tag(ct, _("#{text}"), class: 'text-muted')
42
+ else
43
+ content_tag(ct, recursive_tags(text, tags.drop(1)))
44
+ end
45
+ end
46
+
47
+ def muted_text(text, *ct)
48
+ recursive_tags(text, ct)
49
+ end
50
+
51
+ def associated_objects(object)
52
+ case object
53
+ when 'site'
54
+ '(Racks, RackGroups, Devices, Interfaces, Ports, etc)'
55
+ when 'rack_group'
56
+ '(Racks, Devices, Interfaces, Ports, etc)'
57
+ when 'rack'
58
+ '(Devices, Interfaces, Ports, etc)'
59
+ when 'platform'
60
+ '(Devices, Interfaces, Ports, etc)'
61
+ when 'device'
62
+ '(Interfaces, Ports, etc)'
63
+ when 'device_role'
64
+ '(Devices)'
65
+ when 'device_type'
66
+ '(Devices)'
67
+ when 'manufacturer'
68
+ '(DeviceTypes, Templates, Devices, Interfaces, Port)'
69
+ else
70
+ '(...)'
71
+ end
72
+ end
73
+
74
+ def object_path(object)
75
+ object_name = object.model_name.plural.gsub("foreman_datacenter_","")
76
+ "/datacenter/#{object_name}/#{object.id}"
77
+ end
78
+
79
+ def object_name(object)
80
+ object.model_name.element
81
+ end
82
+
83
+ def search_params(objects, parameter, sp)
84
+ str = ""
85
+ objects.each_with_index do |o, i|
86
+ str += ' or ' if i > 0
87
+ str += "#{sp}=#{o.send(parameter)}"
88
+ end
89
+ return str
90
+ end
25
91
  end
26
92
  end
@@ -0,0 +1,8 @@
1
+ module ForemanDatacenter
2
+ module CommentsHelper
3
+ def commentable_path(comment)
4
+ resource = comment.commentable.class.to_s.gsub("ForemanDatacenter::","").pluralize.split(/(?<!\s)(?=[A-Z])/).join('_').downcase
5
+ "/datacenter/#{resource}/#{comment.commentable.id}#comment-#{comment.id}"
6
+ end
7
+ end
8
+ end
@@ -4,7 +4,7 @@ module ForemanDatacenter
4
4
  belongs_to :commentable, polymorphic: true
5
5
  belongs_to :user
6
6
  has_ancestry
7
- # belongs_to :parent, class_name: "ForemanDatacenter::Comment"
8
- # has_many :children, class_name: "ForemanDatacenter::Comment", foreign_key: "parent_id"
7
+
8
+ validates :content, presence: true
9
9
  end
10
10
  end
@@ -1,5 +1,8 @@
1
1
  module ForemanDatacenter
2
2
  class ConsolePort < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device, :class_name => 'ForemanDatacenter::Device'
4
7
  belongs_to :console_server_port, :class_name => 'ForemanDatacenter::ConsoleServerPort'
5
8
 
@@ -8,6 +11,13 @@ module ForemanDatacenter
8
11
  validates :device_id, presence: true
9
12
  validates :name, presence: true, length: { maximum: 30 }
10
13
 
14
+ scoped_search on: :name, complete_value: true, default_order: true, rename: :console_port
15
+ scoped_search on: :connection_status, default_order: true, complete_value: {connected: 0, planned: 1}
16
+ scoped_search in: :device, on: :name, complete_value: true, rename: :device
17
+ scoped_search in: :console_server_port, on: :name, complete_value: true, rename: :port
18
+ scoped_search on: :created_at, complete_value: true, default_order: true
19
+ scoped_search on: :updated_at, complete_value: true, default_order: true
20
+
11
21
  def connect(port, connection_status)
12
22
  update(console_server_port: port, connection_status: connection_status)
13
23
  end
@@ -1,10 +1,15 @@
1
1
  module ForemanDatacenter
2
2
  class ConsolePortTemplate < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device_type, :class_name => 'ForemanDatacenter::DeviceType'
4
7
 
5
8
  validates :device_type_id, presence: true
6
9
  validates :name, presence: true, length: { maximum: 30 }
7
10
 
11
+ scoped_search on: :name, complete_value: true, default_order: true
12
+
8
13
  def attrs_to_copy
9
14
  attributes.slice('name')
10
15
  end
@@ -1,9 +1,15 @@
1
1
  module ForemanDatacenter
2
2
  class ConsoleServerPort < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device, :class_name => 'ForemanDatacenter::Device'
4
7
  has_one :console_port, :class_name => 'ForemanDatacenter::ConsolePort'
5
8
 
6
9
  validates :device_id, presence: true
7
10
  validates :name, presence: true, length: { maximum: 30 }
11
+
12
+ scoped_search on: :name, complete_value: true, default_order: true
13
+
8
14
  end
9
15
  end
@@ -1,10 +1,15 @@
1
1
  module ForemanDatacenter
2
2
  class ConsoleServerPortTemplate < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device_type, :class_name => 'ForemanDatacenter::DeviceType'
4
7
 
5
8
  validates :device_type_id, presence: true
6
9
  validates :name, presence: true, length: { maximum: 30 }
7
10
 
11
+ scoped_search on: :name, complete_value: true, default_order: true
12
+
8
13
  def attrs_to_copy
9
14
  attributes.slice('name')
10
15
  end
@@ -2,34 +2,27 @@ module ForemanDatacenter
2
2
  class Device < ActiveRecord::Base
3
3
  include ScopedSearchExtensions
4
4
 
5
- belongs_to :device_type, :class_name => 'ForemanDatacenter::DeviceType'
6
- belongs_to :device_role, :class_name => 'ForemanDatacenter::DeviceRole'
7
- belongs_to :platform, :class_name => 'ForemanDatacenter::Platform'
8
- belongs_to :rack, :class_name => 'ForemanDatacenter::Rack'
9
- has_many :device_bays, :class_name => 'ForemanDatacenter::DeviceBay'
10
- has_one :parent_device_bay, :class_name => 'ForemanDatacenter::DeviceBay',
11
- :foreign_key => 'installed_device_id'
12
- has_many :power_outlets, :class_name => 'ForemanDatacenter::PowerOutlet'
13
- has_many :power_ports, :class_name => 'ForemanDatacenter::PowerPort'
14
- has_many :console_server_ports, :class_name => 'ForemanDatacenter::ConsoleServerPort'
15
- has_many :console_ports, :class_name => 'ForemanDatacenter::ConsolePort'
16
- has_many :interfaces, :class_name => 'ForemanDatacenter::DeviceInterface',
17
- dependent: :destroy
18
- has_many :management_interfaces, -> { where(mgmt_only: true) },
19
- :class_name => 'ForemanDatacenter::DeviceInterface'
20
- has_many :non_management_interfaces, -> { where(mgmt_only: false) },
21
- :class_name => 'ForemanDatacenter::DeviceInterface'
22
- has_many :modules, :class_name => 'ForemanDatacenter::DeviceModule'
23
- has_one :ipmi_interface, -> { where(name: 'ipmi', mgmt_only: true) },
24
- :class_name => 'ForemanDatacenter::DeviceInterface'
25
- has_one :mgmt_interface, -> { where(name: 'mgmt', mgmt_only: true) },
26
- :class_name => 'ForemanDatacenter::DeviceInterface'
5
+ belongs_to :device_type, class_name: 'ForemanDatacenter::DeviceType'
6
+ belongs_to :device_role, class_name: 'ForemanDatacenter::DeviceRole'
7
+ belongs_to :platform, class_name: 'ForemanDatacenter::Platform'
8
+ belongs_to :rack, class_name: 'ForemanDatacenter::Rack'
9
+ has_many :device_bays, class_name: 'ForemanDatacenter::DeviceBay', dependent: :destroy
10
+ has_one :parent_device_bay, class_name: 'ForemanDatacenter::DeviceBay', foreign_key: 'installed_device_id'#, dependent: :destroy
11
+ has_many :power_outlets, class_name: 'ForemanDatacenter::PowerOutlet', dependent: :destroy
12
+ has_many :power_ports, class_name: 'ForemanDatacenter::PowerPort', dependent: :destroy
13
+ has_many :console_server_ports, class_name: 'ForemanDatacenter::ConsoleServerPort', dependent: :destroy
14
+ has_many :console_ports, class_name: 'ForemanDatacenter::ConsolePort', dependent: :destroy
15
+ has_many :interfaces, class_name: 'ForemanDatacenter::DeviceInterface', dependent: :destroy
16
+ has_many :management_interfaces, -> { where(mgmt_only: true) }, class_name: 'ForemanDatacenter::DeviceInterface', dependent: :destroy
17
+ has_many :non_management_interfaces, -> { where(mgmt_only: false) }, class_name: 'ForemanDatacenter::DeviceInterface', dependent: :destroy
18
+ has_many :modules, class_name: 'ForemanDatacenter::DeviceModule', dependent: :destroy
19
+ has_one :ipmi_interface, -> { where(name: 'ipmi', mgmt_only: true) }, class_name: 'ForemanDatacenter::DeviceInterface', dependent: :destroy
20
+ has_one :mgmt_interface, -> { where(name: 'mgmt', mgmt_only: true) }, class_name: 'ForemanDatacenter::DeviceInterface', dependent: :destroy
27
21
  belongs_to_host
28
- has_one :management_device, :class_name => 'ForemanDatacenter::ManagementDevice'
29
- has_one :site, :through => :rack
22
+ has_one :management_device, class_name: 'ForemanDatacenter::ManagementDevice', dependent: :destroy
23
+ has_one :site, through: :rack
30
24
 
31
- has_many :comments, :class_name => 'ForemanDatacenter::Comment',
32
- dependent: :destroy, as: :commentable
25
+ has_many :comments, class_name: 'ForemanDatacenter::Comment', dependent: :destroy, as: :commentable
33
26
 
34
27
  enum face: [:front, :rear]
35
28
  enum side: [:left, :right, :full]
@@ -57,6 +50,7 @@ module ForemanDatacenter
57
50
  scoped_search in: :rack, on: :name, complete_value: true, rename: :rack
58
51
  scoped_search in: :device_role, on: :name, complete_value: true, rename: :role
59
52
  scoped_search in: :device_type, on: :model, complete_value: true, rename: :type
53
+ scoped_search in: :platform, on: :name, complete_value: true, rename: :platform
60
54
 
61
55
  delegate :site_id, to: :rack, allow_nil: true
62
56
  delegate :manufacturer_id, :is_console_server, :is_pdu, :is_network_device,
@@ -1,11 +1,16 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceBay < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device, :class_name => 'ForemanDatacenter::Device'
4
7
  belongs_to :installed_device, :class_name => 'ForemanDatacenter::Device'
5
8
 
6
9
  validates :name, presence: true, length: {maximum: 50}
7
10
  validates :device_id, presence: true
8
11
 
12
+ scoped_search on: :name, complete_value: true, default_order: true
13
+
9
14
  def available_child_devices
10
15
  Device.joins(:device_type).
11
16
  joins('LEFT JOIN device_bays ON devices.id = device_bays.installed_device_id').
@@ -1,10 +1,15 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceBayTemplate < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device_type, :class_name => 'ForemanDatacenter::DeviceType'
4
7
 
5
8
  validates :device_type_id, presence: true
6
9
  validates :name, presence: true, length: { maximum: 30 }
7
10
 
11
+ scoped_search on: :name, complete_value: true, default_order: true
12
+
8
13
  def attrs_to_copy
9
14
  attributes.slice('name')
10
15
  end
@@ -1,5 +1,8 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceInterface < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  FORM_FACTORS = ['Virtual', '10/100M (100BASE-TX)',
4
7
  '1GE (1000BASE-T)', '1GE (SFP)', '10GE (10GBASE-T)',
5
8
  '10GE (SFP+)', '10GE (XFP)', '40GE (QSFP+)']
@@ -14,6 +17,8 @@ module ForemanDatacenter
14
17
  validates :ip_address, length: {maximum: 128}
15
18
  validates :description, length: {maximum: 100}
16
19
 
20
+ scoped_search on: :name, complete_value: true, default_order: true
21
+
17
22
  def connection
18
23
  @connection ||= DeviceInterfaceConnection.
19
24
  where(['interface_a = ? OR interface_b = ?', id, id]).
@@ -1,5 +1,8 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceInterfaceConnection < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :first_interface, class_name: 'ForemanDatacenter::DeviceInterface',
4
7
  foreign_key: 'interface_a'
5
8
  belongs_to :second_interface, class_name: 'ForemanDatacenter::DeviceInterface',
@@ -16,6 +19,9 @@ module ForemanDatacenter
16
19
  end
17
20
  end
18
21
 
22
+ scoped_search in: :first_interface, on: :name, complete_value: true, rename: :interface_a
23
+ scoped_search in: :second_interface, on: :name, complete_value: true, rename: :interface_b
24
+
19
25
  def first_device
20
26
  first_interface.device
21
27
  end
@@ -1,10 +1,15 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceModule < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  belongs_to :device, :class_name => 'ForemanDatacenter::Device'
4
7
 
5
8
  validates :device_id, presence: true
6
9
  validates :name, presence: true, length: { maximum: 50 }
7
10
  validates :part_id, length: { maximum: 50 }
8
11
  validates :serial, length: { maximum: 50 }
12
+
13
+ scoped_search on: :name, complete_value: true, default_order: true
9
14
  end
10
15
  end
@@ -1,5 +1,8 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceRole < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  COLORS = [
4
7
  'Teal', 'Green', 'Blue', 'Purple', 'Yellow', 'Orange', 'Red',
5
8
  'Light Gray', 'Medium Gray', 'Dark Gray'
@@ -11,6 +14,17 @@ module ForemanDatacenter
11
14
  validates :color, presence: true, length: { maximum: 30 },
12
15
  inclusion: { in: COLORS, message: "Color must be one of #{COLORS.join(', ')}"}
13
16
 
17
+ scoped_search on: :name, complete_value: true, default_order: true
18
+ scoped_search on: :color, complete_value: true, default_order: true
19
+ scoped_search on: :created_at, complete_value: true, default_order: true
20
+ scoped_search on: :updated_at, complete_value: true, default_order: true
21
+
22
+ def devices_count
23
+ @devices_count ||= self.class.where(id: id).
24
+ joins(:devices).
25
+ count
26
+ end
27
+
14
28
  def self.for_host
15
29
  role = find_by_name('Server')
16
30
  if role
@@ -1,15 +1,18 @@
1
1
  module ForemanDatacenter
2
2
  class DeviceType < ActiveRecord::Base
3
+ include ScopedSearchExtensions
4
+ include Authorizable
5
+
3
6
  SUBDEVICE_ROLES = ['None', 'Parent', 'Child'].freeze
4
7
 
5
8
  belongs_to :manufacturer, :class_name => 'ForemanDatacenter::Manufacturer'
6
9
  has_many :devices, :class_name => 'ForemanDatacenter::Device'
7
- has_many :interface_templates, :class_name => 'ForemanDatacenter::InterfaceTemplate'
8
- has_many :console_port_templates, :class_name => 'ForemanDatacenter::ConsolePortTemplate'
9
- has_many :power_port_templates, :class_name => 'ForemanDatacenter::PowerPortTemplate'
10
- has_many :console_server_port_templates, :class_name => 'ForemanDatacenter::ConsoleServerPortTemplate'
11
- has_many :power_outlet_templates, :class_name => 'ForemanDatacenter::PowerOutletTemplate'
12
- has_many :device_bay_templates, :class_name => 'ForemanDatacenter::DeviceBayTemplate'
10
+ has_many :interface_templates, :class_name => 'ForemanDatacenter::InterfaceTemplate', dependent: :destroy
11
+ has_many :console_port_templates, :class_name => 'ForemanDatacenter::ConsolePortTemplate', dependent: :destroy
12
+ has_many :power_port_templates, :class_name => 'ForemanDatacenter::PowerPortTemplate', dependent: :destroy
13
+ has_many :console_server_port_templates, :class_name => 'ForemanDatacenter::ConsoleServerPortTemplate', dependent: :destroy
14
+ has_many :power_outlet_templates, :class_name => 'ForemanDatacenter::PowerOutletTemplate', dependent: :destroy
15
+ has_many :device_bay_templates, :class_name => 'ForemanDatacenter::DeviceBayTemplate', dependent: :destroy
13
16
 
14
17
  validates :manufacturer_id, presence: true
15
18
  validates :model, presence: true, length: { maximum: 50 }
@@ -17,6 +20,18 @@ module ForemanDatacenter
17
20
  validates :subdevice_role, inclusion: { in: SUBDEVICE_ROLES },
18
21
  allow_blank: true
19
22
 
23
+ scoped_search on: :model, complete_value: true, default_order: true
24
+ scoped_search on: :u_height, complete_value: true, default_order: true
25
+ # scoped_search on: :is_full_depth, complete_value: true, default_order: true
26
+ # scoped_search on: :is_console_server, complete_value: true, default_order: true
27
+ # scoped_search on: :is_pdu, complete_value: true, default_order: true
28
+ # scoped_search on: :is_network_device, complete_value: true, default_order: true
29
+ scoped_search on: :subdevice_role, complete_value: true, default_order: true
30
+ scoped_search on: :created_at, complete_value: true, default_order: true
31
+ scoped_search on: :updated_at, complete_value: true, default_order: true
32
+
33
+ scoped_search in: :manufacturer, on: :name, complete_value: true, rename: :manufacturer
34
+
20
35
  # Ensure that child devices have 0U height
21
36
  validate do
22
37
  if child? && u_height != 0
@@ -24,6 +39,12 @@ module ForemanDatacenter
24
39
  end
25
40
  end
26
41
 
42
+ def devices_count
43
+ @devices_count ||= self.class.where(id: id).
44
+ joins(:devices).
45
+ count
46
+ end
47
+
27
48
  def self.for_host(host)
28
49
  fact = host.fact_value_by_name('productname')
29
50
  if fact
@@ -57,5 +78,9 @@ module ForemanDatacenter
57
78
  def management_interfaces
58
79
  interface_templates.select(&:mgmt_only)
59
80
  end
81
+
82
+ def to_label
83
+ model
84
+ end
60
85
  end
61
86
  end