class CORL::Util::Puppet::Resource
Public Class Methods
new(group, info, title, properties = {})
click to toggle source
Calls superclass method
# File lib/core/util/puppet/resource.rb 12 def initialize(group, info, title, properties = {}) 13 super({ 14 :group => group, 15 :title => string(title), 16 :info => symbol_map(hash(info)), 17 :ready => false 18 }, {}, true, true, false) 19 20 import(properties) 21 end
render(resource_info, options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 125 def self.render(resource_info, options = {}) 126 resource = string_map(resource_info) 127 config = Config.ensure(options) 128 129 resource.keys.each do |name| 130 if match = name.to_s.match(/^(.+)_template$/) 131 target = match.captures[0] 132 133 config.set(:normalize_template, config.get("normalize_#{target}", true)) 134 config.set(:interpolate_template, config.get("interpolate_#{target}", true)) 135 136 input_data = resource[target] 137 plugin = CORL.template(config.import({ :new => true }), resource[name]) 138 resource[target] = plugin.render(input_data) 139 CORL.remove_plugin(plugin) 140 141 if config.get(:debug, false) 142 CORL.ui.info("\n", { :prefix => false }) 143 CORL.ui_group("#{resource[name]} template", :cyan) do |ui| 144 ui.info("-----------------------------------------------------") 145 146 source_dump = Console.blue(Data.to_json(input_data, true)) 147 value_render = Console.green(resource[target]) 148 149 ui.info("Data:\n#{source_dump}") 150 ui.info("Rendered:\n#{value_render}") 151 ui.info("\n", { :prefix => false }) 152 end 153 end 154 resource.delete(name) 155 end 156 end 157 return resource 158 end
Public Instance Methods
defaults(defaults, options = {})
click to toggle source
Calls superclass method
# File lib/core/util/puppet/resource.rb 62 def defaults(defaults, options = {}) 63 super(defaults, options) 64 65 _set(:ready, false) 66 return self 67 end
ensure_ready(options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 81 def ensure_ready(options = {}) 82 unless ready 83 process(options) 84 end 85 end
group()
click to toggle source
# File lib/core/util/puppet/resource.rb 26 def group 27 return _get(:group) 28 end
import(properties, options = {})
click to toggle source
Calls superclass method
# File lib/core/util/puppet/resource.rb 71 def import(properties, options = {}) 72 super(properties, options) 73 74 _set(:ready, false) 75 return self 76 end
info(default = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 32 def info(default = {}) 33 return hash(_get(:info, default)) 34 end
info=(info)
click to toggle source
# File lib/core/util/puppet/resource.rb 38 def info=info 39 _set(:info, hash(info)) 40 end
process(options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 89 def process(options = {}) 90 config = Config.ensure(options) 91 92 tag(config[:tag]) 93 render(config) 94 translate(config) 95 96 _set(:ready, true) # Ready for resource creation 97 return self 98 end
ready(default = false)
click to toggle source
# File lib/core/util/puppet/resource.rb 56 def ready(default = false) 57 return test(_get(:ready, default)) 58 end
render(options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 162 def render(options = {}) 163 resource = self.class.render(export, options) 164 clear 165 import(Config.ensure(resource).export, options) 166 return self 167 end
tag(tags, append = true)
click to toggle source
# File lib/core/util/puppet/resource.rb 102 def tag(tags, append = true) 103 unless Data.empty?(tags) 104 if tags.is_a?(String) 105 tags = tags.to_s.split(/\s*,\s*/) 106 else 107 tags = tags.flatten 108 end 109 resource_tags = get(:tag) 110 111 if ! resource_tags || ! append 112 set(:tag, tags) 113 else 114 tags.each do |tag| 115 resource_tags << tag unless resource_tags.include?(tag) 116 end 117 set(:tag, resource_tags) 118 end 119 end 120 return self 121 end
title(default = '')
click to toggle source
# File lib/core/util/puppet/resource.rb 44 def title(default = '') 45 return string(_get(:title, default)) 46 end
title=(info)
click to toggle source
# File lib/core/util/puppet/resource.rb 50 def title=info 51 _set(:title, string(info)) 52 end
translate(options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 171 def translate(options = {}) 172 config = Config.ensure(options) 173 174 set(:before, translate_resource_refs(get(:before), config)) if get(:before) 175 set(:notify, translate_resource_refs(get(:notify), config)) if get(:notify) 176 set(:require, translate_resource_refs(get(:require), config)) if get(:require) 177 set(:subscribe, translate_resource_refs(get(:subscribe), config)) if get(:subscribe) 178 179 return self 180 end
Protected Instance Methods
translate_resource_refs(resource_refs, options = {})
click to toggle source
# File lib/core/util/puppet/resource.rb 185 def translate_resource_refs(resource_refs, options = {}) 186 return :undef if Data.undef?(resource_refs) 187 188 config = Config.ensure(options) 189 resource_names = config.get(:resource_names, {}) 190 title_prefix = config.get(:title_prefix, '') 191 192 title_pattern = config.get(:title_pattern, '^\s*([^\[\]]+)\s*$') 193 title_group = config.get(:title_var_group, 1) 194 title_flags = config.get(:title_flags, '') 195 title_regexp = Regexp.new(title_pattern, title_flags.split('')) 196 197 allow_single = config.get(:allow_single_return, true) 198 199 type_name = info[:name].sub(/^\@?\@/, '') 200 values = [] 201 202 composite_resources = group.composite_resources 203 204 case resource_refs 205 when String 206 if resource_refs.empty? 207 return :undef 208 else 209 resource_refs = resource_refs.split(/\s*,\s*/) 210 end 211 212 when ::Puppet::Resource 213 resource_refs = [ resource_refs ] 214 end 215 216 resource_refs.collect! do |value| 217 if value.is_a?(::Puppet::Resource) || ! value.to_s.match(title_regexp) 218 value.to_s 219 220 elsif resource_names.has_key?(value.to_sym) 221 if ! title_prefix.empty? 222 "#{title_prefix}_#{value}" 223 else 224 value.to_s 225 end 226 227 elsif composite_resources.has_key?(value.to_sym) && ! composite_resources[value.to_sym].empty? 228 results = [] 229 composite_resources[value.to_sym].each do |resource_name| 230 unless title_prefix.empty? 231 resource_name = "#{title_prefix}_#{resource_name}" 232 end 233 results << resource_name 234 end 235 results 236 237 else 238 nil 239 end 240 end 241 242 resource_refs.flatten.each do |ref| 243 unless ref.nil? 244 unless ref.is_a?(::Puppet::Resource) 245 ref = ref.match(title_regexp) ? ::Puppet::Resource.new(type_name, ref) : ::Puppet::Resource.new(ref) 246 end 247 values << ref unless ref.nil? 248 end 249 end 250 251 return values[0] if allow_single && values.length == 1 252 return values 253 end