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
data/README.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# ForemanPuppet
|
|
2
|
+
|
|
3
|
+
Adds Puppet External node classification funcionality for [Foreman](theforeman.org).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
See [How_to_Install_a_Plugin](http://projects.theforeman.org/projects/foreman/wiki/How_to_Install_a_Plugin)
|
|
8
|
+
for how to install Foreman plugins
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
*Usage here*
|
|
13
|
+
|
|
14
|
+
## TODO
|
|
15
|
+
|
|
16
|
+
*Todo list here*
|
|
17
|
+
|
|
18
|
+
## Contributing
|
|
19
|
+
|
|
20
|
+
Fork and send a Pull Request. Thanks!
|
|
21
|
+
|
|
22
|
+
## Copyright
|
|
23
|
+
|
|
24
|
+
Copyright (c) *year* *your name*
|
|
25
|
+
|
|
26
|
+
This program is free software: you can redistribute it and/or modify
|
|
27
|
+
it under the terms of the GNU General Public License as published by
|
|
28
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
29
|
+
(at your option) any later version.
|
|
30
|
+
|
|
31
|
+
This program is distributed in the hope that it will be useful,
|
|
32
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
33
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
34
|
+
GNU General Public License for more details.
|
|
35
|
+
|
|
36
|
+
You should have received a copy of the GNU General Public License
|
|
37
|
+
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
38
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
foreman_path = Dir['./foreman', '../foreman', '../../foreman']
|
|
3
|
+
foreman_path.select! { |path| File.exist?(File.join(path, 'Gemfile')) }
|
|
4
|
+
raise 'Foreman have not been found!' unless foreman_path.any?
|
|
5
|
+
foreman_path = File.expand_path(foreman_path.first, __dir__)
|
|
6
|
+
|
|
7
|
+
# for migrations to work from 'app:db:migrate'
|
|
8
|
+
task 'dynflow:migrate' => 'app:dynflow:migrate'
|
|
9
|
+
task 'parameters:reset_priorities' => 'app:parameters:reset_priorities'
|
|
10
|
+
|
|
11
|
+
APP_RAKEFILE = File.expand_path('Rakefile', foreman_path)
|
|
12
|
+
load 'rails/tasks/engine.rake'
|
|
13
|
+
|
|
14
|
+
Bundler::GemHelper.install_tasks
|
|
15
|
+
|
|
16
|
+
require 'rake/testtask'
|
|
17
|
+
require 'rspec/core'
|
|
18
|
+
require 'rspec/core/rake_task'
|
|
19
|
+
|
|
20
|
+
Rake::TestTask.new(test: 'app:db:test:prepare') do |t|
|
|
21
|
+
t.libs << 'test'
|
|
22
|
+
t.libs << File.join(foreman_path, 'lib')
|
|
23
|
+
t.libs << File.join(foreman_path, 'test')
|
|
24
|
+
t.pattern = 'test/**/*_test.rb'
|
|
25
|
+
t.verbose = false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
desc 'Run all specs in spec directory (excluding plugin specs)'
|
|
29
|
+
RSpec::Core::RakeTask.new(spec: 'app:db:test:prepare')
|
|
30
|
+
|
|
31
|
+
task default: :test
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
#hostclasses,
|
|
2
|
+
.classes li,
|
|
3
|
+
.classes li a {
|
|
4
|
+
list-style-type: none;
|
|
5
|
+
margin-right: 0.5em;
|
|
6
|
+
text-decoration: none;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.classes > ul {
|
|
10
|
+
margin-bottom: 0;
|
|
11
|
+
margin-left: -42px;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.puppetclass,
|
|
15
|
+
.puppetclass li,
|
|
16
|
+
.selected_puppetclass,
|
|
17
|
+
.selected_puppetclass li,
|
|
18
|
+
.config_group,
|
|
19
|
+
.config_group li,
|
|
20
|
+
.selected_config_group,
|
|
21
|
+
.selected_config_group li {
|
|
22
|
+
a {
|
|
23
|
+
color: #333;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
a.glyphicon-minus-sign,
|
|
27
|
+
a.glyphicon-plus-sign {
|
|
28
|
+
float: right;
|
|
29
|
+
margin-right: 10px;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
a.config_group_name {
|
|
34
|
+
color: #428bca;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#params #inherited_puppetclasses_parameters {
|
|
38
|
+
.overridden .param_name {
|
|
39
|
+
font-weight: bold;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.btn-override {
|
|
43
|
+
border-top-right-radius: 4px;
|
|
44
|
+
border-bottom-right-radius: 4px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.lookup_values {
|
|
50
|
+
.fields {
|
|
51
|
+
border-top: 1px dotted lightgrey;
|
|
52
|
+
padding-top: 10px;
|
|
53
|
+
|
|
54
|
+
&:nth-child(3) {
|
|
55
|
+
border-top: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.btn-hide {
|
|
59
|
+
display: none;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.lookup-keys-container {
|
|
65
|
+
h6 {
|
|
66
|
+
margin-top: 0;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.help-block {
|
|
70
|
+
margin: 0;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
input[type=checkbox] {
|
|
74
|
+
margin-top: 8px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.nav a.btn-success:focus {
|
|
78
|
+
background-color: #5cb85c;
|
|
79
|
+
border-color: #4cae4c;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.matcher .matcher-group {
|
|
83
|
+
display: block;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.matcher_value {
|
|
87
|
+
width: 60%;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.selected_puppetclass.unavailable a {
|
|
92
|
+
color: $color-pf-black-400;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
#inherited_ids {
|
|
96
|
+
padding-left: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
#inherited-classes .panel-title {
|
|
100
|
+
font-size: 1.6rem;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#puppet_klasses ul {
|
|
104
|
+
padding-left: 40px;
|
|
105
|
+
padding-right: 20px;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.puppetclass_group,
|
|
109
|
+
.config_group_group {
|
|
110
|
+
li {
|
|
111
|
+
a {
|
|
112
|
+
i.glyphicon {
|
|
113
|
+
font-size: 11px;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Api
|
|
3
|
+
module ImportPuppetclassesCommonController
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
before_action :find_required_puppet_proxy, only: [:import_puppetclasses]
|
|
8
|
+
before_action :find_environment_id, only: [:import_puppetclasses]
|
|
9
|
+
before_action :find_optional_environment, only: [:import_puppetclasses]
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
extend Apipie::DSL::Concern
|
|
13
|
+
|
|
14
|
+
api :POST, '/smart_proxies/:id/import_puppetclasses', N_('Import puppet classes from puppet proxy')
|
|
15
|
+
api :POST, '/smart_proxies/:smart_proxy_id/environments/:id/import_puppetclasses', N_('Import puppet classes from puppet proxy for an environment')
|
|
16
|
+
api :POST, '/environments/:environment_id/smart_proxies/:id/import_puppetclasses', N_('Import puppet classes from puppet proxy for an environment')
|
|
17
|
+
param :id, :identifier, required: true
|
|
18
|
+
param :smart_proxy_id, String, required: false
|
|
19
|
+
param :environment_id, String, required: false
|
|
20
|
+
param :dryrun, :bool, required: false
|
|
21
|
+
param :except, String, required: false, desc: N_('Optional comma-delimited string'\
|
|
22
|
+
"containing either 'new', 'updated', or 'obsolete'"\
|
|
23
|
+
'that is used to limit the imported Puppet classes')
|
|
24
|
+
|
|
25
|
+
def import_puppetclasses
|
|
26
|
+
return unless changed_environments
|
|
27
|
+
# @changed is returned from the method above changed_environments
|
|
28
|
+
# Limit actions by setting @changed[kind] to empty hash {} (no action)
|
|
29
|
+
# if :except parameter is passed with comma deliminator import_puppetclasses?except=new,obsolete
|
|
30
|
+
if params[:except].present?
|
|
31
|
+
kinds = params[:except].split(',')
|
|
32
|
+
kinds.each do |kind|
|
|
33
|
+
@changed[kind] = {} if PuppetClassImporter::CHANGE_KINDS.include?(kind)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# DRYRUN - /import_puppetclasses?dryrun - do not run PuppetClassImporter
|
|
38
|
+
rabl_template = @environment ? 'show' : 'index'
|
|
39
|
+
if params.key?('dryrun') && ['false', false].exclude?(params['dryrun'])
|
|
40
|
+
render("foreman_puppet/api/v#{api_version}/import_puppetclasses/#{rabl_template}", layout: 'api/layouts/import_puppetclasses_layout')
|
|
41
|
+
return
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# RUN PuppetClassImporter
|
|
45
|
+
if (errors = PuppetClassImporter.new.obsolete_and_new(@changed)).empty?
|
|
46
|
+
render("foreman_puppet/api/v#{api_version}/import_puppetclasses/#{rabl_template}", layout: 'api/layouts/import_puppetclasses_layout')
|
|
47
|
+
else
|
|
48
|
+
render json: {
|
|
49
|
+
message: _('Failed to update the environments and Puppet classes from the on-disk puppet installation: %s') % errors.join(', '),
|
|
50
|
+
}, status: :internal_server_error
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def changed_environments
|
|
57
|
+
@changed = import_changed_proxy_environments
|
|
58
|
+
return false unless @changed
|
|
59
|
+
|
|
60
|
+
# PuppetClassImporter expects [kind][env] to be in json format
|
|
61
|
+
PuppetClassImporter::CHANGE_KINDS.each do |kind|
|
|
62
|
+
next if (envs = @changed[kind]).empty?
|
|
63
|
+
envs.keys.sort.each do |env|
|
|
64
|
+
@changed[kind][env] = @changed[kind][env].to_json
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# @environments is used in import_puppletclasses/index.json.rabl
|
|
69
|
+
environment_names = (@changed['new'].keys + @changed['obsolete'].keys +
|
|
70
|
+
@changed['updated'].keys + @changed['ignored'].keys).uniq.sort
|
|
71
|
+
|
|
72
|
+
@environments = environment_names.map do |name|
|
|
73
|
+
OpenStruct.new(name: name)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
unless @environments.any?
|
|
77
|
+
render_message(_('No changes to your environments detected'))
|
|
78
|
+
return false
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
@environments.any?
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def import_changed_proxy_environments
|
|
85
|
+
opts = { url: @smart_proxy.url }
|
|
86
|
+
opts[:env] = if @environment.present?
|
|
87
|
+
@environment.name
|
|
88
|
+
else
|
|
89
|
+
@env_id
|
|
90
|
+
end
|
|
91
|
+
@importer = PuppetClassImporter.new(opts)
|
|
92
|
+
changed = @importer.changes
|
|
93
|
+
|
|
94
|
+
# check if environemnt id passed in URL is name of NEW environment in puppetmaster that doesn't exist in db
|
|
95
|
+
if @environment || (changed['new'].key?(@env_id) && (@environment ||= OpenStruct.new(name: @env_id)))
|
|
96
|
+
# only return :keys equal to @environment in @changed hash
|
|
97
|
+
%w[new obsolete updated ignored].each do |kind|
|
|
98
|
+
changed[kind].slice!(@environment.name) unless changed[kind].empty?
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
changed
|
|
102
|
+
rescue StandardError => e
|
|
103
|
+
if /puppet feature/i.match?(e.message)
|
|
104
|
+
msg = _('No proxy found to import classes from, ensure that the smart proxy has the Puppet feature enabled.')
|
|
105
|
+
else
|
|
106
|
+
Foreman::Logging.exception('Error while importing Puppet classes', e)
|
|
107
|
+
msg = e.message
|
|
108
|
+
end
|
|
109
|
+
render_message(msg, status: :internal_server_error)
|
|
110
|
+
nil
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def find_required_puppet_proxy
|
|
114
|
+
id = params.key?('smart_proxy_id') ? params['smart_proxy_id'] : params['id']
|
|
115
|
+
@smart_proxy = SmartProxy.authorized(:view_smart_proxies).find(id)
|
|
116
|
+
unless @smart_proxy && SmartProxy.with_features('Puppet').exists?(id: @smart_proxy.id)
|
|
117
|
+
not_found _('No proxy found to import classes from, ensure that the smart proxy has the Puppet feature enabled.')
|
|
118
|
+
end
|
|
119
|
+
@smart_proxy
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def find_environment_id
|
|
123
|
+
@env_id = if params.key?('environment_id')
|
|
124
|
+
params['environment_id']
|
|
125
|
+
elsif params.key?('smart_proxy_id') && params['id'].present?
|
|
126
|
+
params['id']
|
|
127
|
+
end
|
|
128
|
+
@env_id
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def find_optional_environment
|
|
132
|
+
@environment = Environment.authorized(:view_environments).find(@env_id) if @env_id
|
|
133
|
+
rescue ActiveRecord::RecordNotFound => e
|
|
134
|
+
Foreman::Logging.exception('Resource not found', e, level: :debug)
|
|
135
|
+
nil
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# various methods which gets added to the puppetclasses and environments controllers
|
|
2
|
+
|
|
3
|
+
module ForemanPuppet
|
|
4
|
+
module EnvironmentsImport
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
before_action :importer, only: :import_environments
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def import_environments
|
|
12
|
+
@changed = importer.changes
|
|
13
|
+
|
|
14
|
+
if @importer.ignored_boolean_environment_names?
|
|
15
|
+
warning(_('Ignored environment names resulting in booleans found. Please quote strings like true/false and yes/no in config/ignored_environments.yml'))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if !@changed['new'].empty? || !@changed['obsolete'].empty? || !@changed['updated'].empty?
|
|
19
|
+
render 'common/_puppetclasses_or_envs_changed'
|
|
20
|
+
else
|
|
21
|
+
info_message = _('No changes to your environments detected')
|
|
22
|
+
|
|
23
|
+
list_ignored(info_message, @changed['ignored']) if @changed['ignored'].present?
|
|
24
|
+
|
|
25
|
+
info info_message
|
|
26
|
+
redirect_to controller: controller_path
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def obsolete_and_new
|
|
31
|
+
if (errors = PuppetClassImporter.new.obsolete_and_new(params[:changed])).empty?
|
|
32
|
+
success _('Successfully updated environments and Puppet classes from the on-disk Puppet installation')
|
|
33
|
+
else
|
|
34
|
+
error _('Failed to update environments and Puppet classes from the on-disk Puppet installation: %s') % errors.to_sentence
|
|
35
|
+
end
|
|
36
|
+
redirect_to controller: controller_path
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def importer
|
|
42
|
+
opts = params[:proxy].blank? ? {} : { url: SmartProxy.find(params[:proxy]).try(:url) }
|
|
43
|
+
opts[:env] = params[:env] if params[:env].present?
|
|
44
|
+
@importer = PuppetClassImporter.new(opts)
|
|
45
|
+
rescue ::Foreman::Exception => _e
|
|
46
|
+
error _("No smart proxy was found to import environments from, ensure that at least one smart proxy is registered with the 'puppet' feature")
|
|
47
|
+
redirect_to controller: controller_path
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def list_ignored(info_message, ignored)
|
|
51
|
+
environments = ignored.select { |_, values| values.first == '_ignored_' }
|
|
52
|
+
ignore_info = if environments.any?
|
|
53
|
+
_('Ignored environments: %s') % environments.keys.to_sentence
|
|
54
|
+
else
|
|
55
|
+
_('Ignored classes in the environments: %s') % ignored.keys.to_sentence
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
info_message << "\n" << ignore_info
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module ApiHostgroupsController
|
|
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, '/puppetclasses/:puppetclass_id/hostgroups', N_('List all host groups for a Puppet class'), {})
|
|
12
|
+
|
|
13
|
+
apipie_update_methods([:index]) do
|
|
14
|
+
param :puppetclass_id, String, desc: N_('ID of Puppetclass')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
apipie_update_methods(%i[create update]) do
|
|
18
|
+
param :hostgroup, Hash do
|
|
19
|
+
param :environment_id, String, desc: N_('Deprecated in favor of hostgroup/puppet_attributes/environment_id')
|
|
20
|
+
param :puppetclass_ids, Array, desc: N_('Deprecated in favor of hostgroup/puppet_attributes/puppetclass_ids')
|
|
21
|
+
param :config_group_ids, Array, desc: N_('Deprecated in favor of hostgroup/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 allowed_nested_id
|
|
35
|
+
super | ['puppetclass_id']
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/app/controllers/concerns/foreman_puppet/extensions/api_template_combinations_controller.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module ForemanPuppet
|
|
2
|
+
module Extensions
|
|
3
|
+
module ApiTemplateCombinationsController
|
|
4
|
+
extend ActiveSupport::Concern
|
|
5
|
+
|
|
6
|
+
included do
|
|
7
|
+
if ForemanPuppet.extracted_from_core?
|
|
8
|
+
apipie_update_methods(%i[index create show update]) do
|
|
9
|
+
param :environment_id, String, desc: N_('ID of environment')
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
prepend PrependedMethods
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
module PrependedMethods
|
|
17
|
+
def allowed_nested_id
|
|
18
|
+
super | ['environment_id']
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|