Looks like its not working with compound filters,

# mco rpc rpcutil ping --do /data/mcollective_inventory/ --dm 
registrationmonitor -S "osfamily=Solaris and hostname=/gard/"
Discovering hosts using the mc method for 2 second(s) .... 26

And the same working with --nodes and it says,

The rpc application failed to run, use -v for full error backtrace details: 
Cannot mix --disc-method, --disc-option and --nodes


Regards
Ravi

On Saturday, March 11, 2017 at 10:27:37 PM UTC+5:30, Ravi Kumar wrote:
>
> 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.pluginconf["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/mcollective_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/master/agent/registration-monitor/discovery/registrationmonitor.rb#L45
>>>>  
>>>>
>>>> will probably have to similarly change :facts here 
>>>>
>>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L72-L82
>>>>  
>>>>
>>>> and :classes 
>>>>
>>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/agent/registration-monitor/discovery/registrationmonitor.rb#L93
>>>>  
>>>>
>>>> and :agentlist 
>>>>
>>>> https://github.com/puppetlabs/mcollective-plugins/blob/master/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-noarch: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: 
>>>> > 
>>>> AAAAB3NzaC1kc3MAAACBAM8zDRlclm28o9xRTMmSYtP8D8V2HgZsKH2m5LY3UqUeOa5L4NamZHEECC18Gd1ZnmAVEFplfQGzaOsOVe3ldx3OVY7/VHGkfAwHRiWNsf8ni87CUzx7Ayt+d0j5dlCbeZXtlpXO0dqFA7NGVn7UGTX+oE2wUFGOe8zaT6FZZf19AAAAFQCyCeA3YrZCT3TJ9ysC2aHI4KqdrwAAAIEAlznBnQRMPrfwp5wtqK/gXWnsTgf8rkHvnXeNoRc+HzJ6tmJvYJebNHk6JBQu4cjfZSFD23DRec45S4/d9DGEodsh80m1IH7dnqi57V2B4OjwjlBjB9jqOBcxMUUBcJhDF498uA3Al31wEaFLoAAACBALkLN0KW4kK2G+5kxVMOQglhaxouu5n+r7QbGiuB5n/anzMgKHA0XOiGYn6yXW9hN2BSudq3QGyW2Bze73qadjLwd7RozhTyYD1B/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-5cba-460e-a035-29e093d5998dsda2size10474380filesystemext4mount/usruuida1422e95-3b47-4e7b-b021-3a8dba7a001bsda3size6281415filesystemext4mount/varuuid6e2a7fcc-7a79-4a12-86f8-bec1ab40a5b0sda4size2sda5size8385929filesystemext4mount/oemuuid3c96ed2e-5a93-4ca2-b2ef-4617c8f81c98sda6size8385929filesystemext4uuid0c0ba91b-f6e8-478c-a23e-5d889cfbe940sda7size2120579filesystemext4mount/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" 
>>>> >   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: 
>>>> > 
>>>> AAAAB3NzaC1yc2EAAAABIwAAAQEApQc3boaYakhnFwersascMZs9emkYynhugKOY4l7duN4zkxflYysVDKfjvo9+bDDmXaZL9IVZfeFriGrqtw05IDumDGLZqEoOGYkoE/c4cyzRGLh/ROJqkLgM8fhlvi0DlnTuSMAjQagT6RwK+nGj6+mrPVg/Jjh3M57ecorgZAPm37mw3xS2Ks9MzcZ7hiHujxbNEogamFrRkOb9ZK9jzj0DXRDmlS01U0hFWv0P9YKTRI6iBIG1r+G+uZo84Z56qEvYWA+74PZD0DgtJIVUB65CBMXnX/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-plugins/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/topic/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