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
Returns the value of attribute default.
-
#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.
85 86 87 88 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 |
# File 'lib/puppet/settings/base_setting.rb', line 85 def initialize(args = {}) @settings = args.delete(:settings) unless @settings raise ArgumentError.new("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 not args[:call_hook] @has_hook = false if args[:call_hook] and not 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 self.respond_to? method raise ArgumentError, _("%{class_name} (setting '%{setting}') does not accept %{parameter}") % { class_name: self.class, setting: args[:name], parameter: param } end self.send(method, value) end unless self.desc raise ArgumentError, _("You must provide a description for the %{class_name} config option") % { class_name: self.name } end end |
Instance Attribute Details
#call_hook ⇒ Object
Returns the value of attribute call_hook.
6 7 8 |
# File 'lib/puppet/settings/base_setting.rb', line 6 def call_hook @call_hook end |
#default(check_application_defaults_first = false) ⇒ Object
Returns the value of attribute default.
6 7 8 |
# File 'lib/puppet/settings/base_setting.rb', line 6 def default @default end |
#deprecated ⇒ Object
Returns the value of attribute deprecated.
7 8 9 |
# File 'lib/puppet/settings/base_setting.rb', line 7 def deprecated @deprecated end |
#desc ⇒ Object
Returns the value of attribute desc.
6 7 8 |
# File 'lib/puppet/settings/base_setting.rb', line 6 def desc @desc end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/puppet/settings/base_setting.rb', line 6 def name @name end |
#section ⇒ Object
Returns the value of attribute section.
6 7 8 |
# File 'lib/puppet/settings/base_setting.rb', line 6 def section @section end |
#short ⇒ Object
Returns the value of attribute short.
7 8 9 |
# File 'lib/puppet/settings/base_setting.rb', line 7 def short @short end |
Class Method Details
.available_call_hook_values ⇒ Object
27 28 29 |
# File 'lib/puppet/settings/base_setting.rb', line 27 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
215 216 217 |
# File 'lib/puppet/settings/base_setting.rb', line 215 def allowed_on_commandline? @deprecated == :allowed_on_commandline end |
#call_hook_on_define? ⇒ Boolean
48 49 50 |
# File 'lib/puppet/settings/base_setting.rb', line 48 def call_hook_on_define? call_hook == :on_define_and_write end |
#call_hook_on_initialize? ⇒ Boolean
53 54 55 |
# File 'lib/puppet/settings/base_setting.rb', line 53 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.
209 210 211 |
# File 'lib/puppet/settings/base_setting.rb', line 209 def completely_deprecated? @deprecated == :completely end |
#deprecated? ⇒ Boolean
203 204 205 |
# File 'lib/puppet/settings/base_setting.rb', line 203 def deprecated? !!@deprecated end |
#getopt_args ⇒ Object
get the arguments in getopt format
58 59 60 61 62 63 64 |
# File 'lib/puppet/settings/base_setting.rb', line 58 def getopt_args if short [["--#{name}", "-#{short}", GetoptLong::REQUIRED_ARGUMENT]] else [["--#{name}", GetoptLong::REQUIRED_ARGUMENT]] end end |
#has_hook? ⇒ Boolean
80 81 82 |
# File 'lib/puppet/settings/base_setting.rb', line 80 def has_hook? @has_hook end |
#hook=(block) ⇒ Object
75 76 77 78 |
# File 'lib/puppet/settings/base_setting.rb', line 75 def hook=(block) @has_hook = true :handle, &block end |
#inspect ⇒ Object
219 220 221 |
# File 'lib/puppet/settings/base_setting.rb', line 219 def inspect %Q{<#{self.class}:#{self.object_id} @name="#{@name}" @section="#{@section}" @default="#{@default}" @call_hook="#{@call_hook}">} end |
#iscreated ⇒ Object
118 119 120 |
# File 'lib/puppet/settings/base_setting.rb', line 118 def iscreated @iscreated = true end |
#iscreated? ⇒ Boolean
122 123 124 |
# File 'lib/puppet/settings/base_setting.rb', line 122 def iscreated? @iscreated end |
#munge(value) ⇒ Object
Modify the value when it is first evaluated
181 182 183 |
# File 'lib/puppet/settings/base_setting.rb', line 181 def munge(value) value end |
#optparse_args ⇒ Object
get the arguments in OptionParser format
67 68 69 70 71 72 73 |
# File 'lib/puppet/settings/base_setting.rb', line 67 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
186 187 188 |
# File 'lib/puppet/settings/base_setting.rb', line 186 def print(value) munge(value) end |
#set_meta(meta) ⇒ Object
190 191 192 |
# File 'lib/puppet/settings/base_setting.rb', line 190 def () Puppet.notice("#{name} does not support meta data. Ignoring.") end |
#to_config ⇒ Object
Convert the object to a config statement.
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/puppet/settings/base_setting.rb', line 147 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(self.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.
176 177 178 |
# File 'lib/puppet/settings/base_setting.rb', line 176 def value(bypass_interpolation = false) @settings.value(self.name, nil, bypass_interpolation) end |