'Create and return dhcp port information.
If an expected failure occurs, a None port is returned.'

@oslo_messaging.expected_exceptions(exceptions.IpAddressGenerationFailure)
@db_api.retry_db_errors
@resource_registry.mark_resources_dirty
def create_dhcp_port(self, context, **kwargs):

    host = kwargs.get('host')
    port = copy.deepcopy(kwargs.get('port'))
    LOG.debug('Create    dhcp    port    %(port)s    from    %(host)s.', {'port': port, 'host': host})
    port['port']['device_owner'] = constants.DEVICE_OWNER_DHCP
    port['port'][portbindings.HOST_ID] = host
    if ('mac_address' not in port['port']):
        port['port']['mac_address'] = constants.ATTR_NOT_SPECIFIED
    plugin = directory.get_plugin()
    return self._port_action(plugin, context, port, 'create_port')
