34 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1013 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 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 | 
