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.
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 117 |
# File 'lib/puppet/settings/base_setting.rb', line 86 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.
8 9 10 |
# File 'lib/puppet/settings/base_setting.rb', line 8 def call_hook @call_hook end |
#default(check_application_defaults_first = false) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/puppet/settings/base_setting.rb', line 133 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 return @settings.value(name, :application_defaults, true) || default_value end |
#deprecated ⇒ Object
Returns the value of attribute deprecated.
8 9 10 |
# File 'lib/puppet/settings/base_setting.rb', line 8 def deprecated @deprecated end |
#desc ⇒ Object
Returns the value of attribute desc.
7 8 9 |
# File 'lib/puppet/settings/base_setting.rb', line 7 def desc @desc end |
#name ⇒ Object
Returns the value of attribute name.
7 8 9 |
# File 'lib/puppet/settings/base_setting.rb', line 7 def name @name end |
#section ⇒ Object
Returns the value of attribute section.
7 8 9 |
# File 'lib/puppet/settings/base_setting.rb', line 7 def section @section end |
#short ⇒ Object
Returns the value of attribute short.
8 9 10 |
# File 'lib/puppet/settings/base_setting.rb', line 8 def short @short end |
Class Method Details
.available_call_hook_values ⇒ Object
28 29 30 |
# File 'lib/puppet/settings/base_setting.rb', line 28 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
216 217 218 |
# File 'lib/puppet/settings/base_setting.rb', line 216 def allowed_on_commandline? @deprecated == :allowed_on_commandline end |
#call_hook_on_define? ⇒ Boolean
49 50 51 |
# File 'lib/puppet/settings/base_setting.rb', line 49 def call_hook_on_define? call_hook == :on_define_and_write end |
#call_hook_on_initialize? ⇒ Boolean
54 55 56 |
# File 'lib/puppet/settings/base_setting.rb', line 54 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.
210 211 212 |
# File 'lib/puppet/settings/base_setting.rb', line 210 def completely_deprecated? @deprecated == :completely end |
#deprecated? ⇒ Boolean
204 205 206 |
# File 'lib/puppet/settings/base_setting.rb', line 204 def deprecated? !!@deprecated end |
#getopt_args ⇒ Object
get the arguments in getopt format
59 60 61 62 63 64 65 |
# File 'lib/puppet/settings/base_setting.rb', line 59 def getopt_args if short [["--#{name}", "-#{short}", GetoptLong::REQUIRED_ARGUMENT]] else [["--#{name}", GetoptLong::REQUIRED_ARGUMENT]] end end |
#has_hook? ⇒ Boolean
81 82 83 |
# File 'lib/puppet/settings/base_setting.rb', line 81 def has_hook? @has_hook end |
#hook=(block) ⇒ Object
76 77 78 79 |
# File 'lib/puppet/settings/base_setting.rb', line 76 def hook=(block) @has_hook = true :handle, &block end |
#inspect ⇒ Object
220 221 222 |
# File 'lib/puppet/settings/base_setting.rb', line 220 def inspect %Q{<#{self.class}:#{self.object_id} @name="#{@name}" @section="#{@section}" @default="#{@default}" @call_hook="#{@call_hook}">} end |
#iscreated ⇒ Object
119 120 121 |
# File 'lib/puppet/settings/base_setting.rb', line 119 def iscreated @iscreated = true end |
#iscreated? ⇒ Boolean
123 124 125 |
# File 'lib/puppet/settings/base_setting.rb', line 123 def iscreated? @iscreated end |
#munge(value) ⇒ Object
Modify the value when it is first evaluated
182 183 184 |
# File 'lib/puppet/settings/base_setting.rb', line 182 def munge(value) value end |
#optparse_args ⇒ Object
get the arguments in OptionParser format
68 69 70 71 72 73 74 |
# File 'lib/puppet/settings/base_setting.rb', line 68 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
187 188 189 |
# File 'lib/puppet/settings/base_setting.rb', line 187 def print(value) munge(value) end |
#set_meta(meta) ⇒ Object
191 192 193 |
# File 'lib/puppet/settings/base_setting.rb', line 191 def () Puppet.notice("#{name} does not support meta data. Ignoring.") end |
#to_config ⇒ Object
Convert the object to a config statement.
148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/puppet/settings/base_setting.rb', line 148 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.
177 178 179 |
# File 'lib/puppet/settings/base_setting.rb', line 177 def value(bypass_interpolation = false) @settings.value(self.name, nil, bypass_interpolation) end |