<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)