[% # Return an array of shared IPs from the interface of a given # type for all nodes which act as a given role # # @param argv.role The role of the node to process # One of: proxy, lb, mgmt # @param argv.type The interface type of a node to extract # the shared ip from # One of: web_int, web_ext, sip_int, sip_ext, ... # @return out The array of shared ips -%] [% blktmp.processed_hosts = {} -%] [% out = [] -%] [% FOREACH host IN hosts.keys -%] [% IF hosts.$host.role.grep('^' _ argv.role _ '$').size() && !blktmp.processed_hosts.$host.defined -%] [% FOREACH iface IN hosts.$host.interfaces -%] [% FOREACH realiface IN hosts.$host.keys -%] [% IF realiface == iface -%] [% IF hosts.$host.$realiface.type.grep('^' _ argv.type _ '$').size() -%] [% peer = hosts.$host.peer -%] [% blktmp.processed_hosts.$peer = 1 -%] [% FOREACH ip IN hosts.$host.$realiface.shared_ip -%] [% out.push(ip) -%] [% END -%] [% END -%] [% END -%] [% END -%] [% END -%] [% END -%] [% END -%]