foreman_puppet 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 (247) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +619 -0
  3. data/README.md +38 -0
  4. data/Rakefile +31 -0
  5. data/app/assets/stylesheets/foreman_puppet.scss +117 -0
  6. data/app/controllers/concerns/foreman_puppet/api/import_puppetclasses_common_controller.rb +139 -0
  7. data/app/controllers/concerns/foreman_puppet/environments_import.rb +61 -0
  8. data/app/controllers/concerns/foreman_puppet/extensions/api_hostgroups_controller.rb +40 -0
  9. data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb +23 -0
  10. data/app/controllers/concerns/foreman_puppet/extensions/api_v2_hosts_controller.rb +48 -0
  11. data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +58 -0
  12. data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +228 -0
  13. data/app/controllers/concerns/foreman_puppet/extensions/operatingsystems_controller.rb +11 -0
  14. data/app/controllers/concerns/foreman_puppet/extensions/parameters_host.rb +75 -0
  15. data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +70 -0
  16. data/app/controllers/concerns/foreman_puppet/extensions/parameters_template_combination.rb +21 -0
  17. data/app/controllers/concerns/foreman_puppet/parameters/config_group.rb +17 -0
  18. data/app/controllers/concerns/foreman_puppet/parameters/environment.rb +21 -0
  19. data/app/controllers/concerns/foreman_puppet/parameters/puppetclass.rb +24 -0
  20. data/app/controllers/concerns/foreman_puppet/parameters/puppetclass_lookup_key.rb +24 -0
  21. data/app/controllers/foreman_puppet/api/v2/base_controller.rb +26 -0
  22. data/app/controllers/foreman_puppet/api/v2/config_groups_controller.rb +57 -0
  23. data/app/controllers/foreman_puppet/api/v2/environments_controller.rb +91 -0
  24. data/app/controllers/foreman_puppet/api/v2/host_classes_controller.rb +59 -0
  25. data/app/controllers/foreman_puppet/api/v2/hostgroup_classes_controller.rb +46 -0
  26. data/app/controllers/foreman_puppet/api/v2/lookups_common_controller.rb +114 -0
  27. data/app/controllers/foreman_puppet/api/v2/override_values_controller.rb +99 -0
  28. data/app/controllers/foreman_puppet/api/v2/puppetclasses_controller.rb +99 -0
  29. data/app/controllers/foreman_puppet/api/v2/smart_class_parameters_controller.rb +76 -0
  30. data/app/controllers/foreman_puppet/config_groups_controller.rb +46 -0
  31. data/app/controllers/foreman_puppet/environments_controller.rb +51 -0
  32. data/app/controllers/foreman_puppet/puppet_smart_proxies_controller.rb +39 -0
  33. data/app/controllers/foreman_puppet/puppetclass_lookup_keys_controller.rb +33 -0
  34. data/app/controllers/foreman_puppet/puppetclasses_controller.rb +113 -0
  35. data/app/controllers/foreman_puppet/react_controller.rb +19 -0
  36. data/app/helpers/concerns/foreman_puppet/template_renderer_scope.rb +14 -0
  37. data/app/helpers/foreman_puppet/environments_helper.rb +17 -0
  38. data/app/helpers/foreman_puppet/hosts_and_hostgroups_helper.rb +96 -0
  39. data/app/helpers/foreman_puppet/hosts_helper.rb +32 -0
  40. data/app/helpers/foreman_puppet/puppet_smart_proxies_helper.rb +8 -0
  41. data/app/helpers/foreman_puppet/puppetclass_lookup_keys_helper.rb +135 -0
  42. data/app/helpers/foreman_puppet/puppetclasses_and_environments_helper.rb +55 -0
  43. data/app/helpers/foreman_puppet/puppetclasses_helper.rb +59 -0
  44. data/app/helpers/foreman_puppet/template_combinations_helper.rb +33 -0
  45. data/app/models/concerns/foreman_puppet/extensions/host.rb +88 -0
  46. data/app/models/concerns/foreman_puppet/extensions/hostgroup.rb +40 -0
  47. data/app/models/concerns/foreman_puppet/extensions/nic_managed.rb +11 -0
  48. data/app/models/concerns/foreman_puppet/extensions/operatingsystem.rb +11 -0
  49. data/app/models/concerns/foreman_puppet/extensions/provisioning_template.rb +64 -0
  50. data/app/models/concerns/foreman_puppet/extensions/report.rb +11 -0
  51. data/app/models/concerns/foreman_puppet/extensions/taxonomy.rb +19 -0
  52. data/app/models/concerns/foreman_puppet/extensions/template_combination.rb +23 -0
  53. data/app/models/concerns/foreman_puppet/extensions/user.rb +22 -0
  54. data/app/models/concerns/foreman_puppet/host_common.rb +90 -0
  55. data/app/models/concerns/foreman_puppet/puppet_lookup_value_extensions.rb +13 -0
  56. data/app/models/foreman_puppet/config_group.rb +45 -0
  57. data/app/models/foreman_puppet/config_group_class.rb +19 -0
  58. data/app/models/foreman_puppet/environment.rb +63 -0
  59. data/app/models/foreman_puppet/environment_class.rb +40 -0
  60. data/app/models/foreman_puppet/host_class.rb +23 -0
  61. data/app/models/foreman_puppet/host_config_group.rb +15 -0
  62. data/app/models/foreman_puppet/host_puppet_facet.rb +130 -0
  63. data/app/models/foreman_puppet/hostgroup_class.rb +23 -0
  64. data/app/models/foreman_puppet/hostgroup_puppet_facet.rb +98 -0
  65. data/app/models/foreman_puppet/puppetclass.rb +132 -0
  66. data/app/models/foreman_puppet/puppetclass_lookup_key.rb +58 -0
  67. data/app/services/foreman_puppet/host_info_providers/config_groups_info.rb +10 -0
  68. data/app/services/foreman_puppet/host_info_providers/puppet_info.rb +92 -0
  69. data/app/services/foreman_puppet/input_type/puppet_parameter_input.rb +35 -0
  70. data/app/services/foreman_puppet/proxy_status/puppet.rb +17 -0
  71. data/app/services/foreman_puppet/puppet_class_importer.rb +355 -0
  72. data/app/views/api/v2/template_combinations/base.json.erb +9 -0
  73. data/app/views/foreman_puppet/api/v2/config_groups/base.json.rabl +3 -0
  74. data/app/views/foreman_puppet/api/v2/config_groups/create.json.rabl +3 -0
  75. data/app/views/foreman_puppet/api/v2/config_groups/index.json.rabl +3 -0
  76. data/app/views/foreman_puppet/api/v2/config_groups/main.json.rabl +8 -0
  77. data/app/views/foreman_puppet/api/v2/config_groups/show.json.rabl +3 -0
  78. data/app/views/foreman_puppet/api/v2/config_groups/update.json.rabl +3 -0
  79. data/app/views/foreman_puppet/api/v2/environments/base.json.rabl +3 -0
  80. data/app/views/foreman_puppet/api/v2/environments/create.json.rabl +3 -0
  81. data/app/views/foreman_puppet/api/v2/environments/index.json.rabl +3 -0
  82. data/app/views/foreman_puppet/api/v2/environments/main.json.rabl +5 -0
  83. data/app/views/foreman_puppet/api/v2/environments/show.json.rabl +15 -0
  84. data/app/views/foreman_puppet/api/v2/environments/update.json.rabl +3 -0
  85. data/app/views/foreman_puppet/api/v2/host_puppet_facets/base.json.rabl +1 -0
  86. data/app/views/foreman_puppet/api/v2/host_puppet_facets/host_single.json.rabl +17 -0
  87. data/app/views/foreman_puppet/api/v2/host_puppet_facets/show.json.rabl +11 -0
  88. data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/base.json.rabl +5 -0
  89. data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_single.json.rabl +16 -0
  90. data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/show.json.rabl +11 -0
  91. data/app/views/foreman_puppet/api/v2/import_puppetclasses/index.json.rabl +3 -0
  92. data/app/views/foreman_puppet/api/v2/import_puppetclasses/show.json.rabl +36 -0
  93. data/app/views/foreman_puppet/api/v2/override_values/create.json.rabl +3 -0
  94. data/app/views/foreman_puppet/api/v2/override_values/index.json.rabl +3 -0
  95. data/app/views/foreman_puppet/api/v2/override_values/show.json.rabl +3 -0
  96. data/app/views/foreman_puppet/api/v2/override_values/update.json.rabl +3 -0
  97. data/app/views/foreman_puppet/api/v2/puppetclasses/base.json.rabl +3 -0
  98. data/app/views/foreman_puppet/api/v2/puppetclasses/create.json.rabl +3 -0
  99. data/app/views/foreman_puppet/api/v2/puppetclasses/index.json.rabl +4 -0
  100. data/app/views/foreman_puppet/api/v2/puppetclasses/list.json.rabl +3 -0
  101. data/app/views/foreman_puppet/api/v2/puppetclasses/main.json.rabl +5 -0
  102. data/app/views/foreman_puppet/api/v2/puppetclasses/show.json.rabl +15 -0
  103. data/app/views/foreman_puppet/api/v2/puppetclasses/update.json.rabl +3 -0
  104. data/app/views/foreman_puppet/api/v2/smart_class_parameters/base.json.rabl +4 -0
  105. data/app/views/foreman_puppet/api/v2/smart_class_parameters/create.json.rabl +3 -0
  106. data/app/views/foreman_puppet/api/v2/smart_class_parameters/destroy.json.rabl +3 -0
  107. data/app/views/foreman_puppet/api/v2/smart_class_parameters/index.json.rabl +3 -0
  108. data/app/views/foreman_puppet/api/v2/smart_class_parameters/main.json.rabl +23 -0
  109. data/app/views/foreman_puppet/api/v2/smart_class_parameters/show.json.rabl +19 -0
  110. data/app/views/foreman_puppet/api/v2/smart_class_parameters/update.json.rabl +3 -0
  111. data/app/views/foreman_puppet/config_groups/_config_group.html.erb +34 -0
  112. data/app/views/foreman_puppet/config_groups/_config_groups_selection.html.erb +36 -0
  113. data/app/views/foreman_puppet/config_groups/_form.html.erb +9 -0
  114. data/app/views/foreman_puppet/config_groups/edit.html.erb +3 -0
  115. data/app/views/foreman_puppet/config_groups/index.html.erb +31 -0
  116. data/app/views/foreman_puppet/config_groups/new.html.erb +3 -0
  117. data/app/views/foreman_puppet/config_groups/welcome.html.erb +12 -0
  118. data/app/views/foreman_puppet/environments/_form.html.erb +20 -0
  119. data/app/views/foreman_puppet/environments/edit.html.erb +8 -0
  120. data/app/views/foreman_puppet/environments/index.html.erb +32 -0
  121. data/app/views/foreman_puppet/environments/new.html.erb +7 -0
  122. data/app/views/foreman_puppet/environments/welcome.html.erb +16 -0
  123. data/app/views/foreman_puppet/layouts/application_react.html.erb +15 -0
  124. data/app/views/foreman_puppet/puppet_smart_proxies/_dashboard.html.erb +9 -0
  125. data/app/views/foreman_puppet/puppet_smart_proxies/_environments.html.erb +30 -0
  126. data/app/views/foreman_puppet/puppetclass_lookup_keys/edit.html.erb +3 -0
  127. data/app/views/foreman_puppet/puppetclass_lookup_keys/index.html.erb +22 -0
  128. data/app/views/foreman_puppet/puppetclass_lookup_keys/welcome.html.erb +9 -0
  129. data/app/views/foreman_puppet/puppetclasses/_class_parameters.html.erb +37 -0
  130. data/app/views/foreman_puppet/puppetclasses/_class_selection.html.erb +70 -0
  131. data/app/views/foreman_puppet/puppetclasses/_classes.html.erb +22 -0
  132. data/app/views/foreman_puppet/puppetclasses/_classes_in_groups.html.erb +5 -0
  133. data/app/views/foreman_puppet/puppetclasses/_classes_parameters.html.erb +16 -0
  134. data/app/views/foreman_puppet/puppetclasses/_form.html.erb +62 -0
  135. data/app/views/foreman_puppet/puppetclasses/_selected_classes.html.erb +4 -0
  136. data/app/views/foreman_puppet/puppetclasses/edit.html.erb +4 -0
  137. data/app/views/foreman_puppet/puppetclasses/index.html.erb +47 -0
  138. data/app/views/hosts/_form_puppet_enc_tab.html.erb +24 -0
  139. data/app/views/hosts/foreman_puppet/_form_main_tab_fields.html.erb +1 -0
  140. data/app/views/hosts/select_multiple_environment.html.erb +8 -0
  141. data/app/views/provisioning_templates/_combination.html.erb +5 -0
  142. data/app/views/provisioning_templates/_combinations.html.erb +6 -0
  143. data/app/views/smart_proxies/plugins/_puppet.html.erb +24 -0
  144. data/config/api_routes.rb +81 -0
  145. data/config/routes.rb +89 -0
  146. data/db/migrate/20101121140000_add_environment_to_template_combinations.foreman_puppet.rb +9 -0
  147. data/db/migrate/20200720123005_migrate_puppet_core_types.foreman_puppet.rb +19 -0
  148. data/db/migrate/20200722171017_create_host_puppet_facet.foreman_puppet.rb +10 -0
  149. data/db/migrate/20200803113531_create_hostgroup_puppet_facet.foreman_puppet.rb +10 -0
  150. data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +22 -0
  151. data/db/migrate/20200803113903_migrate_host_type_in_host_config_groups.foreman_puppet.rb +29 -0
  152. data/db/migrate/20201125113903_migrate_puppetclasses_to_facets.foreman_puppet.rb +47 -0
  153. data/db/migrate_foreman/20090722141107_create_environments.rb +17 -0
  154. data/db/migrate_foreman/20120905095532_create_environment_classes.rb +15 -0
  155. data/db/migrate_foreman/20140407161817_create_config_groups.rb +9 -0
  156. data/db/migrate_foreman/20140407162007_create_config_group_classes.rb +10 -0
  157. data/db/migrate_foreman/20140407162059_create_host_config_groups.rb +11 -0
  158. data/db/migrate_foreman/20161205142618_delete_orphaned_smart_class_parameters.rb +10 -0
  159. data/db/migrate_foreman/20170109115157_fix_lookup_key_auditable_type.rb +15 -0
  160. data/db/migrate_foreman/20180816134832_cast_lookup_key_values.rb +35 -0
  161. data/db/migrate_foreman/20181023112532_add_environment_puppetclass_id.rb +7 -0
  162. data/db/migrate_foreman/20181224174419_add_index_to_environment_class_by_lookup_key_and_puppetclass.rb +6 -0
  163. data/db/seeds.d/111_puppet_proxy_feature.rb +8 -0
  164. data/lib/foreman_puppet.rb +10 -0
  165. data/lib/foreman_puppet/engine.rb +82 -0
  166. data/lib/foreman_puppet/register.rb +218 -0
  167. data/lib/foreman_puppet/version.rb +3 -0
  168. data/lib/tasks/foreman_puppet_tasks.rake +31 -0
  169. data/locale/Makefile +60 -0
  170. data/locale/action_names.rb +5 -0
  171. data/locale/en/foreman_puppet.edit.po +911 -0
  172. data/locale/en/foreman_puppet.po +690 -0
  173. data/locale/en/foreman_puppet.po.time_stamp +0 -0
  174. data/locale/foreman_puppet.pot +1076 -0
  175. data/locale/gemspec.rb +2 -0
  176. data/test/controllers/foreman_puppet/api/v2/config_groups_controller_test.rb +28 -0
  177. data/test/controllers/foreman_puppet/api/v2/environments_controller_test.rb +346 -0
  178. data/test/controllers/foreman_puppet/api/v2/host_classes_controller_test.rb +48 -0
  179. data/test/controllers/foreman_puppet/api/v2/hostgroup_classes_controller_test.rb +41 -0
  180. data/test/controllers/foreman_puppet/api/v2/hostgroups_controller_test.rb +79 -0
  181. data/test/controllers/foreman_puppet/api/v2/hosts_controller_test.rb +101 -0
  182. data/test/controllers/foreman_puppet/api/v2/lookups_common_controller_test.rb +29 -0
  183. data/test/controllers/foreman_puppet/api/v2/override_values_controller_test.rb +169 -0
  184. data/test/controllers/foreman_puppet/api/v2/puppetclasses_controller_test.rb +144 -0
  185. data/test/controllers/foreman_puppet/api/v2/smart_class_parameters_controller_test.rb +557 -0
  186. data/test/controllers/foreman_puppet/api/v2/template_combinations_controller_test.rb +81 -0
  187. data/test/controllers/foreman_puppet/config_groups_controller_test.rb +47 -0
  188. data/test/controllers/foreman_puppet/environments_controller_test.rb +230 -0
  189. data/test/controllers/foreman_puppet/hostgroups_controller_test.rb +72 -0
  190. data/test/controllers/foreman_puppet/hosts_controller_test.rb +346 -0
  191. data/test/controllers/foreman_puppet/puppet_smart_proxies_controller_test.rb +29 -0
  192. data/test/controllers/foreman_puppet/puppetclass_lookup_keys_controller_test.rb +59 -0
  193. data/test/controllers/foreman_puppet/puppetclasses_controller_test.rb +235 -0
  194. data/test/controllers/provisioning_templates_controller_test.rb +70 -0
  195. data/test/factories/foreman_puppet_factories.rb +134 -0
  196. data/test/factories/host_puppet_enhancements.rb +61 -0
  197. data/test/factories/proxy_puppet_enhancements.rb +33 -0
  198. data/test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb +65 -0
  199. data/test/helpers/foreman_puppet/puppetclasses_helper_test.rb +33 -0
  200. data/test/integration/foreman_puppet/environment_js_test.rb +27 -0
  201. data/test/integration/foreman_puppet/host_js_test.rb +371 -0
  202. data/test/integration/foreman_puppet/hostgroup_js_test.rb +100 -0
  203. data/test/integration/foreman_puppet/puppetclass_js_test.rb +37 -0
  204. data/test/integration/foreman_puppet/smartclass_parameter_js_test.rb +84 -0
  205. data/test/models/foreman_puppet/config_group_class_test.rb +9 -0
  206. data/test/models/foreman_puppet/config_group_test.rb +8 -0
  207. data/test/models/foreman_puppet/environment_test.rb +92 -0
  208. data/test/models/foreman_puppet/host_config_group_test.rb +39 -0
  209. data/test/models/foreman_puppet/host_puppet_facet_test.rb +116 -0
  210. data/test/models/foreman_puppet/host_test.rb +288 -0
  211. data/test/models/foreman_puppet/hostgroup_puppet_facet_test.rb +200 -0
  212. data/test/models/foreman_puppet/hostgroup_test.rb +14 -0
  213. data/test/models/foreman_puppet/lookup_value_test.rb +69 -0
  214. data/test/models/foreman_puppet/provisioning_template_test.rb +124 -0
  215. data/test/models/foreman_puppet/puppetclass_lookup_key_test.rb +81 -0
  216. data/test/models/foreman_puppet/puppetclass_test.rb +144 -0
  217. data/test/models/foreman_puppet/smart_proxy_test.rb +28 -0
  218. data/test/qraphql/queries/host_puppet_query_test.rb +36 -0
  219. data/test/qraphql/queries/hostgroup_puppet_query_test.rb +36 -0
  220. data/test/services/foreman_puppet/host_info_providers/puppet_info_test.rb +791 -0
  221. data/test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb +14 -0
  222. data/test/test_puppet_helper.rb +30 -0
  223. data/test/unit/foreman_puppet/access_permissions_test.rb +16 -0
  224. data/test/unit/foreman_puppet/puppet_class_importer_test.rb +247 -0
  225. data/test/unit/foreman_puppet/template_rendering_test.rb +20 -0
  226. data/test/unit/foreman_puppet_test.rb +11 -0
  227. data/webpack/__mocks__/foremanReact/common/I18n.js +7 -0
  228. data/webpack/__mocks__/foremanReact/components/Layout/LayoutActions.js +2 -0
  229. data/webpack/__mocks__/foremanReact/readme.md +11 -0
  230. data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +10 -0
  231. data/webpack/__mocks__/foremanReact/redux/API/index.js +10 -0
  232. data/webpack/__mocks__/foremanReact/redux/actions/toasts.js +8 -0
  233. data/webpack/__mocks__/foremanReact/redux/index.js +1 -0
  234. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js +5 -0
  235. data/webpack/fills_index.js +30 -0
  236. data/webpack/index.js +18 -0
  237. data/webpack/src/ForemanPuppet.js +11 -0
  238. data/webpack/src/Router/__snapshots__/routes.test.js.snap +3 -0
  239. data/webpack/src/Router/index.js +14 -0
  240. data/webpack/src/Router/routes.js +3 -0
  241. data/webpack/src/Router/routes.test.js +16 -0
  242. data/webpack/src/foreman_class_edit.js +224 -0
  243. data/webpack/src/foreman_puppet_host_form.js +140 -0
  244. data/webpack/src/foreman_puppet_host_form.test.js +65 -0
  245. data/webpack/src/index.js +1 -0
  246. data/webpack/src/reducers.js +7 -0
  247. metadata +340 -0
@@ -0,0 +1,99 @@
1
+ module ForemanPuppet
2
+ module Api
3
+ module V2
4
+ class OverrideValuesController < LookupsCommonController
5
+ include Foreman::Controller::Parameters::LookupValue
6
+
7
+ resource_description do
8
+ api_version '2'
9
+ api_base_url '/foreman_puppet/api'
10
+ end
11
+
12
+ before_action :find_override_values
13
+ before_action :find_override_value, only: %i[show update destroy]
14
+ # override return_if_smart_mismatch in LookupKeysCommonController to add :create
15
+ before_action :return_if_smart_mismatch, only: %i[create show update destroy]
16
+ before_action :return_if_override_mismatch, only: %i[show update destroy]
17
+
18
+ before_action :cast_value, only: %i[create update]
19
+
20
+ api :GET, '/smart_class_parameters/:smart_class_parameter_id/override_values', N_('List of override values for a specific smart class parameter')
21
+ param :smart_class_parameter_id, :identifier, required: false
22
+ param :show_hidden, :bool, desc: N_('Display hidden values')
23
+ param_group :pagination, ::Api::V2::BaseController
24
+
25
+ def index
26
+ end
27
+
28
+ api :GET, '/smart_class_parameters/:smart_class_parameter_id/override_values/:id', N_('Show an override value for a specific smart class parameter')
29
+ param :smart_class_parameter_id, :identifier, required: false
30
+ param :id, :identifier, required: true
31
+ param :show_hidden, :bool, desc: N_('Display hidden values')
32
+
33
+ def show
34
+ end
35
+
36
+ def_param_group :override_value do
37
+ param :override_value, Hash, required: true, action_aware: true do
38
+ param :match, String, required: true, desc: N_('Override match')
39
+ param :value, :any_type, of: LookupKey::KEY_TYPES, required: false, desc: N_('Override value, required if omit is false')
40
+ param :omit, :bool, required: false, desc: N_('Foreman will not send this parameter in classification output')
41
+ end
42
+ end
43
+
44
+ api :POST, '/smart_class_parameters/:smart_class_parameter_id/override_values', N_('Create an override value for a specific smart class parameter')
45
+ param :smart_class_parameter_id, :identifier, required: false
46
+ param_group :override_value, as: :create
47
+
48
+ def create
49
+ @override_value = @smart_class_parameter.lookup_values.create!(lookup_value_params)
50
+ @smart_class_parameter.update(override: true)
51
+ process_response @override_value
52
+ end
53
+
54
+ api :PUT, '/smart_class_parameters/:smart_class_parameter_id/override_values/:id', N_('Update an override value for a specific smart class parameter')
55
+ param :smart_class_parameter_id, :identifier, required: false
56
+ param_group :override_value
57
+
58
+ def update
59
+ @override_value.update!(lookup_value_params)
60
+ render 'foreman_puppet/api/v2/override_values/show'
61
+ end
62
+
63
+ api :DELETE, '/smart_class_parameters/:smart_class_parameter_id/override_values/:id', N_('Delete an override value for a specific smart class parameter')
64
+ param :smart_class_parameter_id, :identifier, required: false
65
+ param :id, :identifier, required: true
66
+
67
+ def destroy
68
+ @override_value.destroy
69
+ render 'foreman_puppet/api/v2/override_values/show'
70
+ end
71
+
72
+ private
73
+
74
+ def find_override_values
75
+ return unless @smart_class_parameter
76
+
77
+ @override_values = @smart_class_parameter.lookup_values.paginate(paginate_options)
78
+ @total = @override_values.count
79
+ end
80
+
81
+ def find_override_value
82
+ @override_value = LookupValue.find_by(id: params[:id])
83
+ @override_value ||= @smart_class_parameter.lookup_values.friendly.find(params[:id]) if @smart_class_parameter
84
+ end
85
+
86
+ def return_if_override_mismatch
87
+ return unless (@override_values && @override_value && !@override_values.find_by(id: @override_value.id)) || (@override_values && !@override_value) || !@override_values
88
+
89
+ not_found "Override value not found by id '#{params[:id]}'"
90
+ end
91
+
92
+ # overwrite Api::BaseController
93
+ def resource_class
94
+ LookupValue
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,99 @@
1
+ module ForemanPuppet
2
+ module Api
3
+ module V2
4
+ class PuppetclassesController < BaseController
5
+ include ForemanPuppet::Parameters::Puppetclass
6
+
7
+ before_action :find_optional_nested_object
8
+ before_action :find_resource, only: %w[show update destroy]
9
+
10
+ api :GET, '/puppetclasses/', N_('List all Puppet classes')
11
+ api :GET, '/hosts/:host_id/puppetclasses', N_('List all Puppet classes for a host')
12
+ api :GET, '/hostgroups/:hostgroup_id/puppetclasses', N_('List all Puppet classes for a host group')
13
+ api :GET, '/environments/:environment_id/puppetclasses', N_('List all Puppet classes for an environment')
14
+ param :host_id, String, desc: N_('ID of host')
15
+ param :hostgroup_id, String, desc: N_('ID of host group')
16
+ param :environment_id, String, desc: N_('ID of environment')
17
+ param_group :search_and_pagination, ::Api::V2::BaseController
18
+ add_scoped_search_description_for(Puppetclass)
19
+
20
+ def index
21
+ values = Puppetclass.authorized(:view_puppetclasses).search_for(*search_options) unless nested_obj
22
+ values ||= case nested_obj
23
+ when Host::Base, Hostgroup
24
+ # NOTE: no search_for on array generated by all_puppetclasses
25
+ nested_obj.puppet.all_puppetclasses
26
+ else
27
+ nested_obj.puppetclasses.search_for(*search_options)
28
+ end
29
+ @total = Puppetclass.count unless nested_obj
30
+ @total ||= case nested_obj
31
+ when Host::Base, Hostgroup
32
+ values.count
33
+ else
34
+ nested_obj.puppetclasses.count
35
+ end
36
+ @subtotal = values.count
37
+ if params[:style] == 'list'
38
+ @puppetclasses = values
39
+ render :list
40
+ else
41
+ @puppetclasses = Puppetclass.classes2hash_v2(values.paginate(paginate_options))
42
+ end
43
+ end
44
+
45
+ api :GET, '/puppetclasses/:id', N_('Show a Puppet class')
46
+ api :GET, '/hosts/:host_id/puppetclasses/:id', N_('Show a Puppet class for host')
47
+ api :GET, '/hostgroups/:hostgroup_id/puppetclasses/:id', N_('Show a Puppet class for a host group')
48
+ api :GET, '/environments/:environment_id/puppetclasses/:id', N_('Show a Puppet class for an environment')
49
+ param :host_id, String, desc: N_('ID of host')
50
+ param :hostgroup_id, String, desc: N_('ID of host group')
51
+ param :environment_id, String, desc: N_('ID of environment')
52
+ param :id, String, required: true, desc: N_('ID of Puppet class')
53
+
54
+ def show
55
+ end
56
+
57
+ def_param_group :puppetclass do
58
+ param :puppetclass, Hash, required: true, action_aware: true do
59
+ param :name, String, required: true
60
+ end
61
+ end
62
+
63
+ api :POST, '/puppetclasses/', N_('Create a Puppet class')
64
+ param_group :puppetclass, as: :create
65
+
66
+ def create
67
+ @puppetclass = Puppetclass.new(puppetclass_params)
68
+ process_response @puppetclass.save
69
+ end
70
+
71
+ api :PUT, '/puppetclasses/:id/', N_('Update a Puppet class')
72
+ param :id, String, required: true
73
+ param_group :puppetclass
74
+
75
+ def update
76
+ class_params = puppetclass_params.merge(smart_class_parameter_ids: @puppetclass.smart_class_parameters.map(&:id))
77
+ process_response @puppetclass.update(class_params)
78
+ end
79
+
80
+ api :DELETE, '/puppetclasses/:id/', N_('Delete a Puppet class')
81
+ param :id, String, required: true
82
+
83
+ def destroy
84
+ process_response @puppetclass.destroy
85
+ end
86
+
87
+ def resource_class
88
+ ForemanPuppet::Puppetclass
89
+ end
90
+
91
+ private
92
+
93
+ def allowed_nested_id
94
+ %w[environment_id host_id hostgroup_id]
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,76 @@
1
+ module ForemanPuppet
2
+ module Api
3
+ module V2
4
+ class SmartClassParametersController < ForemanPuppet::Api::V2::LookupsCommonController
5
+ include ForemanPuppet::Parameters::PuppetclassLookupKey
6
+
7
+ resource_description do
8
+ api_version '2'
9
+ api_base_url '/foreman_puppet/api'
10
+ end
11
+
12
+ alias_method :resource_scope, :smart_class_parameters_resource_scope
13
+
14
+ api :GET, '/smart_class_parameters', N_('List all smart class parameters')
15
+ api :GET, '/hosts/:host_id/smart_class_parameters', N_('List of smart class parameters for a specific host')
16
+ api :GET, '/hostgroups/:hostgroup_id/smart_class_parameters', N_('List of smart class parameters for a specific host group')
17
+ api :GET, '/puppetclasses/:puppetclass_id/smart_class_parameters', N_('List of smart class parameters for a specific Puppet class')
18
+ api :GET, '/environments/:environment_id/smart_class_parameters', N_('List of smart class parameters for a specific environment')
19
+ api :GET, '/environments/:environment_id/puppetclasses/:puppetclass_id/smart_class_parameters',
20
+ N_('List of smart class parameters for a specific environment/Puppet class combination')
21
+ param :host_id, :identifier, required: false
22
+ param :hostgroup_id, :identifier, required: false
23
+ param :puppetclass_id, :identifier, required: false
24
+ param :environment_id, :identifier, required: false
25
+ param :show_hidden, :bool, desc: N_('Display hidden values')
26
+ param_group :search_and_pagination, ::Api::V2::BaseController
27
+ add_scoped_search_description_for(PuppetclassLookupKey)
28
+
29
+ def index
30
+ end
31
+
32
+ # no create action for API
33
+ # smart class parameters are imported by PuppetClassImporter
34
+
35
+ api :GET, '/smart_class_parameters/:id/', N_('Show a smart class parameter')
36
+ param :id, :identifier, required: true
37
+ param :show_hidden, :bool, desc: N_('Display hidden values')
38
+
39
+ def show
40
+ end
41
+
42
+ api :PUT, '/smart_class_parameters/:id', N_('Update a smart class parameter')
43
+ param :id, :identifier, required: true
44
+ param :smart_class_parameter, Hash, required: true do
45
+ # can't update parameter/key name for :parameter, String, :required => true
46
+ param :override, :bool, desc: N_('Whether the smart class parameter value is managed by Foreman')
47
+ param :description, String, desc: N_('Description of smart class')
48
+ param :default_value, :any_type, of: LookupKey::KEY_TYPES, desc: N_('Value to use when there is no match')
49
+ param :hidden_value, :bool, desc: N_('When enabled the parameter is hidden in the UI')
50
+ param :omit, :bool, desc: N_('Foreman will not send this parameter in classification output.'\
51
+ 'Puppet will use the value defined in the Puppet manifest for this parameter')
52
+ param :path, String, desc: N_('The order in which values are resolved')
53
+ param :validator_type, LookupKey::VALIDATOR_TYPES, desc: N_('Types of validation values')
54
+ param :validator_rule, String, desc: N_('Used to enforce certain values for the parameter values')
55
+ param :override_value_order, String, desc: N_('The order in which values are resolved')
56
+ param :parameter_type, LookupKey::KEY_TYPES, desc: N_('Types of variable values')
57
+ param :required, :bool, desc: N_('If true, will raise an error if there is no default value and no matcher provide a value')
58
+ param :merge_overrides, :bool, desc: N_('Merge all matching values (only array/hash type)')
59
+ param :merge_default, :bool, desc: N_('Include default value when merging all matching values')
60
+ param :avoid_duplicates, :bool, desc: N_('Remove duplicate values (only array type)')
61
+ end
62
+
63
+ def update
64
+ # NOTE: User must manually set :override => true. It is not automatically updated if optional input validator fields are updated.
65
+ @smart_class_parameter.update!(puppetclass_lookup_key_params)
66
+ render 'foreman_puppet/api/v2/smart_class_parameters/show'
67
+ end
68
+
69
+ # overwrite Api::BaseController
70
+ def resource_class
71
+ LookupKey
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,46 @@
1
+ module ForemanPuppet
2
+ class ConfigGroupsController < ::ApplicationController
3
+ include Foreman::Controller::AutoCompleteSearch
4
+ include ForemanPuppet::Parameters::ConfigGroup
5
+
6
+ before_action :find_resource, only: %i[edit update destroy]
7
+
8
+ helper PuppetclassesHelper
9
+
10
+ def index
11
+ @config_groups = resource_base_search_and_page
12
+ end
13
+
14
+ def new
15
+ @config_group = ForemanPuppet::ConfigGroup.new
16
+ end
17
+
18
+ def edit
19
+ end
20
+
21
+ def create
22
+ @config_group = ForemanPuppet::ConfigGroup.new(config_group_params)
23
+ if @config_group.save
24
+ process_success
25
+ else
26
+ process_error
27
+ end
28
+ end
29
+
30
+ def update
31
+ if @config_group.update(config_group_params)
32
+ process_success
33
+ else
34
+ process_error
35
+ end
36
+ end
37
+
38
+ def destroy
39
+ if @config_group.destroy
40
+ process_success
41
+ else
42
+ process_error
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,51 @@
1
+ module ForemanPuppet
2
+ class EnvironmentsController < ApplicationController
3
+ include Foreman::Controller::AutoCompleteSearch
4
+ include ForemanPuppet::EnvironmentsImport
5
+ include ForemanPuppet::Parameters::Environment
6
+
7
+ before_action :find_resource, only: %i[edit update destroy]
8
+
9
+ def index
10
+ @environments = resource_base_search_and_page
11
+ # AuthorizerHelper#authorizer uses controller_name as variable name, but it fails with namespaces
12
+ @authorizer = Authorizer.new(User.current, collection: @environments)
13
+ end
14
+
15
+ def new
16
+ @environment = model_of_controller.new
17
+ end
18
+
19
+ def create
20
+ @environment = model_of_controller.new(environment_params)
21
+ if @environment.save
22
+ process_success
23
+ else
24
+ process_error
25
+ end
26
+ end
27
+
28
+ def edit
29
+ end
30
+
31
+ def update
32
+ if @environment.update(environment_params)
33
+ process_success
34
+ else
35
+ process_error
36
+ end
37
+ end
38
+
39
+ def destroy
40
+ if @environment.destroy
41
+ process_success
42
+ else
43
+ process_error
44
+ end
45
+ end
46
+
47
+ def resource_class
48
+ model_of_controller
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,39 @@
1
+ module ForemanPuppet
2
+ class PuppetSmartProxiesController < ApplicationController
3
+ before_action :find_resource
4
+ before_action :find_status, only: [:environments]
5
+
6
+ def environments
7
+ render partial: 'foreman_puppet/puppet_smart_proxies/environments', locals: { environments: @proxy_status[:puppet].environment_stats }
8
+ rescue Foreman::Exception => e
9
+ process_ajax_error e
10
+ end
11
+
12
+ def dashboard
13
+ @data = Dashboard::Data.new("puppet_proxy_id = \"#{@smart_proxy.id}\"")
14
+ render partial: 'foreman_puppet/puppet_smart_proxies/dashboard'
15
+ rescue Foreman::Exception => e
16
+ process_ajax_error e
17
+ end
18
+
19
+ private
20
+
21
+ def find_status
22
+ @proxy_status = @smart_proxy.statuses
23
+ end
24
+
25
+ def action_permission
26
+ case params[:action]
27
+ when 'environments', 'dashboard'
28
+ :view
29
+ else
30
+ super
31
+ end
32
+ end
33
+
34
+ def resource_name(resource = controller_name)
35
+ resource = 'smart_proxies' if resource == 'puppet_smart_proxies'
36
+ super(resource)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,33 @@
1
+ module ForemanPuppet
2
+ class PuppetclassLookupKeysController < ::LookupKeysController
3
+ include Parameters::PuppetclassLookupKey
4
+
5
+ before_action :setup_search_options, only: :index
6
+
7
+ def index
8
+ @lookup_keys = resource_base_search_and_page.distinct.preload(:lookup_values)
9
+ environment_classes = EnvironmentClass.where(puppetclass_lookup_key_id: @lookup_keys.map(&:id)).select(:puppetclass_id, :puppetclass_lookup_key_id).distinct.preload(:puppetclass)
10
+ puppetclass_ids = environment_classes.map(&:puppetclass_id).uniq
11
+ @puppetclass_authorizer = Authorizer.new(User.current, collection: puppetclass_ids)
12
+ @lookup_keys_to_class = Hash[environment_classes.map { |environment_class| [environment_class.puppetclass_lookup_key_id, environment_class.puppetclass] }]
13
+ end
14
+
15
+ def resource_class
16
+ ForemanPuppet::PuppetclassLookupKey
17
+ end
18
+
19
+ private
20
+
21
+ def resource
22
+ @puppetclass_lookup_key
23
+ end
24
+
25
+ def controller_permission
26
+ 'external_parameters'
27
+ end
28
+
29
+ def resource_params
30
+ puppetclass_lookup_key_params
31
+ end
32
+ end
33
+ end