Oh right, sorry. There would be two major parts to this. The first would be to write a property source. Apply that property source to anything using 'hasCategory("collector")' as the AppliesTo. Write a script to set the IP addresses you want that collector to ping as a property (collectorpeers.ips for example). You could use the LM API to get the IP addresses of the collectors, although that could be version 1.1.
Then you need to work on the pingMulti datasource. Even if you're not using this for something else already, clone it and make the changes to the clone. Apply it to any device that has the property you set in the property source. Then enable active discovery and use a script like this to create the instances:
try{
hostProps.get("collectorpeers.ips").tokenize(",").each{
target = it.tokenize("|")
println(target[0] + "##" + target[1])
}
return 0
} catch (Exception e){return 1}
This assumes that the value of the property set by your property source is: ip1|name1,ip2|name2,ip3|name3,etc.
Discovery will get the instances created, which will be the list of all IPs of all collectors.