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.
- checksums.yaml +7 -0
- data/LICENSE +619 -0
- data/README.md +38 -0
- data/Rakefile +31 -0
- data/app/assets/stylesheets/foreman_puppet.scss +117 -0
- data/app/controllers/concerns/foreman_puppet/api/import_puppetclasses_common_controller.rb +139 -0
- data/app/controllers/concerns/foreman_puppet/environments_import.rb +61 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_hostgroups_controller.rb +40 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb +23 -0
- data/app/controllers/concerns/foreman_puppet/extensions/api_v2_hosts_controller.rb +48 -0
- data/app/controllers/concerns/foreman_puppet/extensions/hostgroups_controller_extensions.rb +58 -0
- data/app/controllers/concerns/foreman_puppet/extensions/hosts_controller_extensions.rb +228 -0
- data/app/controllers/concerns/foreman_puppet/extensions/operatingsystems_controller.rb +11 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_host.rb +75 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_hostgroup.rb +70 -0
- data/app/controllers/concerns/foreman_puppet/extensions/parameters_template_combination.rb +21 -0
- data/app/controllers/concerns/foreman_puppet/parameters/config_group.rb +17 -0
- data/app/controllers/concerns/foreman_puppet/parameters/environment.rb +21 -0
- data/app/controllers/concerns/foreman_puppet/parameters/puppetclass.rb +24 -0
- data/app/controllers/concerns/foreman_puppet/parameters/puppetclass_lookup_key.rb +24 -0
- data/app/controllers/foreman_puppet/api/v2/base_controller.rb +26 -0
- data/app/controllers/foreman_puppet/api/v2/config_groups_controller.rb +57 -0
- data/app/controllers/foreman_puppet/api/v2/environments_controller.rb +91 -0
- data/app/controllers/foreman_puppet/api/v2/host_classes_controller.rb +59 -0
- data/app/controllers/foreman_puppet/api/v2/hostgroup_classes_controller.rb +46 -0
- data/app/controllers/foreman_puppet/api/v2/lookups_common_controller.rb +114 -0
- data/app/controllers/foreman_puppet/api/v2/override_values_controller.rb +99 -0
- data/app/controllers/foreman_puppet/api/v2/puppetclasses_controller.rb +99 -0
- data/app/controllers/foreman_puppet/api/v2/smart_class_parameters_controller.rb +76 -0
- data/app/controllers/foreman_puppet/config_groups_controller.rb +46 -0
- data/app/controllers/foreman_puppet/environments_controller.rb +51 -0
- data/app/controllers/foreman_puppet/puppet_smart_proxies_controller.rb +39 -0
- data/app/controllers/foreman_puppet/puppetclass_lookup_keys_controller.rb +33 -0
- data/app/controllers/foreman_puppet/puppetclasses_controller.rb +113 -0
- data/app/controllers/foreman_puppet/react_controller.rb +19 -0
- data/app/helpers/concerns/foreman_puppet/template_renderer_scope.rb +14 -0
- data/app/helpers/foreman_puppet/environments_helper.rb +17 -0
- data/app/helpers/foreman_puppet/hosts_and_hostgroups_helper.rb +96 -0
- data/app/helpers/foreman_puppet/hosts_helper.rb +32 -0
- data/app/helpers/foreman_puppet/puppet_smart_proxies_helper.rb +8 -0
- data/app/helpers/foreman_puppet/puppetclass_lookup_keys_helper.rb +135 -0
- data/app/helpers/foreman_puppet/puppetclasses_and_environments_helper.rb +55 -0
- data/app/helpers/foreman_puppet/puppetclasses_helper.rb +59 -0
- data/app/helpers/foreman_puppet/template_combinations_helper.rb +33 -0
- data/app/models/concerns/foreman_puppet/extensions/host.rb +88 -0
- data/app/models/concerns/foreman_puppet/extensions/hostgroup.rb +40 -0
- data/app/models/concerns/foreman_puppet/extensions/nic_managed.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/operatingsystem.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/provisioning_template.rb +64 -0
- data/app/models/concerns/foreman_puppet/extensions/report.rb +11 -0
- data/app/models/concerns/foreman_puppet/extensions/taxonomy.rb +19 -0
- data/app/models/concerns/foreman_puppet/extensions/template_combination.rb +23 -0
- data/app/models/concerns/foreman_puppet/extensions/user.rb +22 -0
- data/app/models/concerns/foreman_puppet/host_common.rb +90 -0
- data/app/models/concerns/foreman_puppet/puppet_lookup_value_extensions.rb +13 -0
- data/app/models/foreman_puppet/config_group.rb +45 -0
- data/app/models/foreman_puppet/config_group_class.rb +19 -0
- data/app/models/foreman_puppet/environment.rb +63 -0
- data/app/models/foreman_puppet/environment_class.rb +40 -0
- data/app/models/foreman_puppet/host_class.rb +23 -0
- data/app/models/foreman_puppet/host_config_group.rb +15 -0
- data/app/models/foreman_puppet/host_puppet_facet.rb +130 -0
- data/app/models/foreman_puppet/hostgroup_class.rb +23 -0
- data/app/models/foreman_puppet/hostgroup_puppet_facet.rb +98 -0
- data/app/models/foreman_puppet/puppetclass.rb +132 -0
- data/app/models/foreman_puppet/puppetclass_lookup_key.rb +58 -0
- data/app/services/foreman_puppet/host_info_providers/config_groups_info.rb +10 -0
- data/app/services/foreman_puppet/host_info_providers/puppet_info.rb +92 -0
- data/app/services/foreman_puppet/input_type/puppet_parameter_input.rb +35 -0
- data/app/services/foreman_puppet/proxy_status/puppet.rb +17 -0
- data/app/services/foreman_puppet/puppet_class_importer.rb +355 -0
- data/app/views/api/v2/template_combinations/base.json.erb +9 -0
- data/app/views/foreman_puppet/api/v2/config_groups/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/main.json.rabl +8 -0
- data/app/views/foreman_puppet/api/v2/config_groups/show.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/config_groups/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/environments/main.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/environments/show.json.rabl +15 -0
- data/app/views/foreman_puppet/api/v2/environments/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/base.json.rabl +1 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/host_single.json.rabl +17 -0
- data/app/views/foreman_puppet/api/v2/host_puppet_facets/show.json.rabl +11 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/base.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/hostgroup_single.json.rabl +16 -0
- data/app/views/foreman_puppet/api/v2/hostgroup_puppet_facets/show.json.rabl +11 -0
- data/app/views/foreman_puppet/api/v2/import_puppetclasses/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/import_puppetclasses/show.json.rabl +36 -0
- data/app/views/foreman_puppet/api/v2/override_values/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/show.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/override_values/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/base.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/index.json.rabl +4 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/list.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/main.json.rabl +5 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/show.json.rabl +15 -0
- data/app/views/foreman_puppet/api/v2/puppetclasses/update.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/base.json.rabl +4 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/create.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/destroy.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/index.json.rabl +3 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/main.json.rabl +23 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/show.json.rabl +19 -0
- data/app/views/foreman_puppet/api/v2/smart_class_parameters/update.json.rabl +3 -0
- data/app/views/foreman_puppet/config_groups/_config_group.html.erb +34 -0
- data/app/views/foreman_puppet/config_groups/_config_groups_selection.html.erb +36 -0
- data/app/views/foreman_puppet/config_groups/_form.html.erb +9 -0
- data/app/views/foreman_puppet/config_groups/edit.html.erb +3 -0
- data/app/views/foreman_puppet/config_groups/index.html.erb +31 -0
- data/app/views/foreman_puppet/config_groups/new.html.erb +3 -0
- data/app/views/foreman_puppet/config_groups/welcome.html.erb +12 -0
- data/app/views/foreman_puppet/environments/_form.html.erb +20 -0
- data/app/views/foreman_puppet/environments/edit.html.erb +8 -0
- data/app/views/foreman_puppet/environments/index.html.erb +32 -0
- data/app/views/foreman_puppet/environments/new.html.erb +7 -0
- data/app/views/foreman_puppet/environments/welcome.html.erb +16 -0
- data/app/views/foreman_puppet/layouts/application_react.html.erb +15 -0
- data/app/views/foreman_puppet/puppet_smart_proxies/_dashboard.html.erb +9 -0
- data/app/views/foreman_puppet/puppet_smart_proxies/_environments.html.erb +30 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/edit.html.erb +3 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/index.html.erb +22 -0
- data/app/views/foreman_puppet/puppetclass_lookup_keys/welcome.html.erb +9 -0
- data/app/views/foreman_puppet/puppetclasses/_class_parameters.html.erb +37 -0
- data/app/views/foreman_puppet/puppetclasses/_class_selection.html.erb +70 -0
- data/app/views/foreman_puppet/puppetclasses/_classes.html.erb +22 -0
- data/app/views/foreman_puppet/puppetclasses/_classes_in_groups.html.erb +5 -0
- data/app/views/foreman_puppet/puppetclasses/_classes_parameters.html.erb +16 -0
- data/app/views/foreman_puppet/puppetclasses/_form.html.erb +62 -0
- data/app/views/foreman_puppet/puppetclasses/_selected_classes.html.erb +4 -0
- data/app/views/foreman_puppet/puppetclasses/edit.html.erb +4 -0
- data/app/views/foreman_puppet/puppetclasses/index.html.erb +47 -0
- data/app/views/hosts/_form_puppet_enc_tab.html.erb +24 -0
- data/app/views/hosts/foreman_puppet/_form_main_tab_fields.html.erb +1 -0
- data/app/views/hosts/select_multiple_environment.html.erb +8 -0
- data/app/views/provisioning_templates/_combination.html.erb +5 -0
- data/app/views/provisioning_templates/_combinations.html.erb +6 -0
- data/app/views/smart_proxies/plugins/_puppet.html.erb +24 -0
- data/config/api_routes.rb +81 -0
- data/config/routes.rb +89 -0
- data/db/migrate/20101121140000_add_environment_to_template_combinations.foreman_puppet.rb +9 -0
- data/db/migrate/20200720123005_migrate_puppet_core_types.foreman_puppet.rb +19 -0
- data/db/migrate/20200722171017_create_host_puppet_facet.foreman_puppet.rb +10 -0
- data/db/migrate/20200803113531_create_hostgroup_puppet_facet.foreman_puppet.rb +10 -0
- data/db/migrate/20200803113803_migrate_environment_to_puppet_facet.foreman_puppet.rb +22 -0
- data/db/migrate/20200803113903_migrate_host_type_in_host_config_groups.foreman_puppet.rb +29 -0
- data/db/migrate/20201125113903_migrate_puppetclasses_to_facets.foreman_puppet.rb +47 -0
- data/db/migrate_foreman/20090722141107_create_environments.rb +17 -0
- data/db/migrate_foreman/20120905095532_create_environment_classes.rb +15 -0
- data/db/migrate_foreman/20140407161817_create_config_groups.rb +9 -0
- data/db/migrate_foreman/20140407162007_create_config_group_classes.rb +10 -0
- data/db/migrate_foreman/20140407162059_create_host_config_groups.rb +11 -0
- data/db/migrate_foreman/20161205142618_delete_orphaned_smart_class_parameters.rb +10 -0
- data/db/migrate_foreman/20170109115157_fix_lookup_key_auditable_type.rb +15 -0
- data/db/migrate_foreman/20180816134832_cast_lookup_key_values.rb +35 -0
- data/db/migrate_foreman/20181023112532_add_environment_puppetclass_id.rb +7 -0
- data/db/migrate_foreman/20181224174419_add_index_to_environment_class_by_lookup_key_and_puppetclass.rb +6 -0
- data/db/seeds.d/111_puppet_proxy_feature.rb +8 -0
- data/lib/foreman_puppet.rb +10 -0
- data/lib/foreman_puppet/engine.rb +82 -0
- data/lib/foreman_puppet/register.rb +218 -0
- data/lib/foreman_puppet/version.rb +3 -0
- data/lib/tasks/foreman_puppet_tasks.rake +31 -0
- data/locale/Makefile +60 -0
- data/locale/action_names.rb +5 -0
- data/locale/en/foreman_puppet.edit.po +911 -0
- data/locale/en/foreman_puppet.po +690 -0
- data/locale/en/foreman_puppet.po.time_stamp +0 -0
- data/locale/foreman_puppet.pot +1076 -0
- data/locale/gemspec.rb +2 -0
- data/test/controllers/foreman_puppet/api/v2/config_groups_controller_test.rb +28 -0
- data/test/controllers/foreman_puppet/api/v2/environments_controller_test.rb +346 -0
- data/test/controllers/foreman_puppet/api/v2/host_classes_controller_test.rb +48 -0
- data/test/controllers/foreman_puppet/api/v2/hostgroup_classes_controller_test.rb +41 -0
- data/test/controllers/foreman_puppet/api/v2/hostgroups_controller_test.rb +79 -0
- data/test/controllers/foreman_puppet/api/v2/hosts_controller_test.rb +101 -0
- data/test/controllers/foreman_puppet/api/v2/lookups_common_controller_test.rb +29 -0
- data/test/controllers/foreman_puppet/api/v2/override_values_controller_test.rb +169 -0
- data/test/controllers/foreman_puppet/api/v2/puppetclasses_controller_test.rb +144 -0
- data/test/controllers/foreman_puppet/api/v2/smart_class_parameters_controller_test.rb +557 -0
- data/test/controllers/foreman_puppet/api/v2/template_combinations_controller_test.rb +81 -0
- data/test/controllers/foreman_puppet/config_groups_controller_test.rb +47 -0
- data/test/controllers/foreman_puppet/environments_controller_test.rb +230 -0
- data/test/controllers/foreman_puppet/hostgroups_controller_test.rb +72 -0
- data/test/controllers/foreman_puppet/hosts_controller_test.rb +346 -0
- data/test/controllers/foreman_puppet/puppet_smart_proxies_controller_test.rb +29 -0
- data/test/controllers/foreman_puppet/puppetclass_lookup_keys_controller_test.rb +59 -0
- data/test/controllers/foreman_puppet/puppetclasses_controller_test.rb +235 -0
- data/test/controllers/provisioning_templates_controller_test.rb +70 -0
- data/test/factories/foreman_puppet_factories.rb +134 -0
- data/test/factories/host_puppet_enhancements.rb +61 -0
- data/test/factories/proxy_puppet_enhancements.rb +33 -0
- data/test/helpers/foreman_puppet/hosts_and_hostgroups_helper_test.rb +65 -0
- data/test/helpers/foreman_puppet/puppetclasses_helper_test.rb +33 -0
- data/test/integration/foreman_puppet/environment_js_test.rb +27 -0
- data/test/integration/foreman_puppet/host_js_test.rb +371 -0
- data/test/integration/foreman_puppet/hostgroup_js_test.rb +100 -0
- data/test/integration/foreman_puppet/puppetclass_js_test.rb +37 -0
- data/test/integration/foreman_puppet/smartclass_parameter_js_test.rb +84 -0
- data/test/models/foreman_puppet/config_group_class_test.rb +9 -0
- data/test/models/foreman_puppet/config_group_test.rb +8 -0
- data/test/models/foreman_puppet/environment_test.rb +92 -0
- data/test/models/foreman_puppet/host_config_group_test.rb +39 -0
- data/test/models/foreman_puppet/host_puppet_facet_test.rb +116 -0
- data/test/models/foreman_puppet/host_test.rb +288 -0
- data/test/models/foreman_puppet/hostgroup_puppet_facet_test.rb +200 -0
- data/test/models/foreman_puppet/hostgroup_test.rb +14 -0
- data/test/models/foreman_puppet/lookup_value_test.rb +69 -0
- data/test/models/foreman_puppet/provisioning_template_test.rb +124 -0
- data/test/models/foreman_puppet/puppetclass_lookup_key_test.rb +81 -0
- data/test/models/foreman_puppet/puppetclass_test.rb +144 -0
- data/test/models/foreman_puppet/smart_proxy_test.rb +28 -0
- data/test/qraphql/queries/host_puppet_query_test.rb +36 -0
- data/test/qraphql/queries/hostgroup_puppet_query_test.rb +36 -0
- data/test/services/foreman_puppet/host_info_providers/puppet_info_test.rb +791 -0
- data/test/services/foreman_puppet/input_type/puppet_parameter_input_test.rb +14 -0
- data/test/test_puppet_helper.rb +30 -0
- data/test/unit/foreman_puppet/access_permissions_test.rb +16 -0
- data/test/unit/foreman_puppet/puppet_class_importer_test.rb +247 -0
- data/test/unit/foreman_puppet/template_rendering_test.rb +20 -0
- data/test/unit/foreman_puppet_test.rb +11 -0
- data/webpack/__mocks__/foremanReact/common/I18n.js +7 -0
- data/webpack/__mocks__/foremanReact/components/Layout/LayoutActions.js +2 -0
- data/webpack/__mocks__/foremanReact/readme.md +11 -0
- data/webpack/__mocks__/foremanReact/redux/API/APISelectors.js +10 -0
- data/webpack/__mocks__/foremanReact/redux/API/index.js +10 -0
- data/webpack/__mocks__/foremanReact/redux/actions/toasts.js +8 -0
- data/webpack/__mocks__/foremanReact/redux/index.js +1 -0
- data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware.js +5 -0
- data/webpack/fills_index.js +30 -0
- data/webpack/index.js +18 -0
- data/webpack/src/ForemanPuppet.js +11 -0
- data/webpack/src/Router/__snapshots__/routes.test.js.snap +3 -0
- data/webpack/src/Router/index.js +14 -0
- data/webpack/src/Router/routes.js +3 -0
- data/webpack/src/Router/routes.test.js +16 -0
- data/webpack/src/foreman_class_edit.js +224 -0
- data/webpack/src/foreman_puppet_host_form.js +140 -0
- data/webpack/src/foreman_puppet_host_form.test.js +65 -0
- data/webpack/src/index.js +1 -0
- data/webpack/src/reducers.js +7 -0
- metadata +340 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module ApiV2HostsController
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
prepend PatchMethods
|
|
8
|
+
|
|
9
|
+
if ForemanPuppet.extracted_from_core?
|
|
10
|
+
method_desc = Apipie.get_method_description(self, :index)
|
|
11
|
+
method_desc.apis << Apipie::MethodDescription::Api.new(:GET, '/environments/:environment_id/hosts', N_('List hosts per environment'), {})
|
|
12
|
+
|
|
13
|
+
apipie_update_methods([:index]) do
|
|
14
|
+
param :environment_id, String, desc: N_('ID of puppet environment')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
apipie_update_methods(%i[create update]) do
|
|
18
|
+
param :host, Hash do
|
|
19
|
+
param :environment_id, String, desc: N_('Deprecated in favor of host/puppet_attributes/environment_id')
|
|
20
|
+
param :puppetclass_ids, Array, desc: N_('Deprecated in favor of host/puppet_attributes/puppetclass_ids')
|
|
21
|
+
param :config_group_ids, Array, desc: N_('Deprecated in favor of host/puppet_attributes/config_group_ids')
|
|
22
|
+
|
|
23
|
+
param :puppet_attributes, Hash do
|
|
24
|
+
param :environment_id, String, desc: N_('ID of associated puppet Environment')
|
|
25
|
+
param :puppetclass_ids, Array, desc: N_('IDs of associated Puppetclasses')
|
|
26
|
+
param :config_group_ids, Array, desc: N_('IDs of associated ConfigGroups')
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
module PatchMethods
|
|
34
|
+
def resource_name(*attrs)
|
|
35
|
+
return 'foreman_puppet/environment' if attrs.first.is_a?(String) &&
|
|
36
|
+
attrs.first.start_with?('environment')
|
|
37
|
+
super(*attrs)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def allowed_nested_id
|
|
41
|
+
ids = super
|
|
42
|
+
ids << 'environment_id' if ForemanPuppet.extracted_from_core?
|
|
43
|
+
ids.uniq
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module HostgroupsControllerExtensions
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
PUPPET_AJAX_REQUESTS = %w[environment_selected puppetclass_parameters].freeze
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
alias_method :ajax_request_for_puppet_hostgroup_extensions, :ajax_request
|
|
10
|
+
alias_method :taxonomy_scope_for_puppet_hostgroup_extensions, :taxonomy_scope
|
|
11
|
+
|
|
12
|
+
before_action :ajax_request_for_puppet_hostgroup_extensions, only: PUPPET_AJAX_REQUESTS
|
|
13
|
+
before_action :taxonomy_scope_for_puppet_hostgroup_extensions, only: PUPPET_AJAX_REQUESTS
|
|
14
|
+
|
|
15
|
+
helper ForemanPuppet::HostsAndHostgroupsHelper
|
|
16
|
+
helper ForemanPuppet::PuppetclassesHelper
|
|
17
|
+
helper ForemanPuppet::PuppetclassLookupKeysHelper
|
|
18
|
+
|
|
19
|
+
# So we override the core actions, once Puppet is extracted, we can use module methods directly
|
|
20
|
+
prepend Actions
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
module Actions
|
|
24
|
+
def nest
|
|
25
|
+
super
|
|
26
|
+
@hostgroup.puppetclasses = @parent.puppetclasses
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def environment_selected
|
|
30
|
+
env_id = params[:environment_id] || params[:hostgroup][:environment_id] || params.dig(:hostgroup, :puppet_attributes, :environment_id)
|
|
31
|
+
return not_found if env_id.to_i.positive? && !(@environment = ForemanPuppet::Environment.find(env_id))
|
|
32
|
+
|
|
33
|
+
refresh_hostgroup
|
|
34
|
+
puppet = @hostgroup.puppet || @hostgroup.build_puppet
|
|
35
|
+
puppet.environment = @environment if @environment
|
|
36
|
+
|
|
37
|
+
puppet.puppetclasses = ForemanPuppet::Puppetclass.where(id: params[:hostgroup][:puppetclass_ids])
|
|
38
|
+
puppet.config_groups = ForemanPuppet::ConfigGroup.where(id: params[:hostgroup][:config_group_ids])
|
|
39
|
+
render partial: 'hosts/form_puppet_enc_tab', locals: { host_or_hostgroup: @hostgroup, resource_type: :hostgroup }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def puppetclass_parameters
|
|
43
|
+
::Taxonomy.as_taxonomy @organization, @location do
|
|
44
|
+
render partial: 'foreman_puppet/puppetclasses/classes_parameters',
|
|
45
|
+
locals: { obj: refresh_hostgroup }
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# params facets fix:
|
|
50
|
+
def hostgroup_params(top_level_hash = controller_name.singularize)
|
|
51
|
+
filter = self.class.hostgroup_params_filter
|
|
52
|
+
filter.permit(puppet_attributes: {})
|
|
53
|
+
filter.filter_params(params, parameter_filter_context, top_level_hash)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module HostsControllerExtensions
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
PUPPETMASTER_ACTIONS = %i[externalNodes lookup].freeze
|
|
7
|
+
PUPPET_AJAX_REQUESTS = %w[hostgroup_or_environment_selected puppetclass_parameters].freeze
|
|
8
|
+
|
|
9
|
+
MULTIPLE_EDIT_ACTIONS = %w[select_multiple_environment update_multiple_environment
|
|
10
|
+
select_multiple_puppet_proxy update_multiple_puppet_proxy
|
|
11
|
+
select_multiple_puppet_ca_proxy update_multiple_puppet_ca_proxy].freeze
|
|
12
|
+
|
|
13
|
+
included do
|
|
14
|
+
add_smart_proxy_filters PUPPETMASTER_ACTIONS, features: ['Puppet']
|
|
15
|
+
alias_method :ajax_request_for_puppet_host_extensions, :ajax_request
|
|
16
|
+
|
|
17
|
+
before_action :ajax_request_for_puppet_host_extensions, only: PUPPET_AJAX_REQUESTS
|
|
18
|
+
before_action :taxonomy_scope_for_puppet_host_extensions, only: PUPPET_AJAX_REQUESTS
|
|
19
|
+
before_action :find_multiple_for_puppet_host_extensions, only: MULTIPLE_EDIT_ACTIONS
|
|
20
|
+
before_action :validate_multiple_puppet_proxy, only: :update_multiple_puppet_proxy
|
|
21
|
+
before_action :validate_multiple_puppet_ca_proxy, only: :update_multiple_puppet_ca_proxy
|
|
22
|
+
|
|
23
|
+
define_action_permission %w[externalNodes], :view
|
|
24
|
+
define_action_permission MULTIPLE_EDIT_ACTIONS, :edit
|
|
25
|
+
|
|
26
|
+
set_callback :set_class_variables, :after, :set_puppet_class_variables
|
|
27
|
+
|
|
28
|
+
helper ForemanPuppet::HostsHelper
|
|
29
|
+
helper ForemanPuppet::HostsAndHostgroupsHelper
|
|
30
|
+
helper ForemanPuppet::PuppetclassesHelper
|
|
31
|
+
helper ForemanPuppet::PuppetclassLookupKeysHelper
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# TODO: unless ForemanPuppet.extracted_from_core?
|
|
35
|
+
def select_multiple_puppet_proxy_hosts_path(*args)
|
|
36
|
+
foreman_puppet.select_multiple_puppet_proxy_hosts_path(*args)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def hostgroup_or_environment_selected
|
|
40
|
+
refresh_host
|
|
41
|
+
set_class_variables(@host)
|
|
42
|
+
::Taxonomy.as_taxonomy @organization, @location do
|
|
43
|
+
if @environment || @hostgroup
|
|
44
|
+
render partial: 'hosts/form_puppet_enc_tab', locals: { host_or_hostgroup: @host, resource_type: :host }
|
|
45
|
+
else
|
|
46
|
+
logger.info 'environment_id or hostgroup_id is required to render puppetclasses'
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def puppetclass_parameters
|
|
52
|
+
::Taxonomy.as_taxonomy @organization, @location do
|
|
53
|
+
render partial: 'foreman_puppet/puppetclasses/classes_parameters', locals: { obj: refresh_host }
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def select_multiple_environment
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def update_multiple_environment
|
|
61
|
+
# simple validations
|
|
62
|
+
if params[:environment].nil? || (id = params['environment']['id']).nil?
|
|
63
|
+
error _('No environment selected!')
|
|
64
|
+
redirect_to(foreman_puppet.select_multiple_environment_hosts_path)
|
|
65
|
+
return
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
ev = ForemanPuppet::Environment.find_by(id: id)
|
|
69
|
+
|
|
70
|
+
# update the hosts
|
|
71
|
+
@hosts.each do |host|
|
|
72
|
+
puppet = host.puppet || host.build_puppet
|
|
73
|
+
puppet.environment = id == 'inherit' && host.hostgroup.present? ? host.hostgroup.puppet&.environment : ev
|
|
74
|
+
host.save(validate: false)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
success _('Updated hosts: changed environment')
|
|
78
|
+
redirect_back_or_to hosts_path
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# returns a yaml file ready to use for puppet external nodes script
|
|
82
|
+
# expected a fqdn parameter to provide hostname to lookup
|
|
83
|
+
# see example script in extras directory
|
|
84
|
+
# will return HTML error codes upon failure
|
|
85
|
+
# rubocop:disable Naming/MethodName
|
|
86
|
+
def externalNodes
|
|
87
|
+
certname = params[:name].to_s
|
|
88
|
+
@host ||= resource_base.find_by certname: certname
|
|
89
|
+
@host ||= resource_base.friendly.find certname
|
|
90
|
+
unless @host
|
|
91
|
+
not_found
|
|
92
|
+
return
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
begin
|
|
96
|
+
respond_to do |format|
|
|
97
|
+
# don't break lines in yaml to support Ruby < 1.9.3
|
|
98
|
+
# Remove the HashesWithIndifferentAccess using 'deep_stringify_keys',
|
|
99
|
+
# then we turn it into YAML
|
|
100
|
+
host_info_yaml = @host.info.deep_stringify_keys.to_yaml(line_width: -1)
|
|
101
|
+
format.html { render html: ActionController::Base.helpers.tag.pre(ERB::Util.html_escape(host_info_yaml)) }
|
|
102
|
+
format.yml { render plain: host_info_yaml }
|
|
103
|
+
end
|
|
104
|
+
rescue StandardError => e
|
|
105
|
+
Foreman::Logging.exception("Failed to generate external nodes for #{@host}", e)
|
|
106
|
+
render plain: _('Unable to generate output, Check log files'),
|
|
107
|
+
status: :precondition_failed
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
# rubocop:enable Naming/MethodName
|
|
111
|
+
|
|
112
|
+
# TODO: seems to be useless
|
|
113
|
+
def environment_from_param
|
|
114
|
+
# simple validations
|
|
115
|
+
if params[:environment].nil? || (id = params['environment']['id']).nil?
|
|
116
|
+
error _('No environment selected!')
|
|
117
|
+
redirect_to(foreman_puppet.select_multiple_environment_hosts_path)
|
|
118
|
+
return
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
id
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def get_environment_id(env_params)
|
|
125
|
+
env_params['id'] if env_params
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def get_environment_for(host, id)
|
|
129
|
+
if id == 'inherit' && host.hostgroup.present?
|
|
130
|
+
host.hostgroup.environment
|
|
131
|
+
else
|
|
132
|
+
ForemanPuppet::Environment.find_by(id: id)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def validate_multiple_puppet_proxy
|
|
137
|
+
validate_multiple_proxy(foreman_puppet.select_multiple_puppet_proxy_hosts_path)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def validate_multiple_puppet_ca_proxy
|
|
141
|
+
validate_multiple_proxy(select_multiple_puppet_ca_proxy_hosts_path)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def validate_multiple_proxy(redirect_path)
|
|
145
|
+
if params[:proxy].nil? || (proxy_id = params[:proxy][:proxy_id]).nil?
|
|
146
|
+
error _('No proxy selected!')
|
|
147
|
+
redirect_to(redirect_path)
|
|
148
|
+
return false
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
if proxy_id.present? && !::SmartProxy.find_by(id: proxy_id)
|
|
152
|
+
error _('Invalid proxy selected!')
|
|
153
|
+
redirect_to(redirect_path)
|
|
154
|
+
false
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def update_multiple_proxy(proxy_type, host_update_method)
|
|
159
|
+
proxy_id = params[:proxy][:proxy_id]
|
|
160
|
+
proxy = (SmartProxy.find_by(id: proxy_id) if proxy_id)
|
|
161
|
+
|
|
162
|
+
failed_hosts = {}
|
|
163
|
+
|
|
164
|
+
@hosts.each do |host|
|
|
165
|
+
host.send(host_update_method, proxy)
|
|
166
|
+
host.save!
|
|
167
|
+
rescue StandardError => e
|
|
168
|
+
failed_hosts[host.name] = e
|
|
169
|
+
message = format(_('Failed to set %{proxy_type} proxy for %{host}.'), host: host, proxy_type: proxy_type)
|
|
170
|
+
Foreman::Logging.exception(message, e)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
if failed_hosts.empty?
|
|
174
|
+
if proxy
|
|
175
|
+
success format(_('The %{proxy_type} proxy of the selected hosts was set to %{proxy_name}'), proxy_name: proxy.name, proxy_type: proxy_type)
|
|
176
|
+
else
|
|
177
|
+
success format(_('The %{proxy_type} proxy of the selected hosts was cleared.'), proxy_type: proxy_type)
|
|
178
|
+
end
|
|
179
|
+
else
|
|
180
|
+
error format(n_('The %{proxy_type} proxy could not be set for host: %{host_names}.',
|
|
181
|
+
'The %{proxy_type} puppet ca proxy could not be set for hosts: %{host_names}',
|
|
182
|
+
failed_hosts.count), proxy_type: proxy_type, host_names: failed_hosts.map { |h, err| "#{h} (#{err})" }.to_sentence)
|
|
183
|
+
end
|
|
184
|
+
redirect_back_or_to hosts_path
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def handle_proxy_messages(errors, proxy, proxy_type)
|
|
188
|
+
if errors.empty?
|
|
189
|
+
if proxy
|
|
190
|
+
success format(_('The %{proxy_type} proxy of the selected hosts was set to %{proxy_name}.'), proxy_name: proxy.name, proxy_type: proxy_type)
|
|
191
|
+
else
|
|
192
|
+
success format(_('The %{proxy_type} proxy of the selected hosts was cleared.'), proxy_type: proxy_type)
|
|
193
|
+
end
|
|
194
|
+
else
|
|
195
|
+
error format(n_('The %{proxy_type} proxy could not be set for host: %{host_names}.',
|
|
196
|
+
'The %{proxy_type} puppet ca proxy could not be set for hosts: %{host_names}',
|
|
197
|
+
errors.count), proxy_type: proxy_type, host_names: errors.map { |h, err| "#{h} (#{err})" }.to_sentence)
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def select_multiple_puppet_proxy
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def update_multiple_puppet_proxy
|
|
205
|
+
update_multiple_proxy(_('Puppet'), :puppet_proxy=)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def select_multiple_puppet_ca_proxy
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def update_multiple_puppet_ca_proxy
|
|
212
|
+
update_multiple_proxy(_('Puppet CA'), :puppet_ca_proxy=)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def set_puppet_class_variables
|
|
216
|
+
@environment = @host.puppet&.environment
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def taxonomy_scope_for_puppet_host_extensions
|
|
220
|
+
taxonomy_scope
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def find_multiple_for_puppet_host_extensions
|
|
224
|
+
find_multiple
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module OperatingsystemsController
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
def clone
|
|
7
|
+
@operatingsystem = @operatingsystem.deep_clone include: %i[media ptables architectures puppetclasses os_parameters], except: [:title]
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module ParametersHost
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
class << self
|
|
8
|
+
prepend PatchedClassMethods
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
prepend PatchedMethods
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module PatchedClassMethods
|
|
15
|
+
def host_params_filter
|
|
16
|
+
super.tap do |filter|
|
|
17
|
+
filter.permit :environment_id, :environment_name, :environment,
|
|
18
|
+
config_groups: [], config_group_ids: [], config_group_names: [],
|
|
19
|
+
puppetclasses: [], puppetclass_ids: [], puppetclass_names: []
|
|
20
|
+
|
|
21
|
+
# TODO: bring to core - this is what facets should do, but does not
|
|
22
|
+
filter.permit(puppet_attributes: {})
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
module PatchedMethods
|
|
28
|
+
def host_params(*attrs)
|
|
29
|
+
params = super(*attrs)
|
|
30
|
+
|
|
31
|
+
process_deprecated_environment_params!(params)
|
|
32
|
+
process_deprecated_attributes!(params)
|
|
33
|
+
params
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def process_deprecated_environment_params!(params)
|
|
37
|
+
env_id = env_name = env = nil
|
|
38
|
+
if ForemanPuppet.extracted_from_core?
|
|
39
|
+
env_id = params.delete(:environment_id)
|
|
40
|
+
env_name = params.delete(:environment_name)
|
|
41
|
+
env = params.delete(:environment)
|
|
42
|
+
else
|
|
43
|
+
env_id = params[:environment_id]
|
|
44
|
+
env_name = params[:environment_name]
|
|
45
|
+
env = params[:environment]
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
return unless env_id || env_name || env
|
|
49
|
+
::Foreman::Deprecation.api_deprecation_warning('param host[environment_*] has been deprecated in favor of host[puppet_attributes][environment_*]')
|
|
50
|
+
|
|
51
|
+
params[:puppet_attributes] ||= {}
|
|
52
|
+
params[:puppet_attributes][:environment_id] ||= env_id if env_id
|
|
53
|
+
params[:puppet_attributes][:environment_name] ||= env_name if env_name
|
|
54
|
+
params[:puppet_attributes][:environment] ||= env if env
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def process_deprecated_attributes!(params)
|
|
58
|
+
%w[puppetclass config_group].each do |relation|
|
|
59
|
+
ids = params.delete("#{relation}_ids".to_sym)
|
|
60
|
+
names = params.delete("#{relation}_names".to_sym)
|
|
61
|
+
plains = params.delete(relation.pluralize.to_sym)
|
|
62
|
+
|
|
63
|
+
next unless ids || names || plains
|
|
64
|
+
::Foreman::Deprecation.api_deprecation_warning("param host[#{relation}_*] has been deprecated in favor of host[puppet_attributes][#{relation}_*]")
|
|
65
|
+
|
|
66
|
+
params[:puppet_attributes] ||= {}
|
|
67
|
+
params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
|
|
68
|
+
params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
|
|
69
|
+
params[:puppet_attributes][relation.pluralize.to_sym] ||= plains if plains
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module ParametersHostgroup
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
class << self
|
|
8
|
+
prepend PatchedClassMethods
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
prepend PatchedMethods
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
module PatchedClassMethods
|
|
15
|
+
def hostgroup_params_filter
|
|
16
|
+
super.tap do |filter|
|
|
17
|
+
filter.permit :environment_id, :environment_name,
|
|
18
|
+
config_group_ids: [], config_group_names: [],
|
|
19
|
+
puppetclass_ids: [], puppetclass_names: []
|
|
20
|
+
|
|
21
|
+
# TODO: bring to core - this is what facets should do, but does not
|
|
22
|
+
filter.permit(puppet_attributes: {})
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
module PatchedMethods
|
|
28
|
+
def hostgroup_params(*attrs)
|
|
29
|
+
params = super(*attrs)
|
|
30
|
+
|
|
31
|
+
process_deprecated_hostgroup_environment_params!(params)
|
|
32
|
+
process_deprecated_hostgroup_attributes!(params)
|
|
33
|
+
params
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def process_deprecated_hostgroup_environment_params!(params)
|
|
37
|
+
env_id = env_name = nil
|
|
38
|
+
if ForemanPuppet.extracted_from_core?
|
|
39
|
+
env_id = params.delete(:environment_id)
|
|
40
|
+
env_name = params.delete(:environment_name)
|
|
41
|
+
else
|
|
42
|
+
env_id = params[:environment_id]
|
|
43
|
+
env_name = params[:environment_name]
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
return unless env_id || env_name
|
|
47
|
+
::Foreman::Deprecation.api_deprecation_warning('param hostgroup[environment_*] has been deprecated in favor of hostgroup[puppet_attributes][environment_*]')
|
|
48
|
+
|
|
49
|
+
params[:puppet_attributes] ||= {}
|
|
50
|
+
params[:puppet_attributes][:environment_id] ||= env_id if env_id
|
|
51
|
+
params[:puppet_attributes][:environment_name] ||= env_name if env_name
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def process_deprecated_hostgroup_attributes!(params)
|
|
55
|
+
%w[puppetclass config_group].each do |relation|
|
|
56
|
+
ids = params.delete("#{relation}_ids")
|
|
57
|
+
names = params.delete("#{relation}_names")
|
|
58
|
+
|
|
59
|
+
next unless ids || names
|
|
60
|
+
::Foreman::Deprecation.api_deprecation_warning("param hostgroup[#{relation}_*] has been deprecated in favor of hostgroup[puppet_attributes][#{relation}_*]")
|
|
61
|
+
|
|
62
|
+
params[:puppet_attributes] ||= {}
|
|
63
|
+
params[:puppet_attributes]["#{relation}_ids".to_sym] ||= ids if ids
|
|
64
|
+
params[:puppet_attributes]["#{relation}_names".to_sym] ||= names if names
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|