class ChefNodeNameBuilder DEFAULT_MASK = '$project-$cfname-$env' def initialize(server_info, project, env) @server_info, @project, @env = server_info, project, env @mask = server_info['tags']['cid:node-name-mask'] || DEFAULT_MASK end def build_node_name result = @mask.dup replace_dollar_variables!(result) replace_colon_variables!(result) result.gsub!('_', '-') result end private def replace_dollar_variables!(result) result.gsub!('$project', @project.id) result.gsub!('$env', @env.identifier) result.gsub!('$instanceid', @server_info['id']) result.gsub!('$cfname', @server_info['tags']['Name'] || '') result.gsub!('$time', Time.now.to_i.to_s) end def replace_colon_variables!(result) result.gsub!(':project', @project.id) result.gsub!(':env', @env.identifier) result.gsub!(':instanceid', @server_info['id']) result.gsub!(':cfname', @server_info['tags']['Name'] || '') result.gsub!(':time', Time.now.to_i.to_s) end end