foreman_puppet 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|