Class: Puppet::Settings::BaseSetting
- Defined in:
- lib/puppet/settings/base_setting.rb
Overview
The base setting type
Direct Known Subclasses
ArraySetting, BooleanSetting, CertificateRevocationSetting, DurationSetting, EnumSetting, HttpExtraHeadersSetting, IntegerSetting, PrioritySetting, StringSetting, SymbolicEnumSetting, TTLSetting, TerminusSetting
Constant Summary collapse
- HOOK_TYPES =
Hooks are called during different parts of the settings lifecycle:
-
:on_write_only - This is the default hook type. The hook will be called if its value is set in ‘main` or programmatically. If its value is set in a section that doesn’t match the application’s run mode, it will be ignored entirely. If the section does match the run mode, the value will be used, but the hook will not be called!
-
:on_define_and_write - The hook behaves the same as above, except it is also called immediately when the setting is defined in Puppet::Settings.define_settings. In that case, the hook receives the default value as specified.
-
:on_initialize_and_write - The hook will be called if the value is set in ‘main`, the section that matches the run mode, or programmatically.
-
Set.new([:on_define_and_write, :on_initialize_and_write, :on_write_only]).freeze
Instance Attribute Summary collapse
-
#call_hook ⇒ Object
Returns the value of attribute call_hook.
- #default(check_application_defaults_first = false) ⇒ Object
-
#deprecated ⇒ Object
Returns the value of attribute deprecated.
-
#desc ⇒ Object
Returns the value of attribute desc.
-
#name ⇒ Object
Returns the value of attribute name.
-
#section ⇒ Object
Returns the value of attribute section.
-
#short ⇒ Object
Returns the value of attribute short.
Class Method Summary collapse
Instance Method Summary collapse
-
#allowed_on_commandline? ⇒ Boolean
True if we should raise a deprecation_warning if the setting is found in puppet.conf, but not if the user sets it on the commandline.
- #call_hook_on_define? ⇒ Boolean
- #call_hook_on_initialize? ⇒ Boolean
-
#completely_deprecated? ⇒ Boolean
True if we should raise a deprecation_warning if the setting is submitted on the commandline or is set in puppet.conf.
- #deprecated? ⇒ Boolean
-
#getopt_args ⇒ Object
get the arguments in getopt format.
- #has_hook? ⇒ Boolean
- #hook=(block) ⇒ Object
-
#initialize(args = {}) ⇒ BaseSetting
constructor
Create the new element.
- #inspect ⇒ Object
- #iscreated ⇒ Object
- #iscreated? ⇒ Boolean
-
#munge(value) ⇒ Object
Modify the value when it is first evaluated.
-
#optparse_args ⇒ Object
get the arguments in OptionParser format.
-
#print(value) ⇒ Object
Print the value for the user in a config compatible format.
- #set_meta(meta) ⇒ Object
-
#to_config ⇒ Object
Convert the object to a config statement.
-
#value(bypass_interpolation = false) ⇒ String
Retrieves the value, or if it’s not set, retrieves the default.
Constructor Details
#initialize(args = {}) ⇒ BaseSetting
Create the new element. Pretty much just sets the name.
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/puppet/settings/base_setting.rb', line 89 def initialize(args = {}) @settings = args.delete(:settings) unless @settings raise ArgumentError, "You must refer to a settings object" end # explicitly set name prior to calling other param= methods to provide meaningful feedback during # other warnings @name = args[:name] if args.include? :name # set the default value for call_hook @call_hook = :on_write_only if args[:hook] and !(args[:call_hook]) @has_hook = false if args[:call_hook] and !(args[:hook]) # TRANSLATORS ':call_hook' and ':hook' are specific setting names and should not be translated raise ArgumentError, _("Cannot reference :call_hook for :%{name} if no :hook is defined") % { name: @name } end args.each do |param, value| method = param.to_s + "=" unless respond_to? method raise ArgumentError, _("%{class_name} (setting '%{setting}') does not accept %{parameter}") % { class_name: self.class, setting: args[:name], parameter: param } end send(method, value) end unless desc raise ArgumentError, _("You must provide a description for the %{class_name} config option") % { class_name: name } end end |
Instance Attribute Details
#call_hook ⇒ Object
Returns the value of attribute call_hook.
10 11 12 |
# File 'lib/puppet/settings/base_setting.rb', line 10 def call_hook @call_hook end |
#default(check_application_defaults_first = false) ⇒ Object
137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/puppet/settings/base_setting.rb', line 137 def default(check_application_defaults_first = false) if @default.is_a? Proc # Give unit tests a chance to reevaluate the call by removing the instance variable unless instance_variable_defined?(:@evaluated_default) @evaluated_default = @default.call end default_value = @evaluated_default else default_value = @default end return default_value unless check_application_defaults_first @settings.value(name, :application_defaults, true) || default_value end |
#deprecated ⇒ Object
Returns the value of attribute deprecated.
10 11 12 |
# File 'lib/puppet/settings/base_setting.rb', line 10 def deprecated @deprecated end |
#desc ⇒ Object
Returns the value of attribute desc.
9 10 11 |
# File 'lib/puppet/settings/base_setting.rb', line 9 def desc @desc end |
#name ⇒ Object
Returns the value of attribute name.
9 10 11 |
# File 'lib/puppet/settings/base_setting.rb', line 9 def name @name end |
#section ⇒ Object
Returns the value of attribute section.
9 10 11 |
# File 'lib/puppet/settings/base_setting.rb', line 9 def section @section end |
#short ⇒ Object
Returns the value of attribute short.
10 11 12 |
# File 'lib/puppet/settings/base_setting.rb', line 10 def short @short end |
Class Method Details
.available_call_hook_values ⇒ Object
30 31 32 |
# File 'lib/puppet/settings/base_setting.rb', line 30 def self.available_call_hook_values HOOK_TYPES.to_a end |
Instance Method Details
#allowed_on_commandline? ⇒ Boolean
True if we should raise a deprecation_warning if the setting is found in puppet.conf, but not if the user sets it on the commandline
221 222 223 |
# File 'lib/puppet/settings/base_setting.rb', line 221 def allowed_on_commandline? @deprecated == :allowed_on_commandline end |
#call_hook_on_define? ⇒ Boolean
52 53 54 |
# File 'lib/puppet/settings/base_setting.rb', line 52 def call_hook_on_define? call_hook == :on_define_and_write end |
#call_hook_on_initialize? ⇒ Boolean
57 58 59 |
# File 'lib/puppet/settings/base_setting.rb', line 57 def call_hook_on_initialize? call_hook == :on_initialize_and_write end |
#completely_deprecated? ⇒ Boolean
True if we should raise a deprecation_warning if the setting is submitted on the commandline or is set in puppet.conf.
215 216 217 |
# File 'lib/puppet/settings/base_setting.rb', line 215 def completely_deprecated? @deprecated == :completely end |
#deprecated? ⇒ Boolean
209 210 211 |
# File 'lib/puppet/settings/base_setting.rb', line 209 def deprecated? !!@deprecated end |
#getopt_args ⇒ Object
get the arguments in getopt format
62 63 64 65 66 67 68 |
# File 'lib/puppet/settings/base_setting.rb', line 62 def getopt_args if short [["--#{name}", "-#{short}", GetoptLong::REQUIRED_ARGUMENT]] else [["--#{name}", GetoptLong::REQUIRED_ARGUMENT]] end end |
#has_hook? ⇒ Boolean
84 85 86 |
# File 'lib/puppet/settings/base_setting.rb', line 84 def has_hook? @has_hook end |
#hook=(block) ⇒ Object
79 80 81 82 |
# File 'lib/puppet/settings/base_setting.rb', line 79 def hook=(block) @has_hook = true :handle, &block end |
#inspect ⇒ Object
225 226 227 |
# File 'lib/puppet/settings/base_setting.rb', line 225 def inspect %Q(<#{self.class}:#{object_id} @name="#{@name}" @section="#{@section}" @default="#{@default}" @call_hook="#{@call_hook}">) end |
#iscreated ⇒ Object
122 123 124 |
# File 'lib/puppet/settings/base_setting.rb', line 122 def iscreated @iscreated = true end |
#iscreated? ⇒ Boolean
126 127 128 |
# File 'lib/puppet/settings/base_setting.rb', line 126 def iscreated? @iscreated end |
#munge(value) ⇒ Object
Modify the value when it is first evaluated
187 188 189 |
# File 'lib/puppet/settings/base_setting.rb', line 187 def munge(value) value end |
#optparse_args ⇒ Object
get the arguments in OptionParser format
71 72 73 74 75 76 77 |
# File 'lib/puppet/settings/base_setting.rb', line 71 def optparse_args if short ["--#{name}", "-#{short}", desc, :REQUIRED] else ["--#{name}", desc, :REQUIRED] end end |
#print(value) ⇒ Object
Print the value for the user in a config compatible format
192 193 194 |
# File 'lib/puppet/settings/base_setting.rb', line 192 def print(value) munge(value) end |
#set_meta(meta) ⇒ Object
196 197 198 |
# File 'lib/puppet/settings/base_setting.rb', line 196 def () Puppet.notice("#{name} does not support meta data. Ignoring.") end |
#to_config ⇒ Object
Convert the object to a config statement.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/puppet/settings/base_setting.rb', line 153 def to_config require_relative '../../puppet/util/docs' # Scrub any funky indentation; comment out description. str = Puppet::Util::Docs.scrub(@desc).gsub(/^/, "# ") + "\n" # Add in a statement about the default. str << "# The default value is '#{default(true)}'.\n" if default(true) # If the value has not been overridden, then print it out commented # and unconverted, so it's clear that that's the default and how it # works. value = @settings.value(name) if value != @default line = "#{@name} = #{value}" else line = "# #{@name} = #{@default}" end str << (line + "\n") # Indent str.gsub(/^/, " ") end |
#value(bypass_interpolation = false) ⇒ String
Returns Retrieves the value, or if it’s not set, retrieves the default.
182 183 184 |
# File 'lib/puppet/settings/base_setting.rb', line 182 def value(bypass_interpolation = false) @settings.value(name, nil, bypass_interpolation) end |