Project

General

Profile

Feature #2752

Updated by Dominic Cleal about 11 years ago

*Clone of #1963, which implemented this for facts, now needs doing for reports.* 

 

 Hi, 

 

 In our environment we're pondering patching Foreman to make the automatic host creation when facts/reports are uploaded *optional* based on a configuration parameter. 

 

 (models/hosts.rb; line 353) 
 
 <pre> 
 
 347     def self.importHostAndFacts yaml 
 
 348       facts = YAML::load yaml 
 
 349       return false unless facts.is_a?(Puppet::Node::Facts) 
 
 350  
  
 351       h = Host.find_by_certname facts.name 
 
 352       h ||= Host.find_by_name facts.name 
 
 353       h ||= Host.new :name => facts.name 
 
 [...] 
 
 </pre> 

 

 (models/report.rb; line 80) 
 
 <pre> 
  
  73     def self.import(yaml) 
  
  74       report = YAML.load(yaml) 
  
  75       raise "Invalid report" unless report.is_a?(Puppet::Transaction::Report) 
  
  76       logger.info "processing report for #{report.host}" 
  
  77       begin 
  
  78         host = Host.find_by_certname report.host 
  
  79         host ||= Host.find_by_name report.host 
  
  80         host ||= Host.new :name => report.host 
 
 [...] 
 
 </pre> 

 

 Foreman is not just a visualization/reporting tool for us, it's sort of a source of truth. Thus, we don't want hosts to be created automatically on Foreman when they chat to the puppet masters. Basically, if the host is not in Foreman it does not exist for us. 

 

 The patch is quite simple, but we'd like to discuss what you think about the new feature before submitting a pull request. 

 

 Thanks 
 
 N 
 

Back