foreman_salt 13.2.1 → 14.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/app/controllers/foreman_salt/api/v2/salt_autosign_controller.rb +31 -1
- data/app/controllers/foreman_salt/api/v2/salt_variables_controller.rb +1 -2
- data/app/lib/proxy_api/salt.rb +16 -2
- data/app/models/foreman_salt/concerns/host_managed_extensions.rb +64 -15
- data/app/models/foreman_salt/salt_status.rb +12 -0
- data/app/services/foreman_salt/report_importer.rb +1 -1
- data/config/routes.rb +1 -0
- data/db/migrate/20210312150333_add_salt_autosign_to_host.rb +6 -0
- data/db/seeds.d/76-job_templates.rb +1 -1
- data/lib/foreman_salt/engine.rb +2 -4
- data/lib/foreman_salt/extensions.rb +0 -3
- data/lib/foreman_salt/version.rb +1 -1
- data/locale/ca/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ca/foreman_salt.po +541 -0
- data/locale/cs_CZ/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/cs_CZ/foreman_salt.po +541 -0
- data/locale/de/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/de/foreman_salt.po +0 -18
- data/locale/en/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en/foreman_salt.po +0 -18
- data/locale/en_GB/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/en_GB/foreman_salt.po +541 -0
- data/locale/es/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/es/foreman_salt.po +541 -0
- data/locale/foreman_salt.pot +22 -46
- data/locale/fr/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/fr/foreman_salt.po +541 -0
- data/locale/gl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/gl/foreman_salt.po +541 -0
- data/locale/it/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/it/foreman_salt.po +541 -0
- data/locale/ja/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ja/foreman_salt.po +541 -0
- data/locale/ko/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ko/foreman_salt.po +541 -0
- data/locale/nl_NL/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/nl_NL/foreman_salt.po +541 -0
- data/locale/pl/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pl/foreman_salt.po +542 -0
- data/locale/pt_BR/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/pt_BR/foreman_salt.po +541 -0
- data/locale/ru/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/ru/foreman_salt.po +542 -0
- data/locale/sv_SE/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/sv_SE/foreman_salt.po +541 -0
- data/locale/zh_CN/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_CN/foreman_salt.po +541 -0
- data/locale/zh_TW/LC_MESSAGES/foreman_salt.mo +0 -0
- data/locale/zh_TW/foreman_salt.po +541 -0
- data/test/functional/api/v2/salt_autosign_controller_test.rb +2 -0
- data/test/integration/salt_autosign_test.rb +2 -2
- data/test/integration/salt_keys_test.rb +2 -3
- data/test/unit/host_extensions_test.rb +55 -11
- metadata +40 -15
- data/app/models/foreman_salt/fact_name.rb +0 -14
- data/app/services/foreman_salt/fact_importer.rb +0 -15
- data/app/services/foreman_salt/fact_parser.rb +0 -114
- data/test/unit/grains_centos.json +0 -113
- data/test/unit/salt_fact_importer_test.rb +0 -24
- data/test/unit/salt_fact_parser_test.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 287507e11ca2f63bc8341eae5bc832e7d95ad5b848922b9eba44b85486fd9dc3
|
4
|
+
data.tar.gz: e1a70ace048abbcf30d57e0631f8b1ad1627bbad3c5261b2196d0a92663ef833
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08395ab98cb79f8dfc725268cfcb9dc8b11c015562625ea56f90315edaa9bcf1c76601d123481d57eed865212cc7212cfa36be6ea1506d8e59d1ac15afaa5f2b'
|
7
|
+
data.tar.gz: f7a59b6f52e80340520a8ed4523e39727659612a737fb848c33731013684f09dcbe83e27c02c928a22614f18842120ce3d53908bc2ec4176a153bb69c2124527
|
data/README.md
CHANGED
@@ -4,7 +4,15 @@ module ForemanSalt
|
|
4
4
|
module Api
|
5
5
|
module V2
|
6
6
|
class SaltAutosignController < ::ForemanSalt::Api::V2::BaseController
|
7
|
-
|
7
|
+
include ::Foreman::Controller::SmartProxyAuth
|
8
|
+
include ::Foreman::Controller::Parameters::Host
|
9
|
+
|
10
|
+
# The add_smart_proxy_filters must be executed first! Otherwise, resource_finder won't work properly
|
11
|
+
add_smart_proxy_filters :auth
|
12
|
+
|
13
|
+
before_action :find_proxy, except: [:auth]
|
14
|
+
before_action :find_host, :find_proxy_via_host, only: [:auth]
|
15
|
+
before_action :setup_proxy
|
8
16
|
|
9
17
|
api :GET, '/salt_autosign/:smart_proxy_id', N_('List all autosign records')
|
10
18
|
param :smart_proxy_id, :identifier_dottable, :required => true
|
@@ -28,6 +36,18 @@ module ForemanSalt
|
|
28
36
|
render :json => { root_node_name => _('Record deleted.') }
|
29
37
|
end
|
30
38
|
|
39
|
+
api :PUT, '/salt_autosign_auth', N_("Set the salt_status as \'successful authentication\' and remove the corresponding autosign key from the Smart Proxy")
|
40
|
+
param :name, String, :required => true
|
41
|
+
def auth
|
42
|
+
Rails.logger.info("Removing Salt autosign key and update status for host #{@host}")
|
43
|
+
@api.autosign_remove_key(@host.salt_autosign_key) unless @host.salt_autosign_key.nil?
|
44
|
+
@host.update(:salt_status => ForemanSalt::SaltStatus.minion_auth_success)
|
45
|
+
render :json => { :message => "Removed autosign key and updated status succesfully" }, :status => 204
|
46
|
+
rescue ::Foreman::Exception => e
|
47
|
+
Rails.logger.warn("Cannot delete autosign key of host (id => #{params[:name]}) state: #{e}")
|
48
|
+
render :json => { :message => e.to_s }, :status => :unprocessable_entity
|
49
|
+
end
|
50
|
+
|
31
51
|
def metadata_total
|
32
52
|
@total ||= all_autosign.count
|
33
53
|
end
|
@@ -50,11 +70,21 @@ module ForemanSalt
|
|
50
70
|
@_autosigns ||= @api.autosign_list.map { |record| OpenStruct.new(:record => record) }
|
51
71
|
end
|
52
72
|
|
73
|
+
def find_host
|
74
|
+
@host = resource_finder(Host.authorized(:view_hosts), params[:name])
|
75
|
+
not_found unless @host
|
76
|
+
end
|
77
|
+
|
53
78
|
def find_proxy
|
54
79
|
@proxy = ::SmartProxy.friendly.find(params[:smart_proxy_id])
|
55
80
|
not_found unless @proxy
|
56
81
|
end
|
57
82
|
|
83
|
+
def find_proxy_via_host
|
84
|
+
@proxy = ::SmartProxy.friendly.find(@host.salt_proxy.id)
|
85
|
+
not_found unless @proxy
|
86
|
+
end
|
87
|
+
|
58
88
|
def setup_proxy
|
59
89
|
@api = ProxyAPI::Salt.new(:url => @proxy.url)
|
60
90
|
end
|
@@ -6,7 +6,6 @@ module ForemanSalt
|
|
6
6
|
# API controller for Salt Variables
|
7
7
|
class SaltVariablesController < ::ForemanSalt::Api::V2::BaseController
|
8
8
|
include ::ForemanSalt::Concerns::SaltVariableParameters
|
9
|
-
include Foreman::Controller::Parameters::VariableLookupKey
|
10
9
|
|
11
10
|
wrap_parameters :salt_variable, :include => salt_variable_params_filter.accessible_attributes(parameter_filter_context) + ['salt_state_id']
|
12
11
|
before_action :find_resource, :only => [:show, :destroy, :update]
|
@@ -58,7 +57,7 @@ module ForemanSalt
|
|
58
57
|
param_group :salt_variable, :as => :update
|
59
58
|
|
60
59
|
def update
|
61
|
-
@salt_variable.update!(
|
60
|
+
@salt_variable.update!(salt_variable_params)
|
62
61
|
render 'foreman_salt/api/v2/salt_variables/show'
|
63
62
|
end
|
64
63
|
|
data/app/lib/proxy_api/salt.rb
CHANGED
@@ -14,7 +14,7 @@ module ::ProxyAPI
|
|
14
14
|
def autosign_create(name)
|
15
15
|
parse(post('', "autosign/#{URI.escape(name)}"))
|
16
16
|
rescue => e
|
17
|
-
raise ProxyException.new(url, e, N_('Unable to set Salt autosign for %s'), name)
|
17
|
+
raise ProxyException.new(url, e, N_('Unable to set Salt autosign hostname for %s'), name)
|
18
18
|
end
|
19
19
|
|
20
20
|
def autosign_remove(name)
|
@@ -22,7 +22,21 @@ module ::ProxyAPI
|
|
22
22
|
rescue RestClient::ResourceNotFound
|
23
23
|
true # entry doesn't exists anyway
|
24
24
|
rescue => e
|
25
|
-
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign for %s'), name)
|
25
|
+
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign hostname for %s'), name)
|
26
|
+
end
|
27
|
+
|
28
|
+
def autosign_create_key(key)
|
29
|
+
parse(post('', "autosign_key/#{URI.escape(key)}"))
|
30
|
+
rescue => e
|
31
|
+
raise ProxyException.new(url, e, N_('Unable to create Salt autosign key %s'), key)
|
32
|
+
end
|
33
|
+
|
34
|
+
def autosign_remove_key(key)
|
35
|
+
parse(delete("autosign_key/#{URI.escape(key)}"))
|
36
|
+
rescue RestClient::ResourceNotFound
|
37
|
+
true # entry doesn't exists anyway
|
38
|
+
rescue => e
|
39
|
+
raise ProxyException.new(url, e, N_('Unable to delete Salt autosign key %s'), key)
|
26
40
|
end
|
27
41
|
|
28
42
|
def environments_list
|
@@ -42,9 +42,8 @@ module ForemanSalt
|
|
42
42
|
|
43
43
|
validate :salt_modules_in_host_environment
|
44
44
|
|
45
|
-
after_build
|
46
|
-
|
47
|
-
before_destroy :delete_salt_key, :if => ->(host) { host.salt_proxy }
|
45
|
+
after_build :ensure_salt_autosign, :if => ->(host) { host.salt_proxy }
|
46
|
+
before_destroy :remove_salt_minion, :if => ->(host) { host.salt_proxy }
|
48
47
|
end
|
49
48
|
|
50
49
|
def salt_params
|
@@ -58,6 +57,14 @@ module ForemanSalt
|
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
60
|
+
def host_params_grains_name
|
61
|
+
"salt_grains"
|
62
|
+
end
|
63
|
+
|
64
|
+
def autosign_grain_name
|
65
|
+
"autosign_key"
|
66
|
+
end
|
67
|
+
|
61
68
|
def salt_modules_for_enc
|
62
69
|
all_salt_modules.collect(&:name).uniq
|
63
70
|
end
|
@@ -95,24 +102,66 @@ module ForemanSalt
|
|
95
102
|
end
|
96
103
|
end
|
97
104
|
|
98
|
-
|
99
|
-
|
100
|
-
def accept_salt_key
|
105
|
+
def derive_salt_grains(use_autosign: False)
|
106
|
+
grains = {}
|
101
107
|
begin
|
102
|
-
Rails.logger.info("
|
103
|
-
|
104
|
-
|
108
|
+
Rails.logger.info("Derive Salt Grains from host_params and autosign_key")
|
109
|
+
grains[autosign_grain_name] = salt_autosign_key if use_autosign && !salt_autosign_key.nil?
|
110
|
+
unless host_params[host_params_grains_name].nil? ||
|
111
|
+
host_params[host_params_grains_name].class != Hash
|
112
|
+
grains.merge!(host_params[host_params_grains_name])
|
113
|
+
end
|
105
114
|
rescue Foreman::Exception => e
|
106
|
-
Rails.logger.warn("Unable to
|
115
|
+
Rails.logger.warn("Unable to derive Salt Grains: #{e}")
|
107
116
|
end
|
117
|
+
grains
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def ensure_salt_autosign
|
123
|
+
remove_salt_autosign
|
124
|
+
create_salt_autosign
|
125
|
+
end
|
126
|
+
|
127
|
+
def remove_salt_minion
|
128
|
+
remove_salt_autosign
|
129
|
+
remove_salt_key
|
130
|
+
end
|
131
|
+
|
132
|
+
def remove_salt_key
|
133
|
+
Rails.logger.info("Remove salt key for host #{fqdn}")
|
134
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
135
|
+
api.key_delete(name)
|
136
|
+
end
|
137
|
+
|
138
|
+
def remove_salt_autosign
|
139
|
+
key = self.salt_autosign_key
|
140
|
+
unless key.nil?
|
141
|
+
Rails.logger.info("Remove salt autosign key for host #{fqdn}")
|
142
|
+
begin
|
143
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
144
|
+
api.autosign_remove_key(key)
|
145
|
+
rescue Foreman::Exception => e
|
146
|
+
Rails.logger.warn("Unable to remove salt autosign for #{fqdn}: #{e}")
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
def generate_provisioning_key
|
152
|
+
SecureRandom.hex(10)
|
108
153
|
end
|
109
154
|
|
110
|
-
def
|
155
|
+
def create_salt_autosign
|
111
156
|
begin
|
112
|
-
key
|
113
|
-
|
157
|
+
Rails.logger.info("Create salt autosign key for host #{fqdn}")
|
158
|
+
api = ProxyAPI::Salt.new(:url => salt_proxy.url)
|
159
|
+
key = generate_provisioning_key
|
160
|
+
api.autosign_create_key(key)
|
161
|
+
update(:salt_autosign_key => key)
|
162
|
+
update(:salt_status => ForemanSalt::SaltStatus.minion_auth_waiting)
|
114
163
|
rescue Foreman::Exception => e
|
115
|
-
Rails.logger.warn("Unable to
|
164
|
+
Rails.logger.warn("Unable to create salt autosign for #{fqdn}: #{e}")
|
116
165
|
end
|
117
166
|
end
|
118
167
|
end
|
@@ -120,5 +169,5 @@ module ForemanSalt
|
|
120
169
|
end
|
121
170
|
|
122
171
|
class ::Host::Managed::Jail < Safemode::Jail
|
123
|
-
allow :salt_environment
|
172
|
+
allow :salt_environment, :salt_master, :derive_salt_grains
|
124
173
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module ForemanSalt
|
2
|
+
# Define the class that holds different states a Salt host become
|
3
|
+
class SaltStatus
|
4
|
+
def self.minion_auth_waiting
|
5
|
+
'Waiting for Salt Minion to authenticate'
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.minion_auth_success
|
9
|
+
'Salt Minion was authenticated successfully to Salt Master'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -43,7 +43,7 @@ module ForemanSalt
|
|
43
43
|
|
44
44
|
@host.save(:validate => false)
|
45
45
|
@host.reload
|
46
|
-
@host.refresh_statuses
|
46
|
+
@host.refresh_statuses([HostStatus.find_status_by_humanized_name("configuration")])
|
47
47
|
|
48
48
|
logger.info("Imported report for #{@host} in #{(Time.zone.now - start_time).round(2)} seconds")
|
49
49
|
end
|
data/config/routes.rb
CHANGED
@@ -38,6 +38,7 @@ Rails.application.routes.draw do
|
|
38
38
|
scope '(:apiv)', :defaults => { :apiv => 'v2' },
|
39
39
|
:apiv => /v1|v2/, :constraints => ApiConstraints.new(:version => 2) do
|
40
40
|
match '/jobs/upload' => 'foreman_salt/api/v2/jobs#upload', :via => :post
|
41
|
+
match '/salt_autosign_auth' => 'foreman_salt/api/v2/salt_autosign#auth', :via => :put
|
41
42
|
|
42
43
|
constraints(:smart_proxy_id => /[\w\.-]+/, :name => /[\w\.-]+/, :record => /[^\/]+/) do
|
43
44
|
match '/salt_keys/:smart_proxy_id' => 'foreman_salt/api/v2/salt_keys#index', :via => :get
|
@@ -20,7 +20,7 @@ if ForemanSalt.with_remote_execution?
|
|
20
20
|
sync = !Rails.env.test? && Setting[:remote_execution_sync_templates]
|
21
21
|
template = JobTemplate.import_raw!(File.read(template),
|
22
22
|
:default => true,
|
23
|
-
:
|
23
|
+
:lock => true,
|
24
24
|
:update => sync)
|
25
25
|
template.organizations = organizations if template.present?
|
26
26
|
template.locations = locations if template.present?
|
data/lib/foreman_salt/engine.rb
CHANGED
@@ -38,16 +38,14 @@ module ForemanSalt
|
|
38
38
|
|
39
39
|
initializer 'foreman_salt.assets.precompile' do |app|
|
40
40
|
app.config.assets.precompile += %w(foreman_salt/states.js)
|
41
|
-
end
|
42
|
-
|
43
|
-
initializer 'foreman_salt.assets.precompile' do |app|
|
44
41
|
app.config.assets.precompile += %w[foreman_salt/Salt.png]
|
45
42
|
end
|
46
43
|
|
47
44
|
initializer 'foreman_salt.configure_assets', :group => :assets do
|
48
45
|
SETTINGS[:foreman_salt] = {
|
49
46
|
:assets => {
|
50
|
-
:precompile => ['foreman_salt/
|
47
|
+
:precompile => ['foreman_salt/Salt.png',
|
48
|
+
'foreman_salt/states.js']
|
51
49
|
}
|
52
50
|
}
|
53
51
|
end
|
@@ -1,7 +1,4 @@
|
|
1
1
|
begin
|
2
|
-
::FactImporter.register_fact_importer(:foreman_salt, ForemanSalt::FactImporter)
|
3
|
-
::FactParser.register_fact_parser(:foreman_salt, ForemanSalt::FactParser)
|
4
|
-
|
5
2
|
# Helper Extensions
|
6
3
|
::HostsHelper.send :include, ForemanSalt::HostsHelperExtensions
|
7
4
|
::SmartProxiesHelper.send :include, ForemanSalt::SmartProxiesHelperExtensions
|
data/lib/foreman_salt/version.rb
CHANGED
Binary file
|
@@ -0,0 +1,541 @@
|
|
1
|
+
# Catalan translations for foreman_salt package.
|
2
|
+
# Copyright (C) 2020 THE PACKAGE'S COPYRIGHT HOLDER
|
3
|
+
# This file is distributed under the same license as the foreman_salt package.
|
4
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
5
|
+
#
|
6
|
+
msgid ""
|
7
|
+
msgstr ""
|
8
|
+
"Project-Id-Version: foreman_salt 1.0.0\n"
|
9
|
+
"Report-Msgid-Bugs-To: \n"
|
10
|
+
"PO-Revision-Date: 2020-05-11 18:53+0530\n"
|
11
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
12
|
+
"Language-Team: Catalan\n"
|
13
|
+
"Language: ca\n"
|
14
|
+
"MIME-Version: 1.0\n"
|
15
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16
|
+
"Content-Transfer-Encoding: 8bit\n"
|
17
|
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18
|
+
"\n"
|
19
|
+
|
20
|
+
msgid "*Clear environment*"
|
21
|
+
msgstr ""
|
22
|
+
|
23
|
+
msgid "Accept"
|
24
|
+
msgstr ""
|
25
|
+
|
26
|
+
msgid "Accepted"
|
27
|
+
msgstr ""
|
28
|
+
|
29
|
+
msgid "Action with sub plans"
|
30
|
+
msgstr ""
|
31
|
+
|
32
|
+
msgid "Actions"
|
33
|
+
msgstr ""
|
34
|
+
|
35
|
+
msgid "Added"
|
36
|
+
msgstr ""
|
37
|
+
|
38
|
+
msgid "Array of State ids"
|
39
|
+
msgstr ""
|
40
|
+
|
41
|
+
msgid "Autosign"
|
42
|
+
msgstr ""
|
43
|
+
|
44
|
+
msgid "Autosign entries for %s"
|
45
|
+
msgstr ""
|
46
|
+
|
47
|
+
msgid "Autosign record"
|
48
|
+
msgstr ""
|
49
|
+
|
50
|
+
msgid "Avoid duplicate values when merging them (only array type)?"
|
51
|
+
msgstr ""
|
52
|
+
|
53
|
+
msgid "Before including these variables as Salt pillar, Foreman will validate that your variables comply with the validation."
|
54
|
+
msgstr ""
|
55
|
+
|
56
|
+
msgid "Cancel"
|
57
|
+
msgstr ""
|
58
|
+
|
59
|
+
msgid "Change Salt Environment"
|
60
|
+
msgstr ""
|
61
|
+
|
62
|
+
msgid "Change Salt Master"
|
63
|
+
msgstr ""
|
64
|
+
|
65
|
+
msgid "Check/Uncheck Added"
|
66
|
+
msgstr ""
|
67
|
+
|
68
|
+
msgid "Check/Uncheck All"
|
69
|
+
msgstr ""
|
70
|
+
|
71
|
+
msgid "Check/Uncheck Removed"
|
72
|
+
msgstr ""
|
73
|
+
|
74
|
+
msgid "Continue to look for matches after first find (only array/hash type)? Note: merging overrides ignores all matchers that are omitted."
|
75
|
+
msgstr ""
|
76
|
+
|
77
|
+
msgid "Could not find salt environment with id %s"
|
78
|
+
msgstr ""
|
79
|
+
|
80
|
+
msgid "Create Salt Variable"
|
81
|
+
msgstr ""
|
82
|
+
|
83
|
+
msgid "Create Salt variable"
|
84
|
+
msgstr ""
|
85
|
+
|
86
|
+
msgid "Create a Salt environment"
|
87
|
+
msgstr ""
|
88
|
+
|
89
|
+
msgid "Create a state"
|
90
|
+
msgstr ""
|
91
|
+
|
92
|
+
msgid "Create an autosign record"
|
93
|
+
msgstr ""
|
94
|
+
|
95
|
+
msgid "Default Behavior"
|
96
|
+
msgstr ""
|
97
|
+
|
98
|
+
msgid "Default value of variable"
|
99
|
+
msgstr ""
|
100
|
+
|
101
|
+
msgid "Delete %s?"
|
102
|
+
msgstr ""
|
103
|
+
|
104
|
+
msgid "Delete a Salt Key"
|
105
|
+
msgstr ""
|
106
|
+
|
107
|
+
msgid "Delete an autosign record"
|
108
|
+
msgstr ""
|
109
|
+
|
110
|
+
msgid "Deletes Salt variable"
|
111
|
+
msgstr ""
|
112
|
+
|
113
|
+
msgid "Description of variable"
|
114
|
+
msgstr ""
|
115
|
+
|
116
|
+
msgid "Destroy a Salt environment"
|
117
|
+
msgstr ""
|
118
|
+
|
119
|
+
msgid "Destroy a state"
|
120
|
+
msgstr ""
|
121
|
+
|
122
|
+
msgid "Dryrun only"
|
123
|
+
msgstr ""
|
124
|
+
|
125
|
+
msgid "Edit"
|
126
|
+
msgstr ""
|
127
|
+
|
128
|
+
msgid "Edit %s"
|
129
|
+
msgstr ""
|
130
|
+
|
131
|
+
msgid "Edit Salt Environment %s"
|
132
|
+
msgstr ""
|
133
|
+
|
134
|
+
msgid "Edit Salt State %s"
|
135
|
+
msgstr ""
|
136
|
+
|
137
|
+
msgid "Edit Salt Variable"
|
138
|
+
msgstr ""
|
139
|
+
|
140
|
+
msgid "Environment"
|
141
|
+
msgstr ""
|
142
|
+
|
143
|
+
msgid "Environments"
|
144
|
+
msgstr ""
|
145
|
+
|
146
|
+
msgid "FQDN of host that key belongs to"
|
147
|
+
msgstr ""
|
148
|
+
|
149
|
+
msgid "Failed to execute state.highstate: %s"
|
150
|
+
msgstr ""
|
151
|
+
|
152
|
+
msgid "Filter %s"
|
153
|
+
msgstr ""
|
154
|
+
|
155
|
+
msgid "Fingerprint"
|
156
|
+
msgstr ""
|
157
|
+
|
158
|
+
msgid "Function"
|
159
|
+
msgstr ""
|
160
|
+
|
161
|
+
msgid "Hidden Value"
|
162
|
+
msgstr ""
|
163
|
+
|
164
|
+
msgid "Hide all values for this parameter."
|
165
|
+
msgstr ""
|
166
|
+
|
167
|
+
msgid "Hide the Run Salt state.highstate button on the host details page"
|
168
|
+
msgstr ""
|
169
|
+
|
170
|
+
msgid "Host groups"
|
171
|
+
msgstr ""
|
172
|
+
|
173
|
+
msgid "Host must have an environment in order to set salt states"
|
174
|
+
msgstr ""
|
175
|
+
|
176
|
+
msgid "Hosts"
|
177
|
+
msgstr ""
|
178
|
+
|
179
|
+
msgid "ID of Salt Proxy"
|
180
|
+
msgstr ""
|
181
|
+
|
182
|
+
msgid "If checked, will raise an error if there is no default value and no matcher provide a value."
|
183
|
+
msgstr ""
|
184
|
+
|
185
|
+
msgid "Import"
|
186
|
+
msgstr ""
|
187
|
+
|
188
|
+
msgid "Import Puppet classes"
|
189
|
+
msgstr ""
|
190
|
+
|
191
|
+
msgid "Import facts"
|
192
|
+
msgstr ""
|
193
|
+
|
194
|
+
msgid "Import from %s"
|
195
|
+
msgstr ""
|
196
|
+
|
197
|
+
msgid "Import states from a salt master"
|
198
|
+
msgstr ""
|
199
|
+
|
200
|
+
msgid "Include default value when merging all matching values"
|
201
|
+
msgstr ""
|
202
|
+
|
203
|
+
msgid "Include default value when merging all matching values."
|
204
|
+
msgstr ""
|
205
|
+
|
206
|
+
msgid "Invalid report"
|
207
|
+
msgstr ""
|
208
|
+
|
209
|
+
msgid "JID"
|
210
|
+
msgstr ""
|
211
|
+
|
212
|
+
msgid "Key Name"
|
213
|
+
msgstr ""
|
214
|
+
|
215
|
+
msgid "Keys"
|
216
|
+
msgstr ""
|
217
|
+
|
218
|
+
msgid "Limit to a specific environment"
|
219
|
+
msgstr ""
|
220
|
+
|
221
|
+
msgid "Limit to a specific environments"
|
222
|
+
msgstr ""
|
223
|
+
|
224
|
+
msgid "Limit to specific actions: i.e. add, remove"
|
225
|
+
msgstr ""
|
226
|
+
|
227
|
+
msgid "List Salt variables"
|
228
|
+
msgstr ""
|
229
|
+
|
230
|
+
msgid "List all Salt Minions"
|
231
|
+
msgstr ""
|
232
|
+
|
233
|
+
msgid "List all Salt environments"
|
234
|
+
msgstr ""
|
235
|
+
|
236
|
+
msgid "List all Salt keys"
|
237
|
+
msgstr ""
|
238
|
+
|
239
|
+
msgid "List all Salt states"
|
240
|
+
msgstr ""
|
241
|
+
|
242
|
+
msgid "List all autosign records"
|
243
|
+
msgstr ""
|
244
|
+
|
245
|
+
msgid "Mark the variable to be managed by Foreman. When the Salt State of this variable is assigned to a host, the default value will be added as a Salt pillar for this host. Specify matchers to set a different value for such variable."
|
246
|
+
msgstr ""
|
247
|
+
|
248
|
+
msgid "Merge all matching values (only array/hash type)"
|
249
|
+
msgstr ""
|
250
|
+
|
251
|
+
msgid "Must specify a Smart Proxy to use"
|
252
|
+
msgstr ""
|
253
|
+
|
254
|
+
msgid "Name"
|
255
|
+
msgstr ""
|
256
|
+
|
257
|
+
msgid "Name of the Salt state"
|
258
|
+
msgstr ""
|
259
|
+
|
260
|
+
msgid "Name of variable"
|
261
|
+
msgstr ""
|
262
|
+
|
263
|
+
msgid "Namespace Foreman pillars under 'foreman' key"
|
264
|
+
msgstr ""
|
265
|
+
|
266
|
+
msgid "New"
|
267
|
+
msgstr ""
|
268
|
+
|
269
|
+
msgid "New Autosign Entry"
|
270
|
+
msgstr ""
|
271
|
+
|
272
|
+
msgid "New Salt Environment"
|
273
|
+
msgstr ""
|
274
|
+
|
275
|
+
msgid "New Salt State"
|
276
|
+
msgstr ""
|
277
|
+
|
278
|
+
msgid "New Salt Variable"
|
279
|
+
msgstr ""
|
280
|
+
|
281
|
+
msgid "No Salt master defined - can't continue"
|
282
|
+
msgstr ""
|
283
|
+
|
284
|
+
msgid "No changes found"
|
285
|
+
msgstr ""
|
286
|
+
|
287
|
+
msgid "No salt environment selected!"
|
288
|
+
msgstr ""
|
289
|
+
|
290
|
+
msgid "Operation"
|
291
|
+
msgstr ""
|
292
|
+
|
293
|
+
msgid "Optional Input Validator"
|
294
|
+
msgstr ""
|
295
|
+
|
296
|
+
msgid "Order"
|
297
|
+
msgstr ""
|
298
|
+
|
299
|
+
msgid "Override the default value of the Salt variable."
|
300
|
+
msgstr ""
|
301
|
+
|
302
|
+
msgid "Overriden"
|
303
|
+
msgstr ""
|
304
|
+
|
305
|
+
msgid "Please select a Salt environment first"
|
306
|
+
msgstr ""
|
307
|
+
|
308
|
+
msgid "Prioritize Attribute Order"
|
309
|
+
msgstr ""
|
310
|
+
|
311
|
+
msgid "Record deleted."
|
312
|
+
msgstr ""
|
313
|
+
|
314
|
+
msgid "Reject"
|
315
|
+
msgstr ""
|
316
|
+
|
317
|
+
msgid "Rejected"
|
318
|
+
msgstr ""
|
319
|
+
|
320
|
+
msgid "Remote action:"
|
321
|
+
msgstr ""
|
322
|
+
|
323
|
+
msgid "Remove duplicate values (only array type)"
|
324
|
+
msgstr ""
|
325
|
+
|
326
|
+
msgid "Removed"
|
327
|
+
msgstr ""
|
328
|
+
|
329
|
+
msgid "Result"
|
330
|
+
msgstr ""
|
331
|
+
|
332
|
+
msgid "Run Salt"
|
333
|
+
msgstr ""
|
334
|
+
|
335
|
+
msgid "Run Salt state.highstate"
|
336
|
+
msgstr ""
|
337
|
+
|
338
|
+
msgid "Salt Autosign"
|
339
|
+
msgstr ""
|
340
|
+
|
341
|
+
msgid "Salt ENC"
|
342
|
+
msgstr ""
|
343
|
+
|
344
|
+
msgid "Salt Environment"
|
345
|
+
msgstr ""
|
346
|
+
|
347
|
+
msgid "Salt Environments"
|
348
|
+
msgstr ""
|
349
|
+
|
350
|
+
msgid "Salt Keys"
|
351
|
+
msgstr ""
|
352
|
+
|
353
|
+
msgid "Salt Keys on %s"
|
354
|
+
msgstr ""
|
355
|
+
|
356
|
+
msgid "Salt Master"
|
357
|
+
msgstr ""
|
358
|
+
|
359
|
+
msgid "Salt Smart Proxy ID"
|
360
|
+
msgstr ""
|
361
|
+
|
362
|
+
msgid "Salt State"
|
363
|
+
msgstr ""
|
364
|
+
|
365
|
+
msgid "Salt States"
|
366
|
+
msgstr ""
|
367
|
+
|
368
|
+
msgid "Salt Variable Details"
|
369
|
+
msgstr ""
|
370
|
+
|
371
|
+
msgid "Salt Variables"
|
372
|
+
msgstr ""
|
373
|
+
|
374
|
+
msgid "Salt environment"
|
375
|
+
msgstr ""
|
376
|
+
|
377
|
+
msgid "Salt environment ID"
|
378
|
+
msgstr ""
|
379
|
+
|
380
|
+
msgid "Salt external nodes YAML dump"
|
381
|
+
msgstr ""
|
382
|
+
|
383
|
+
msgid "Salt state"
|
384
|
+
msgstr ""
|
385
|
+
|
386
|
+
msgid "Salt states must be in the environment of the host"
|
387
|
+
msgstr ""
|
388
|
+
|
389
|
+
msgid "SaltEnvironment|Name"
|
390
|
+
msgstr ""
|
391
|
+
|
392
|
+
msgid "SaltModule|Name"
|
393
|
+
msgstr ""
|
394
|
+
|
395
|
+
msgid "Save"
|
396
|
+
msgstr ""
|
397
|
+
|
398
|
+
msgid "Select salt environment"
|
399
|
+
msgstr ""
|
400
|
+
|
401
|
+
msgid "Select the changes you want to realize in Foreman"
|
402
|
+
msgstr ""
|
403
|
+
|
404
|
+
msgid "Set the order in which values are resolved."
|
405
|
+
msgstr ""
|
406
|
+
|
407
|
+
msgid "Show a Salt environment"
|
408
|
+
msgstr ""
|
409
|
+
|
410
|
+
msgid "Show a minion"
|
411
|
+
msgstr ""
|
412
|
+
|
413
|
+
msgid "Show a state"
|
414
|
+
msgstr ""
|
415
|
+
|
416
|
+
msgid "Show variable"
|
417
|
+
msgstr ""
|
418
|
+
|
419
|
+
msgid "Specify Matchers"
|
420
|
+
msgstr ""
|
421
|
+
|
422
|
+
msgid "State"
|
423
|
+
msgstr ""
|
424
|
+
|
425
|
+
msgid "State ID"
|
426
|
+
msgstr ""
|
427
|
+
|
428
|
+
msgid "State can be \"accepted\" or \"rejected\""
|
429
|
+
msgstr ""
|
430
|
+
|
431
|
+
msgid "States"
|
432
|
+
msgstr ""
|
433
|
+
|
434
|
+
msgid "Successfully executed, check log files for more details"
|
435
|
+
msgstr ""
|
436
|
+
|
437
|
+
msgid "Successfully imported"
|
438
|
+
msgstr ""
|
439
|
+
|
440
|
+
msgid "Successfully updated %s."
|
441
|
+
msgstr ""
|
442
|
+
|
443
|
+
msgid "The order in which matchers keys are processed, first match wins.<br> You may use multiple attributes as a matcher key, for example, an order of <code>host group, environment</code> would expect a matcher such as <code>hostgroup = \"web servers\", environment = production</code>"
|
444
|
+
msgstr ""
|
445
|
+
|
446
|
+
msgid "The order in which values are resolved"
|
447
|
+
msgstr ""
|
448
|
+
|
449
|
+
msgid "Toggle"
|
450
|
+
msgstr ""
|
451
|
+
|
452
|
+
msgid "Trigger a state.highstate run on a node"
|
453
|
+
msgstr ""
|
454
|
+
|
455
|
+
msgid "Type"
|
456
|
+
msgstr ""
|
457
|
+
|
458
|
+
msgid "Types of validation values"
|
459
|
+
msgstr ""
|
460
|
+
|
461
|
+
msgid "Types of variable values"
|
462
|
+
msgstr ""
|
463
|
+
|
464
|
+
msgid "Unable to accept Salt key for %s"
|
465
|
+
msgstr ""
|
466
|
+
|
467
|
+
msgid "Unable to delete Salt autosign for %s"
|
468
|
+
msgstr ""
|
469
|
+
|
470
|
+
msgid "Unable to delete Salt key for %s"
|
471
|
+
msgstr ""
|
472
|
+
|
473
|
+
msgid "Unable to fetch Salt environments list"
|
474
|
+
msgstr ""
|
475
|
+
|
476
|
+
msgid "Unable to fetch Salt key list"
|
477
|
+
msgstr ""
|
478
|
+
|
479
|
+
msgid "Unable to fetch Salt states list"
|
480
|
+
msgstr ""
|
481
|
+
|
482
|
+
msgid "Unable to fetch autosign list"
|
483
|
+
msgstr ""
|
484
|
+
|
485
|
+
msgid ""
|
486
|
+
"Unable to generate output, Check log files\n"
|
487
|
+
msgstr ""
|
488
|
+
|
489
|
+
msgid "Unable to reject Salt key for %s"
|
490
|
+
msgstr ""
|
491
|
+
|
492
|
+
msgid "Unable to run Salt state.highstate for %s"
|
493
|
+
msgstr ""
|
494
|
+
|
495
|
+
msgid "Unable to set Salt autosign for %s"
|
496
|
+
msgstr ""
|
497
|
+
|
498
|
+
msgid "Unaccepted"
|
499
|
+
msgstr ""
|
500
|
+
|
501
|
+
msgid "Update"
|
502
|
+
msgstr ""
|
503
|
+
|
504
|
+
msgid "Update a Salt Key"
|
505
|
+
msgstr ""
|
506
|
+
|
507
|
+
msgid "Update a minion"
|
508
|
+
msgstr ""
|
509
|
+
|
510
|
+
msgid "Updated hosts: changed salt environment"
|
511
|
+
msgstr ""
|
512
|
+
|
513
|
+
msgid "Updates Salt variable"
|
514
|
+
msgstr ""
|
515
|
+
|
516
|
+
msgid "Upload a Job"
|
517
|
+
msgstr ""
|
518
|
+
|
519
|
+
msgid "Used to enforce certain values for the parameter values"
|
520
|
+
msgstr ""
|
521
|
+
|
522
|
+
msgid "Value to use when there is no match."
|
523
|
+
msgstr ""
|
524
|
+
|
525
|
+
msgid "Variables"
|
526
|
+
msgstr ""
|
527
|
+
|
528
|
+
msgid "Variable|Name"
|
529
|
+
msgstr ""
|
530
|
+
|
531
|
+
msgid "Variable|State"
|
532
|
+
msgstr ""
|
533
|
+
|
534
|
+
msgid "When enabled the parameter is hidden in the UI"
|
535
|
+
msgstr ""
|
536
|
+
|
537
|
+
msgid "is alphanumeric and cannot contain spaces"
|
538
|
+
msgstr ""
|
539
|
+
|
540
|
+
msgid "must be alphanumeric, can contain periods, dashes, underscores and must not contain spaces"
|
541
|
+
msgstr ""
|