Add SNMP host to NOS device.

        Args:
            host_info (tuple(str, str)): Tuple of host IP and port.
            community (str): Community string to be added to device.
            callback (function): A function executed upon completion of the
                method.  The only parameter passed to `callback` will be the
                ``ElementTree`` `config`.

        Returns:
            Return value of `callback`.

        Raises:
            KeyError: if `host_info` or `community` is not defined.

def add_snmp_host(self, **kwargs):
        """
        Add SNMP host to NOS device.

        Args:
            host_info (tuple(str, str)): Tuple of host IP and port.
            community (str): Community string to be added to device.
            callback (function): A function executed upon completion of the
                method.  The only parameter passed to `callback` will be the
                ``ElementTree`` `config`.

        Returns:
            Return value of `callback`.

        Raises:
            KeyError: if `host_info` or `community` is not defined.
        """
        host_info = kwargs.pop('host_info')
        community = kwargs.pop('community')
        callback = kwargs.pop('callback', self._callback)

        config = ET.Element('config')
        snmp_server = ET.SubElement(config, 'snmp-server',
                                    xmlns=("urn:brocade.com:mgmt:"
                                           "brocade-snmp"))
        host = ET.SubElement(snmp_server, 'host')
        ip_addr = ET.SubElement(host, 'ip')
        ip_addr.text = host_info[0]
        com = ET.SubElement(host, 'community')
        com.text = community
        udp_port = ET.SubElement(host, 'udp-port')
        udp_port.text = host_info[1]
        return callback(config)