foreman_templates 7.0.7 → 9.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/api/v2/template_controller.rb +6 -1
- data/app/controllers/concerns/foreman/controller/parameters/template_params.rb +22 -2
- data/app/controllers/ui_template_syncs_controller.rb +1 -1
- data/app/models/setting/template_sync.rb +12 -2
- data/app/services/foreman_templates/template_exporter.rb +3 -3
- data/app/services/foreman_templates/template_importer.rb +21 -5
- data/app/views/template_syncs/index.html.erb +14 -17
- data/app/views/ui_template_syncs/template_attrs.json.rabl +1 -1
- data/db/migrate/20180627134929_change_lock_setting.rb +5 -0
- data/lib/foreman_templates/engine.rb +11 -5
- data/lib/foreman_templates/version.rb +1 -1
- data/lib/tasks/foreman_templates_tasks.rake +10 -9
- data/package.json +15 -21
- data/webpack/ForemanTemplates.js +17 -13
- data/webpack/__mocks__/foremanReact/Root/Context/ForemanContext.js +2 -0
- data/webpack/__mocks__/foremanReact/components/common/forms/ForemanForm.js +2 -0
- data/webpack/components/NewTemplateSync/__fixtures__/templateSyncSettings.fixtures.js +4 -4
- data/webpack/components/NewTemplateSync/__tests__/__snapshots__/NewTemplateSync.test.js.snap +2 -2
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncForm.js +102 -132
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncFormHelpers.js +43 -0
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncFormSelectors.js +10 -13
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/__tests__/NewTemplateSyncFormSelectors.test.js +1 -19
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/__tests__/__snapshots__/NewTemplateSyncFormSelectors.test.js.snap +7 -36
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/index.js +3 -20
- data/webpack/components/NewTemplateSync/components/SyncSettingField.js +5 -11
- data/webpack/components/NewTemplateSync/components/SyncSettingFields.js +8 -25
- data/webpack/components/NewTemplateSync/components/TextButtonField/index.js +27 -20
- data/webpack/components/NewTemplateSync/components/__tests__/SyncSettingField.test.js +2 -1
- data/webpack/components/NewTemplateSync/components/__tests__/SyncSettingFields.test.js +1 -0
- data/webpack/components/NewTemplateSync/components/__tests__/TextButtonField.test.js +4 -4
- data/webpack/components/NewTemplateSync/components/__tests__/__snapshots__/SyncSettingField.test.js.snap +18 -27
- data/webpack/components/NewTemplateSync/components/__tests__/__snapshots__/SyncSettingFields.test.js.snap +5 -3
- data/webpack/components/NewTemplateSync/components/__tests__/__snapshots__/TextButtonField.test.js.snap +8 -91
- data/webpack/components/TemplateSyncResult/__fixtures__/templateSyncResult.fixtures.js +2 -2
- data/webpack/components/TemplateSyncResult/__tests__/__snapshots__/TemplateSyncResult.test.js.snap +3 -1
- data/webpack/components/TemplateSyncResult/__tests__/__snapshots__/TemplateSyncResultReducer.test.js.snap +3 -1
- data/webpack/components/TemplateSyncResult/components/SyncResultList.js +2 -2
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/__snapshots__/helpers.test.js.snap +37 -0
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.js +21 -11
- data/webpack/components/TemplateSyncResult/components/SyncedTemplate/helpers.test.js +21 -0
- data/webpack/components/TemplateSyncResult/components/__tests__/__snapshots__/SyncResultList.test.js.snap +8 -6
- data/webpack/components/TemplateSyncResult/components/__tests__/__snapshots__/SyncedTemplate.test.js.snap +39 -15
- data/webpack/testSetup.js +2 -1
- metadata +9 -8
- data/webpack/__mocks__/foremanReact/components/common/forms/Form.js +0 -2
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/NewTemplateSyncFormConstants.js +0 -1
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/__tests__/NewTemplateSyncForm.test.js +0 -42
- data/webpack/components/NewTemplateSync/components/NewTemplateSyncForm/__tests__/__snapshots__/NewTemplateSyncForm.test.js.snap +0 -186
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b520577905d85f390af67f22635c98defb339c3177cfc9b7ecfb8039b3999c2
|
4
|
+
data.tar.gz: ae67963f134f9b53fe2f4520c028cd8426474e3aa10dc01733a292bbf1bb8284
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 763f1cd44a8a5a91bad924c0c6eb50950b7cd552b762bc767c188eeae9f78d66ecb9f4f15d81012092683a2fff263c19bf2230e622167ec235557fac64244ea7
|
7
|
+
data.tar.gz: e48d8b9ac3b46195afec1d2913a4ad4a6558dc2a7ea2d325e8f6566b7697ca8780e450ced74b7604d709940660dbdd54a438c6590b4c08fd66b7fa3bdd189f88
|
@@ -3,6 +3,10 @@ module Api
|
|
3
3
|
class TemplateController < ::Api::V2::BaseController
|
4
4
|
include ::Foreman::Controller::Parameters::TemplateParams
|
5
5
|
|
6
|
+
resource_description do
|
7
|
+
resource_id 'templates'
|
8
|
+
end
|
9
|
+
|
6
10
|
def_param_group :foreman_template_sync_params do
|
7
11
|
param :branch, String, :required => false, :desc => N_("Branch in Git repo.")
|
8
12
|
param :repo, String, :required => false, :desc => N_("Override the default repo from settings.")
|
@@ -15,7 +19,7 @@ module Api
|
|
15
19
|
param :prefix, String, :required => false, :desc => N_("The string all imported templates should begin with.")
|
16
20
|
param :associate, Setting::TemplateSync.associate_types.keys, :required => false, :desc => N_("Associate to OS's, Locations & Organizations. Options are: always, new or never.")
|
17
21
|
param :force, :bool, :required => false, :desc => N_("Update templates that are locked")
|
18
|
-
param :lock,
|
22
|
+
param :lock, Setting::TemplateSync.lock_types.keys + ["true", "false", "0", "1"], :required => false, :desc => N_("Lock imported templates")
|
19
23
|
param :verbose, :bool, :required => false, :desc => N_("Show template diff in response")
|
20
24
|
param_group :foreman_template_sync_params
|
21
25
|
param_group :taxonomies, ::Api::V2::BaseController
|
@@ -29,6 +33,7 @@ module Api
|
|
29
33
|
|
30
34
|
api :POST, "/templates/export", N_("Initiate Export")
|
31
35
|
param :metadata_export_mode, Setting::TemplateSync.metadata_export_mode_types.keys, :required => false, :desc => N_("Specify how to handle metadata")
|
36
|
+
param :commit_msg, String, :desc => N_("Custom commit message for templates export")
|
32
37
|
param_group :foreman_template_sync_params
|
33
38
|
param_group :taxonomies, ::Api::V2::BaseController
|
34
39
|
def export
|
@@ -15,7 +15,7 @@ module Foreman
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def extra_export_params
|
18
|
-
|
18
|
+
%i(metadata_export_mode commit_msg)
|
19
19
|
end
|
20
20
|
|
21
21
|
def template_params_filter(extra_params = [])
|
@@ -34,7 +34,27 @@ module Foreman
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def template_import_params
|
37
|
-
add_taxonomy_params(base_import_params(:none))
|
37
|
+
transform_lock_param add_taxonomy_params(base_import_params(:none))
|
38
|
+
end
|
39
|
+
|
40
|
+
def transform_lock_param(params)
|
41
|
+
lock = params[:lock]
|
42
|
+
return params if lock.nil?
|
43
|
+
|
44
|
+
if lock == "true" || lock.is_a?(TrueClass) || lock.to_s == "1"
|
45
|
+
log_deprecated_param(lock)
|
46
|
+
params[:lock] = "lock"
|
47
|
+
end
|
48
|
+
|
49
|
+
if lock == "false" || lock.is_a?(FalseClass) || lock.to_s == "0"
|
50
|
+
log_deprecated_param(lock)
|
51
|
+
params[:lock] = "unlock"
|
52
|
+
end
|
53
|
+
params
|
54
|
+
end
|
55
|
+
|
56
|
+
def log_deprecated_param(value)
|
57
|
+
Logging.logger('app').warn "Using '#{value}' as a value for lock when syncing templates is deprecated and will be removed in the future."
|
38
58
|
end
|
39
59
|
|
40
60
|
def template_export_params
|
@@ -43,6 +43,6 @@ class UiTemplateSyncsController < ApplicationController
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def render_errors(messages, severity = 'danger')
|
46
|
-
render :json => { :error => { :errors => { :base => messages }, :severity => severity } }, :status => :unprocessable_entity
|
46
|
+
render :json => { :error => { :errors => { :base => messages }, full_messages: messages, :severity => severity } }, :status => :unprocessable_entity
|
47
47
|
end
|
48
48
|
end
|
@@ -11,7 +11,7 @@ class Setting
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.export_stripped_names
|
14
|
-
%w(metadata_export_mode)
|
14
|
+
%w(metadata_export_mode commit_msg)
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.import_setting_names(except = [])
|
@@ -38,6 +38,15 @@ class Setting
|
|
38
38
|
}
|
39
39
|
end
|
40
40
|
|
41
|
+
def self.lock_types
|
42
|
+
{
|
43
|
+
'lock' => _('Lock'),
|
44
|
+
'keep_lock_new' => _('Keep, lock new'),
|
45
|
+
'keep' => _('Keep, do not lock new'),
|
46
|
+
'unlock' => _('Unlock')
|
47
|
+
}
|
48
|
+
end
|
49
|
+
|
41
50
|
def self.metadata_export_mode_types
|
42
51
|
{
|
43
52
|
'refresh' => _('Refresh'),
|
@@ -75,7 +84,8 @@ class Setting
|
|
75
84
|
self.set('template_sync_branch', N_('Default branch in Git repo'), '', N_('Branch')),
|
76
85
|
self.set('template_sync_metadata_export_mode', N_('Default metadata export mode, refresh re-renders metadata, keep will keep existing metadata, remove exports template without metadata'), 'refresh', N_('Metadata export mode'), nil, { :collection => Proc.new { self.metadata_export_mode_types } }),
|
77
86
|
self.set('template_sync_force', N_('Should importing overwrite locked templates?'), false, N_('Force import')),
|
78
|
-
self.set('template_sync_lock', N_('
|
87
|
+
self.set('template_sync_lock', N_('How to handle lock for imported templates?'), 'keep', N_('Lock templates'), nil, { :collection => Proc.new { self.lock_types } }),
|
88
|
+
self.set('template_sync_commit_msg', N_('Custom commit message for templates export'), 'Templates export made by a Foreman user', N_('Commit message'))
|
79
89
|
].compact.each { |s| self.create! s.update(:category => "Setting::TemplateSync") }
|
80
90
|
end
|
81
91
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module ForemanTemplates
|
2
2
|
class TemplateExporter < Action
|
3
3
|
def self.setting_overrides
|
4
|
-
super + %i(metadata_export_mode)
|
4
|
+
super + %i(metadata_export_mode commit_msg)
|
5
5
|
end
|
6
6
|
|
7
7
|
def initialize(args = {})
|
@@ -42,7 +42,7 @@ module ForemanTemplates
|
|
42
42
|
new_repo = true
|
43
43
|
end
|
44
44
|
if new_repo || status.added.any? || status.changed.any? || status.deleted.any? || status.untracked.any?
|
45
|
-
git_repo.commit
|
45
|
+
git_repo.commit commit_msg
|
46
46
|
git_repo.push 'origin', branch
|
47
47
|
else
|
48
48
|
@warning = 'No change detected, skipping the commit and push'
|
@@ -94,7 +94,7 @@ module ForemanTemplates
|
|
94
94
|
def templates_to_dump
|
95
95
|
find_templates.each do |template|
|
96
96
|
if filter.present?
|
97
|
-
exportable =
|
97
|
+
exportable = /#{filter}/i.match?(template.name) ? !negate : negate
|
98
98
|
result = ExportResult.new(template, exportable)
|
99
99
|
next @result_lines << result.matching_filter unless exportable
|
100
100
|
|
@@ -10,7 +10,6 @@ module ForemanTemplates
|
|
10
10
|
super args
|
11
11
|
@verbose = parse_bool(@verbose)
|
12
12
|
@force = parse_bool(@force)
|
13
|
-
@lock = parse_bool(@lock)
|
14
13
|
@result_lines = []
|
15
14
|
end
|
16
15
|
|
@@ -71,7 +70,7 @@ module ForemanTemplates
|
|
71
70
|
@result_lines << parse_result.check_for_errors
|
72
71
|
rescue NameError => e
|
73
72
|
@result_lines << parse_result.name_error(e, metadata['model'])
|
74
|
-
rescue => e
|
73
|
+
rescue StandardError => e
|
75
74
|
@result_lines << parse_result.add_exception(e)
|
76
75
|
end
|
77
76
|
end
|
@@ -79,11 +78,28 @@ module ForemanTemplates
|
|
79
78
|
end
|
80
79
|
|
81
80
|
def import_options
|
82
|
-
|
81
|
+
lock_predicate = lambda do |template|
|
82
|
+
case @lock
|
83
|
+
when 'lock'
|
84
|
+
return true
|
85
|
+
when 'unlock'
|
86
|
+
return false
|
87
|
+
when 'keep'
|
88
|
+
return template.new_record? ? false : template.locked
|
89
|
+
when 'keep_lock_new'
|
90
|
+
return template.new_record? ? true : template.locked
|
91
|
+
else
|
92
|
+
raise ::Foreman::Exception.new("Unknown lock option type, expected one of #{::Setting::TemplateSync.lock_types.keys}, got #{@lock}")
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
{
|
97
|
+
:force => @force,
|
83
98
|
:associate => @associate,
|
84
|
-
:lock =>
|
99
|
+
:lock => lock_predicate,
|
85
100
|
:organization_params => @taxonomies[:organizations],
|
86
|
-
:location_params => @taxonomies[:locations]
|
101
|
+
:location_params => @taxonomies[:locations]
|
102
|
+
}
|
87
103
|
end
|
88
104
|
|
89
105
|
def template_model(metadata, parse_result)
|
@@ -5,20 +5,17 @@
|
|
5
5
|
<%= webpacked_plugins_css_for :foreman_templates %>
|
6
6
|
<% end %>
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
:export => authorized_for(:controller => :ui_template_syncs, :action => :export)
|
23
|
-
}
|
24
|
-
}.to_json )%>
|
8
|
+
<%= react_component('ForemanTemplates',
|
9
|
+
{ :apiUrls => {
|
10
|
+
:exportUrl => export_ui_template_syncs_path,
|
11
|
+
:syncSettingsUrl => sync_settings_ui_template_syncs_path,
|
12
|
+
:importUrl => import_ui_template_syncs_path
|
13
|
+
},
|
14
|
+
:validationData => { :repo => ForemanTemplates::Action.repo_start_with },
|
15
|
+
:editPaths => edit_paths,
|
16
|
+
:fileRepoStartWith => ForemanTemplates::Action.file_repo_start_with,
|
17
|
+
:userPermissions => {
|
18
|
+
:import => authorized_for(:controller => :ui_template_syncs, :action => :import),
|
19
|
+
:export => authorized_for(:controller => :ui_template_syncs, :action => :export)
|
20
|
+
}
|
21
|
+
})%>
|
@@ -11,7 +11,7 @@ node(:class_name) do |template|
|
|
11
11
|
end
|
12
12
|
|
13
13
|
node(:humanized_class_name) do |template|
|
14
|
-
template.class.name.underscore.split('_').map
|
14
|
+
template.class.name.underscore.split('_').map(&:capitalize).join(' ')
|
15
15
|
end
|
16
16
|
|
17
17
|
node(:can_edit) do |template|
|
@@ -20,6 +20,12 @@ module ForemanTemplates
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
initializer "foreman_templates.load_app_instance_data" do |app|
|
24
|
+
ForemanTemplates::Engine.paths['db/migrate'].existent.each do |path|
|
25
|
+
app.config.paths['db/migrate'] << path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
23
29
|
initializer 'foreman_templates.register_plugin', :before => :finisher_hook do
|
24
30
|
Foreman::Plugin.register :foreman_templates do
|
25
31
|
requires_foreman '>= 1.24'
|
@@ -43,11 +49,11 @@ module ForemanTemplates
|
|
43
49
|
add_all_permissions_to_default_roles
|
44
50
|
|
45
51
|
menu :top_menu, :template_sync,
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
52
|
+
:url_hash => { :controller => :template_syncs, :action => :index },
|
53
|
+
:caption => N_('Sync Templates'),
|
54
|
+
:parent => :hosts_menu,
|
55
|
+
:before => :ptables,
|
56
|
+
:turbolinks => false
|
51
57
|
end
|
52
58
|
end
|
53
59
|
|
@@ -20,14 +20,14 @@ namespace :templates do
|
|
20
20
|
verbose = ENV['verbose']
|
21
21
|
|
22
22
|
results = ForemanTemplates::TemplateImporter.new({
|
23
|
-
verbose:
|
24
|
-
repo:
|
25
|
-
branch:
|
26
|
-
prefix:
|
27
|
-
dirname:
|
28
|
-
filter:
|
23
|
+
verbose: verbose,
|
24
|
+
repo: ENV['repo'],
|
25
|
+
branch: ENV['branch'],
|
26
|
+
prefix: ENV['prefix'],
|
27
|
+
dirname: ENV['dirname'],
|
28
|
+
filter: ENV['filter'],
|
29
29
|
associate: ENV['associate'],
|
30
|
-
lock:
|
30
|
+
lock: ENV['lock'],
|
31
31
|
}).import!
|
32
32
|
pp(results[:results].map { |result| result.to_h(verbose) })
|
33
33
|
end
|
@@ -58,8 +58,8 @@ namespace :templates do
|
|
58
58
|
# * negate => negate query [false]
|
59
59
|
# * prefix => The string all templates to purge should ( or not ) begin with [Community ]
|
60
60
|
# * verbose => Print extra information during the run [false]
|
61
|
-
negate:
|
62
|
-
prefix:
|
61
|
+
negate: ENV['negate'],
|
62
|
+
prefix: ENV['prefix'],
|
63
63
|
verbose: ENV['verbose'],
|
64
64
|
}).purge!
|
65
65
|
end
|
@@ -89,6 +89,7 @@ namespace :foreman_templates do
|
|
89
89
|
begin
|
90
90
|
require 'rubocop/rake_task'
|
91
91
|
RuboCop::RakeTask.new(:rubocop_foreman_templates) do |task|
|
92
|
+
task.options = ['--config', ForemanTemplates::Engine.root.join('.rubocop.yml').to_s]
|
92
93
|
task.patterns = ["#{ForemanTemplates::Engine.root}/app/**/*.rb",
|
93
94
|
"#{ForemanTemplates::Engine.root}/lib/**/*.rb",
|
94
95
|
"#{ForemanTemplates::Engine.root}/test/**/*.rb"]
|
data/package.json
CHANGED
@@ -20,33 +20,24 @@
|
|
20
20
|
"url": "https://projects.theforeman.org"
|
21
21
|
},
|
22
22
|
"homepage": "https://github.com/theforeman/foreman_templates",
|
23
|
-
"
|
24
|
-
"@theforeman/vendor": "
|
23
|
+
"peerDependencies": {
|
24
|
+
"@theforeman/vendor": ">= 3.3.2"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|
27
|
-
"@
|
28
|
-
"
|
29
|
-
"
|
30
|
-
"
|
31
|
-
"babel-
|
32
|
-
"babel-
|
33
|
-
"babel-plugin-transform-object-assign": "^6.22.0",
|
34
|
-
"babel-plugin-transform-object-rest-spread": "^6.26.0",
|
35
|
-
"babel-preset-env": "^1.6.0",
|
36
|
-
"babel-preset-react": "^6.24.1",
|
27
|
+
"@babel/core": "^7.7.0",
|
28
|
+
"@theforeman/env": "^3.3.2",
|
29
|
+
"@theforeman/builder": "^4.0.2",
|
30
|
+
"@theforeman/vendor-dev": "^3.3.2",
|
31
|
+
"babel-eslint": "^10.0.0",
|
32
|
+
"babel-jest": "^24.9.0",
|
37
33
|
"enzyme": "^3.7.0",
|
38
34
|
"enzyme-adapter-react-16": "^1.7.0",
|
39
35
|
"enzyme-to-json": "^3.3.5",
|
40
|
-
"eslint": "^
|
41
|
-
"eslint-
|
42
|
-
"eslint-plugin-import": "^2.8.0",
|
43
|
-
"eslint-plugin-jest": "^21.2.0",
|
44
|
-
"eslint-plugin-jsx-a11y": "^6.0.2",
|
45
|
-
"eslint-plugin-patternfly-react": "^0.2.1",
|
46
|
-
"eslint-plugin-react": "^7.4.0",
|
36
|
+
"eslint": "^6.8.0",
|
37
|
+
"eslint-plugin-patternfly-react": "^0.3.0",
|
47
38
|
"identity-obj-proxy": "^3.0.0",
|
48
|
-
"jest": "^
|
49
|
-
"prettier": "^1.
|
39
|
+
"jest": "^24.9.0",
|
40
|
+
"prettier": "^1.19.1",
|
50
41
|
"react-redux-test-utils": "^0.1.1"
|
51
42
|
},
|
52
43
|
"jest": {
|
@@ -56,6 +47,9 @@
|
|
56
47
|
"node_modules",
|
57
48
|
"webpack"
|
58
49
|
],
|
50
|
+
"transform": {
|
51
|
+
"^.+\\.js$": "babel-jest"
|
52
|
+
},
|
59
53
|
"setupFiles": [
|
60
54
|
"raf/polyfill",
|
61
55
|
"./webpack/testSetup.js"
|
data/webpack/ForemanTemplates.js
CHANGED
@@ -4,26 +4,30 @@ import PropTypes from 'prop-types';
|
|
4
4
|
|
5
5
|
import Routes from './Routes';
|
6
6
|
|
7
|
-
const ForemanTemplates = ({
|
7
|
+
const ForemanTemplates = ({
|
8
|
+
apiUrls,
|
9
|
+
validationData,
|
10
|
+
fileRepoStartWith,
|
11
|
+
userPermissions,
|
12
|
+
editPaths,
|
13
|
+
}) => (
|
8
14
|
<Router>
|
9
15
|
<Routes
|
10
|
-
apiUrls={
|
11
|
-
validationData={
|
12
|
-
editPaths={
|
13
|
-
fileRepoStartWith={
|
14
|
-
userPermissions={
|
16
|
+
apiUrls={apiUrls}
|
17
|
+
validationData={validationData}
|
18
|
+
editPaths={editPaths}
|
19
|
+
fileRepoStartWith={fileRepoStartWith}
|
20
|
+
userPermissions={userPermissions}
|
15
21
|
/>
|
16
22
|
</Router>
|
17
23
|
);
|
18
24
|
|
19
25
|
ForemanTemplates.propTypes = {
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
fileRepoStartWith: PropTypes.array,
|
26
|
-
}).isRequired,
|
26
|
+
apiUrls: PropTypes.object.isRequired,
|
27
|
+
validationData: PropTypes.object.isRequired,
|
28
|
+
editPaths: PropTypes.object.isRequired,
|
29
|
+
userPermissions: PropTypes.object.isRequired,
|
30
|
+
fileRepoStartWith: PropTypes.array.isRequired,
|
27
31
|
};
|
28
32
|
|
29
33
|
export default ForemanTemplates;
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import Immutable from 'seamless-immutable';
|
2
2
|
|
3
|
+
import { transformInitialValues } from '../components/NewTemplateSyncForm/NewTemplateSyncFormSelectors';
|
4
|
+
|
3
5
|
export const associateSetting = Immutable({
|
4
6
|
id: 45,
|
5
7
|
value: 'new',
|
@@ -65,10 +67,8 @@ export const registeredExportSettings = {
|
|
65
67
|
};
|
66
68
|
|
67
69
|
export const initialValues = {
|
68
|
-
|
69
|
-
|
70
|
-
return memo;
|
71
|
-
}, {}),
|
70
|
+
import: transformInitialValues(importSettings),
|
71
|
+
export: transformInitialValues(exportSettings),
|
72
72
|
};
|
73
73
|
|
74
74
|
export const stateFactory = obj => ({
|