[PATCH/foreman 1/1] fixes #1179 - exposes foreman attributes in enc this includes:

  • hostgroup
  • root password (when in unattended mode)
  • foreman env (workaround for puppet enc bug)
  • owner name
  • owner email (or array of emails if its a group)

Signed-off-by: Ohad Levy <ohadlevy@gmail.com>

··· --- app/models/host.rb | 10 +++++++++- test/unit/host_test.rb | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/app/models/host.rb b/app/models/host.rb
index 39e02ed…40ce2af 100644
— a/app/models/host.rb
+++ b/app/models/host.rb
@@ -258,6 +258,14 @@ class Host < Puppet::Rails::Host
# maybe these should be moved to the common parameters, leaving them in for now
param[“puppetmaster”] = puppetmaster.to_s
param[“domainname”] = domain.fullname unless domain.nil? or domain.fullname.nil?

  • param[“hostgroup”] = hostgroup.name unless hostgroup.nil?
  • param[“root_pw”] = root_pass if SETTINGS[:unattended]
  • param[“foreman_env”] = environment.to_s unless environment.nil? or environment.name.nil?
  • if SETTINGS[:login]
  •  param["owner_name"]  = owner.name
    
  •  param["owner_email"] = owner.is_a?(User) ? owner.mail : owner.users.map(&:mail)
    
  • end
  • if Setting[:ignore_puppet_facts_for_provisioning]
    param[“ip”] = ip
    param[“mac”] = mac
    @@ -267,7 +275,7 @@ class Host < Puppet::Rails::Host
    info_hash = {}
    info_hash[‘classes’] = self.puppetclasses_names
    info_hash[‘parameters’] = param
  • info_hash[‘environment’] = environment.to_s unless environment.nil? or environment.name.nil?
  • info_hash[‘environment’] = param[“foreman_env”]

    return info_hash
    end
    diff --git a/test/unit/host_test.rb b/test/unit/host_test.rb
    index b9a4d9b…d71bfe8 100644
    — a/test/unit/host_test.rb
    +++ b/test/unit/host_test.rb
    @@ -114,7 +114,9 @@ class HostTest < ActiveSupport::TestCase

    dummy external node info

    nodeinfo = {“environment” => “global_puppetmaster”,

  •  "parameters"=> {"puppetmaster"=>"puppet", "MYVAR"=>"value", "port" => "80", "ssl_port" => "443"},
    
  •  "parameters"=> {"puppetmaster"=>"puppet", "MYVAR"=>"value", "port" => "80",
    
  •    "ssl_port" => "443", "foreman_env"=> "global_puppetmaster", "owner_name"=>"Admin User",
    
  •    "root_pw"=>"xybxa6JUkz63w", "owner_email"=>"admin@someware.com"},
     "classes"=>["apache", "base"]}
    

    host.importNode nodeinfo

    1.7.6.2