[I use perl + SWIS because the API just works, I've been writing perl code for over 20 years, ]
yes, separate calls. :-(
$poller is one of the strings
I've never had AddPoller fail -- it feels like there is no error checking on the server-side for Create operations given a valid nodeid.
I seem to remember that it will add duplicate pollers, and pollers that do not actually exist.
In my code, this is called immediately after Creating a Node, so I know that there are no node-pollers assigned yet.
I have a chunk of code that matches the OID of the device, and adds the pollers to it.
e.g.
if (index($oid,"1.3.6.1.4.1.2636")==0) {
&add_poller($AddedNode,"N.Cpu.SNMP.JuniperJunOS");
&add_poller($AddedNode,"N.Memory.SNMP.JuniperJunOS");
&add_poller($AddedNode,'N.Topology_Layer3.SNMP.ipNetToMedia') if (index($oid,'1.3.6.1.4.1.2636.1.1.1.2.18')==0);
&add_poller($AddedNode,'N.Topology_Layer3.SNMP.ipNetToMedia') if (index($oid,'1.3.6.1.4.1.2636.1.1.1.2.24')==0);
&add_poller($AddedNode,'N.Topology_Layer3.SNMP.ipNetToMedia') if (index($oid,'1.3.6.1.4.1.2636.1.1.1.2.25')==0);
&add_poller($AddedNode,'N.Topology_Layer3.SNMP.ipNetToMedia') if (index($oid,'1.3.6.1.4.1.2636.1.1.1.2.57')==0);
};
In another universe I'd pass an array of pollers to the system and it would do that for me, or have an asynchronous API where I just stream requests a-la-SNMP and match the replies up with them...