Issue #2765 has been updated by Mr Paxos.

If you specify --no-fqdn, then the hostname should only be the CN.  If the 
--no-fqdn option is not specified, the hostname should be assembled by 
concatenating the CN with all the DN's.

Earlier versions of puppetrun had this functionality.  0.25.1 seems to operate 
as if --no-fqdn is always set. 

----------------------------------------
Bug #2765: puppetrun --no-fqdn configuration option seems broken
http://projects.reductivelabs.com/issues/2765

Author: Mr Paxos
Status: Accepted
Priority: Normal
Assigned to: Bruce Williams
Category: SSL
Target version: 0.25.2
Affected version: 0.25.1
Keywords: puppetrun ldap fqdn no-fqdn certificates certificate-names
Branch: 


puppetrun as of 0.25.1 always uses the cn= value of the dn: as the entire 
node's hostname.

Earlier versions (I checked 0.23.2) of puppetrun would default to building a 
fqdn using the cn= and dc= fields on the dn:.  Puppetrun could be instructed to 
only use the cn= value for the hostname by using the configuration option 
--no-fqdn.

The ability to construct the fqdn using the dc= fields is important when 
managing subdomains.  Take for instance the following two dn:'s,

 dn: cn=alpha,ou=Hosts,dc=sub1,dc=example,dc=com
dn: cn=alpha,ou=Hosts,dc=sub2,dc=example,dc=com

With the current logic in puppetrun, these two different dn:'s would evaluate 
to 'alpha' which is a bit ambiguous.  The work-around is to put the fqdn into 
the cn= field.  However, this breaks other uses of ldap.

I tried to add this functionality back into puppetrun.  Be advised that I do 
not speak ruby at all.  Take the following diff's as a proof of concept and 
nothing more.

<pre>
--- /usr/lib64/ruby/site_ruby/1.8/puppet/indirector/node/ldap.rb        
2009-10-30 17:43:20.000000000 -0700
+++ ldap.rb     2009-10-30 17:42:52.000000000 -0700
@@ -55,7 +55,7 @@
         end
 
         infos = []
-        ldapsearch(filter) { |entry| infos << entry2hash(entry) }
+        ldapsearch(filter) { |entry| infos << entry2hash(entry, 
request.options[:fqdn]) }
 
         return infos.collect do |info|
             info2node(info[:name], info)
@@ -78,9 +78,15 @@
     end
 
     # Convert the found entry into a simple hash.
-    def entry2hash(entry)
+    def entry2hash(entry, fqdn = true)
         result = {}
-        result[:name] = entry.dn.split(',')[0].split("=")[1]
+
+       if fqdn
+               result[:name] = entry.dn.sub("cn=",'').sub(/ou=hosts,/i, 
'').gsub(",dc=",".")
+       else
+               result[:name] = entry.dn.split(',')[0].split("=")[1]
+       end
+
         result[:parent] = get_parent_from_entry(entry) if parent_attribute
         result[:classes] = get_classes_from_entry(entry)
         result[:stacked] = get_stacked_values_from_entry(entry)




--- /usr/lib64/ruby/site_ruby/1.8/puppet/application/puppetrun.rb       
2009-10-30 17:43:19.000000000 -0700
+++ puppetrun.rb        2009-10-30 17:43:07.000000000 -0700
@@ -176,12 +176,12 @@
 
         if Puppet[:node_terminus] == "ldap" and (options[:all] or @classes)
             if options[:all]
-                @hosts = Puppet::Node.search("whatever").collect { |node| 
node.name }
+                @hosts = Puppet::Node.search("whatever", :fqdn => 
options[:fqdn]).collect { |node| node.name }
                 puts "all: %s" % @hosts.join(", ")
             else
                 @hosts = []
                 @classes.each do |klass|
-                    list = Puppet::Node.search("whatever", :class => 
klass).collect { |node| node.name }
+                    list = Puppet::Node.search("whatever", :fqdn => 
options[:fqdn], :class => klass).collect { |node| node.name }
                     puts "%s: %s" % [klass, list.join(", ")]
 
                     @hosts += list
</pre>

 


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://reductivelabs.com/redmine/my/account

--

You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.


Reply via email to