Nevermind. Its working fine now. In my setup the registration data will
send for every 24hours, so I had to increase the criticalage to 86400 to
made it work.

Thanks for your help!

On Sat, Mar 11, 2017 at 4:19 PM, Ravi Kumar <[email protected]> wrote:

> Sure. Am trying that but not getting the details on mcollective_client.log
> file.
>
> below I added puts to print the data
>
>       def self.parse_hosts(dir, hosts)
>         data = {}
>         hosts.each do |host|
>           data[host] = YAML.load(File.read("#{dir}/#{host}"))
>           puts "host ::::: #{data[host]}"
>         end
>         data
>       end
>
>
>
> Thanks
> ravi
>
> On Sat, Mar 11, 2017 at 2:28 PM, R.I. Pienaar <[email protected]> wrote:
>
>>
>> On 11 Mar 2017, at 09:35, [email protected] wrote:
>>
>> I tried as you said and below the registrationmonitor.rb content.
>>
>>
>> Not sure. You will have to do your own debugging. Add logging lines and
>> see what goes wrong
>>
>> I don't know this plugging really
>>
>>
>>
>> ================================
>> # discovers against directory of yaml files instead of the traditional
>> network discovery
>> # the input must be a directory of files as written out by the
>> registration-monitor plugin
>> require 'mcollective/rpc/helpers'
>> require 'yaml'
>>
>> module MCollective
>>   class Discovery
>>     class Registrationmonitor
>>       def self.parse_hosts(dir, hosts)
>>         data = {}
>>         hosts.each do |host|
>>           data[host] = YAML.load(File.read("#{dir}/#{host}"))
>>         end
>>         data
>>       end
>>
>>       def self.discover(filter, timeout, limit=0, client=nil)
>>         newerthan = Time.now.to_i - Integer(Config.instance.plugin
>> conf["registration.criticalage"] || 86400)
>>
>>         unless client.options[:discovery_options].empty?
>>           directory = client.options[:discovery_options].last
>>         else
>>           raise("Need --discovery_options to a directory")
>>         end
>>
>>         discovered = []
>>         Dir.new(directory).each do |file|
>>           next if file =~ /^\.\.?$/
>>           if File.mtime("#{directory}/#{file}").to_i >= newerthan
>>             discovered.push file
>>           end
>>         end
>>
>>         discovered.map do |host|
>>           raise "Identities can only match /\w\.\-/, host #{host} does
>> not match" unless host.match(/^[\w\.\-]+$/)
>>           host
>>         end
>>
>>         filter['identity'].each do |identity|
>>           discovered = discovered.grep regexy_string(identity)
>>         end
>>
>>         parsed_hostdata = parse_hosts(directory, discovered)
>>
>>         discovered = discovered.select { |identity|
>> parsed_hostdata[identity]["collectives"].include?(client.options[:collective])
>> }
>>
>>         filter.keys.each do |key|
>>           case key
>>             when "fact"
>>               discovered = fact_search(filter["fact"], discovered,
>> parsed_hostdata)
>>
>>             when "cf_class"
>>               discovered = class_search(filter["cf_class"], discovered,
>> parsed_hostdata)
>>
>>             when "agent"
>>               discovered = agent_search(filter["agent"], discovered,
>> parsed_hostdata)
>>
>>             when "identity"
>>           end
>>         end
>>         discovered
>>       end
>>
>>       def self.fact_search(filter, collection, parsed_hostdata)
>>         filter.each do |f|
>>           fact = f[:fact]
>>           value = f[:value]
>>           re = regexy_string(value)
>>
>>           case f[:operator]
>>             when "==", "=~"
>>               collection = collection.select { |identity|
>> re.match(parsed_hostdata[identity]["facts"][fact]) }
>>             when "<="
>>               collection = collection.select { |identity| value <=
>> parsed_hostdata[identity]["facts"][fact] }
>>             when ">="
>>               collection = collection.select { |identity| value >=
>> parsed_hostdata[identity]["facts"][fact] }
>>             when "<"
>>               collection = collection.select { |identity| value <
>> parsed_hostdata[identity]["facts"][fact] }
>>             when ">"
>>               collection = collection.select { |identity| value >
>> parsed_hostdata[identity]["facts"][fact] }
>>             when "!="
>>               collection = collection.select { |identity|
>> !re.match(parsed_hostdata[identity]["facts"][fact]) }
>>             else
>>               raise "Cannot perform %s matches for facts using the
>> registrationmonitor discovery method" % f[:operator]
>>           end
>>         end
>>         collection
>>       end
>>
>>       def self.class_search(filter, collection, parsed_hostdata)
>>         filter.each do |f|
>>           re = regexy_string(f)
>>           collection = collection.select { |identity|
>> parsed_hostdata[identity]["classes"].find { |klass| re.match(klass) } }
>>         end
>>         collection
>>       end
>>
>>       def self.agent_search(filter, collection, parsed_hostdata)
>>         filter.each do |f|
>>           re = regexy_string(f)
>>           collection = collection.select { |identity|
>> parsed_hostdata[identity]["agentlist"].find { |klass| re.match(klass) } }
>>         end
>>         collection
>>       end
>>
>>       def self.regexy_string(string)
>>         if string.match("^/")
>>           Regexp.new(string.gsub("\/", ""))
>>         else
>>           Regexp.new("^#{string}$")
>>         end
>>       end
>>     end
>>   end
>> end
>> =======================
>>
>> But when run mco command getting "No request sent, we did not discover
>> any nodes."
>>
>> # mco shell "uname -a" --do /data/mcollective_inventory/ --dm
>> registrationmonitor -v -I testserver123
>> Discovering hosts using the registrationmonitor method .... 0
>>
>>
>> No request sent, we did not discover any nodes.
>> #
>>
>> Also I tried to parse that yaml file in the same way mentioned on
>> registrationmonitor.rb and it working.
>>
>> irb(main):004:0> require 'rubygems'
>> => true
>> irb(main):005:0> require 'yaml'
>> => true
>> irb(main):006:0> data[host] = YAML.load(File.read("/data/mco
>> llective_inventory/testserver123 "))
>> => {"collectives"=>["mcollective"], "facts"=>{"hardwareisa"=>"x86_64",
>> .
>> .
>> .
>> irb(main):007:0>
>> irb(main):016:0> parsed_hostdata = data
>> irb(main):022:0> parsed_hostdata["testserver123 "]["facts"]["hostname"]
>> => "testserver123 "
>> irb(main):023:0>
>>
>>
>>
>> Thanks
>> Ravi
>>
>> On Saturday, March 11, 2017 at 12:12:35 PM UTC+5:30, R.I.Pienaar wrote:
>>>
>>> change :collectives to "collectives":
>>>
>>> https://github.com/puppetlabs/mcollective-plugins/blob/maste
>>> r/agent/registration-monitor/discovery/registrationmonitor.rb#L45
>>>
>>> will probably have to similarly change :facts here
>>> https://github.com/puppetlabs/mcollective-plugins/blob/maste
>>> r/agent/registration-monitor/discovery/registrationmonitor.rb#L72-L82
>>>
>>> and :classes
>>> https://github.com/puppetlabs/mcollective-plugins/blob/maste
>>> r/agent/registration-monitor/discovery/registrationmonitor.rb#L93
>>>
>>> and :agentlist
>>> https://github.com/puppetlabs/mcollective-plugins/blob/maste
>>> r/agent/registration-monitor/discovery/registrationmonitor.rb#L101
>>>
>>> On Sat, Mar 11, 2017, at 07:06, [email protected] wrote:
>>> > Here is that server inventory data file,
>>> >
>>> > =========================================================
>>> > ---
>>> > identity: testserver123
>>> > facts:
>>> >   uptime: 383 days
>>> >   memoryfree: 5.68 GB
>>> >   title: main
>>> >   ps: ps -ef
>>> >   memoryfree_mb: "5816.89"
>>> >   lsbrelease:
>>> > ":base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noa
>>> rch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch"
>>>
>>> >   memorysize_mb: "8015.77"
>>> >   servername: testserver123.server.com
>>> >   path: /sbin:/usr/sbin:/bin:/usr/bin
>>> >   root_home: /root
>>> >   sshfp_dsa: |-
>>> >     SSHFP 2 1 37250f7d9eac0e059b6556ddcf6a885750859b4a
>>> >     SSHFP 2 2
>>> > ae228dc1547003913e9b545ad7b04a994266ed66a73d4412cbca9f24437886f6
>>> >   id: root
>>> >   swapfree: 7.98 GB
>>> >   memorysize: 7.83 GB
>>> >   rubysitedir: /usr/lib/ruby/site_ruby/1.8
>>> >   domain: server.com
>>> >   uptime_days: "383"
>>> >   network_eth1: xx.xx.xx.xx
>>> >   uptime_seconds: "35787609"
>>> >   kernel: Linux
>>> >   concat_basedir: /var/lib/puppet/concat
>>> >   macaddress_eth0: 00:23:C6:DD:00:01
>>> >   clientnoop: "false"
>>> >   serverip: xx.xx.xx.xx
>>> >   netmask_eth0: xx.xx.xx.xx
>>> >   facterversion: 2.1.0
>>> >   augeasversion: 1.0.0
>>> >   ipaddress_eth0: xx.xx.xx.xx
>>> >   selinux: "false"
>>> >   is_virtual: "true"
>>> >   processor3: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
>>> >   blockdevice_sdb_size: "2097152"
>>> >   kernelversion: 3.8.13
>>> >   processor0: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
>>> >   interfaces: eth0,eth1,lo
>>> >   rubyversion: 1.8.7
>>> >   sshdsakey:
>>> > AAAAB3NzaC1kc3MAAACBAM8zDRlclm28o9xRTMmSYtP8D8V2HgZsKH2m5LY3
>>> UqUeOa5L4NamZHEECC18Gd1ZnmAVEFplfQGzaOsOVe3ldx3OVY7/VHGkfAwH
>>> RiWNsf8ni87CUzx7Ayt+d0j5dlCbeZXtlpXO0dqFA7NGVn7UGTX+oE2wUFGO
>>> e8zaT6FZZf19AAAAFQCyCeA3YrZCT3TJ9ysC2aHI4KqdrwAAAIEAlznBnQRM
>>> Prfwp5wtqK/gXWnsTgf8rkHvnXeNoRc+HzJ6tmJvYJebNHk6JBQu4cjfZSFD
>>> 23DRec45S4/d9DGEodsh80m1IH7dnqi57V2B4OjwjlBjB9jqOBcxMUUBcJhD
>>> F498uA3Al31wEaFLoAAACBALkLN0KW4kK2G+5kxVMOQglhaxouu5n+r7QbGi
>>> uB5n/anzMgKHA0XOiGYn6yXW9hN2BSudq3QGyW2Bze73qadjLwd7RozhTyYD
>>> 1B/AX1QkLgiFIV825vrAVD/iQT56mc7QIgySXibMaptNgufd+5F/iXQnyQRTt1bjI3zR6fR4hZ
>>>
>>> >   uptime_hours: "9196"
>>> >   puppet_vardir: /var/lib/puppet
>>> >   ip6tables_version: 1.4.7
>>> >   lsbdistcodename: n/a
>>> >   blockdevices: sda,sdb,sdc
>>> >   virtual: xen
>>> >   netmask: xx.xxx.xx.xx
>>> >   operatingsystem: Linux
>>> >   puppetversion: 3.6.2
>>> >   ipaddress_lo: 127.0.0.1
>>> >   hostname: testserver123
>>> >   macaddress_eth1: 00:21:F6:FF:0E:01
>>> >   partitions: sdb1size4095filesystemmsdos" UUID="S2DC-F4ED"
>>> > TYPE="vfatsda1size4192964filesystemext4mount/uuid927645ac-5c
>>> ba-460e-a035-29e093d5998dsda2size10474380filesystemext4mount
>>> /usruuida1422e95-3b47-4e7b-b021-3a8dba7a001bsda3size6281415f
>>> ilesystemext4mount/varuuid6e2a7fcc-7a79-4a12-86f8-bec1ab40a5
>>> b0sda4size2sda5size8385929filesystemext4mount/oemuuid3c96ed2
>>> e-5a93-4ca2-b2ef-4617c8f81c98sda6size8385929filesystemext4uu
>>> id0c0ba91b-f6e8-478c-a23e-5d889cfbe940sda7size2120579filesys
>>> temext4mount/homeuuid29fc3979-70e6-4638-ac42-867306d2bca4
>>> >   swapsize_mb: "8192.00"
>>> >   netmask_eth1: xx.xx.xx.xx
>>> >   netmask_lo: 255.0.0.0
>>> >   ipaddress_eth1: xx.xx.xx.xx
>>> >   architecture: x86_64
>>> >   physicalprocessorcount: "1"
>>> >   macaddress: 33:DD:43:GD:23
>>> >   processor1: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
>>> >   osfamily: RedHat
>>> >   lsbdistrelease: "6.7"
>>> >   mtu_eth0: "1500"
>>> >   blockdevice_sdc_size: "8589934592 <(858)%20993-4592>"
>>> >   network_lo: 127.0.0.0
>>> >   kernelrelease: 3.8.13-98.4.el6.x86_64
>>> >   ipaddress: xx.xx.xx.xx
>>> >   lsbdistdescription: Linux Server release 6.7
>>> >   swapfree_mb: "8172.21"
>>> >   processorcount: "4"
>>> >   fqdn: testserver123.server.com
>>> >   mtu_lo: "65536"
>>> >   sshrsakey:
>>> > AAAAB3NzaC1yc2EAAAABIwAAAQEApQc3boaYakhnFwersascMZs9emkYynhu
>>> gKOY4l7duN4zkxflYysVDKfjvo9+bDDmXaZL9IVZfeFriGrqtw05IDumDGLZ
>>> qEoOGYkoE/c4cyzRGLh/ROJqkLgM8fhlvi0DlnTuSMAjQagT6RwK+nGj6+mr
>>> PVg/Jjh3M57ecorgZAPm37mw3xS2Ks9MzcZ7hiHujxbNEogamFrRkOb9ZK9j
>>> zj0DXRDmlS01U0hFWv0P9YKTRI6iBIG1r+G+uZo84Z56qEvYWA+74PZD0Dgt
>>> JIVUB65CBMXnX/k/WwRqXxGVKxTG72zOe6V2+QCErO7toasdweASFfwe==
>>> >   sshfp_rsa: |-
>>> >     SSHFP 1 1 931fd4af50028d8234asdewr232a76443200af86fd
>>> >     SSHFP 1 2 2cbc81201f0c9ca831734sc234f2135f23fd130c323653db0b2c0
>>> >   blockdevice_sda_size: "20402143232"
>>> >   network_eth0: xx.xx.xx.xx
>>> >   is_pe: "false"
>>> >   lsbmajdistrelease: "6"
>>> >   iptables_version: 1.4.7
>>> >   filesystems: ext4,iso9660,vfat
>>> >   hardwareisa: x86_64
>>> >   gemhome: /usr/lib/ruby/gems/1.8
>>> >   operatingsystemrelease: "6.7"
>>> >   swapsize: 8.00 GB
>>> >   allow_virtual_packages: "false"
>>> >   uniqueid: sdf32345f
>>> >   processor2: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz
>>> >   serverversion: 3.6.2
>>> >   operatingsystemmajrelease: "6"
>>> >   clientversion: 3.6.2
>>> >   mtu_eth1: "1500"
>>> >   hardwaremodel: x86_64
>>> >   clientcert: testserver123
>>> >   timezone: CST
>>> >   kernelmajversion: "3.8"
>>> >   lsbdistid: LinuxServer
>>> > agentlist:
>>> > - nrpe
>>> > - puppet
>>> > - package
>>> > - discovery
>>> > - rpcutil
>>> > - shell
>>> > - service
>>> > classes: []
>>> >
>>> > collectives:
>>> > - mcollective
>>> > =========================================
>>> >
>>> > On Saturday, March 11, 2017 at 11:22:21 AM UTC+5:30, R.I.Pienaar
>>> wrote:
>>> > >
>>> > >
>>> > >
>>> > > On Sat, Mar 11, 2017, at 06:46, [email protected] <javascript:>
>>> wrote:
>>> > > > Hey,
>>> > > >
>>> > > > No I did not make any change on that file. I just simply
>>> downloaded .rb
>>> > > > and
>>> > > > .ddl files
>>> > > > from
>>> > > >
>>> > > https://raw.githubusercontent.com/puppetlabs/mcollective-plu
>>> gins/master/agent/registration-monitor/discovery/
>>> > > > and tried.
>>> > >
>>> > > error suggest the data file is not in the correct format, so show a
>>> data
>>> > > file.
>>> > >
>>> > > Still, a different line in that file would make the error than what
>>> your
>>> > > error shows.
>>> > >
>>> >
>>> > --
>>> >
>>> > ---
>>> > You received this message because you are subscribed to the Google
>>> Groups
>>> > "mcollective-users" group.
>>> > To unsubscribe from this group and stop receiving emails from it, send
>>> an
>>> > email to [email protected].
>>> > For more options, visit https://groups.google.com/d/optout.
>>>
>>>
>>> --
>>> R.I.Pienaar / www.devco.net / @ripienaar
>>>
>> --
>>
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "mcollective-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>> --
>>
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "mcollective-users" group.
>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>> pic/mcollective-users/JZ_6eBGeTqM/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"mcollective-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to