<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_dhcp_interface(self, interface_id, dynamic_index, zone_ref=None, vlan_id=None, comment=None):
 """ Add a DHCP interface on a single FW :param int interface_id: interface id :param int dynamic_index: index number for dhcp interface :param bool primary_mgt: whether to make this primary mgt :param str zone_ref: zone reference, can be name, href or Zone :raises EngineCommandFailed: failure creating interface :return: None See :class:`~DHCPInterface` for more information """

        _interface = {'interface_id': interface_id, 'interfaces': [{'nodes': [
            {'dynamic': True, 'dynamic_index': dynamic_index}], 'vlan_id': vlan_id}],
            'comment': comment, 'zone_ref': zone_ref}
        
        if 'single_fw' in self._engine.type:
            _interface.update(interface='single_node_interface')
        
        try:
            interface = self._engine.interface.get(interface_id)
            vlan = interface.vlan_interface.get(vlan_id)
            # Interface exists, so we need to update but check if VLAN already exists
            if vlan is None:
                interface._add_interface(**_interface)
                interface.update()
                
        except InterfaceNotFound:
            interface = Layer3PhysicalInterface(**_interface)
            return self._engine.add_interface(interface)