'Invoke an action on a DHCP driver instance.'

def call_driver(self, action, network, **action_kwargs):

    LOG.debug('Calling    driver    for    network:    %(net)s    action:    %(action)s', {'net': network.id, 'action': action})
    try:
        driver = self.dhcp_driver_cls(self.conf, network, self._process_monitor, self.dhcp_version, self.plugin_rpc)
        getattr(driver, action)(**action_kwargs)
        return True
    except exceptions.Conflict:
        LOG.debug('Unable    to    %(action)s    dhcp    for    %(net_id)s:    there    is    a    conflict    with    its    current    state;    please    check    that    the    network    and/or    its    subnet(s)    still    exist.', {'net_id': network.id, 'action': action})
    except exceptions.SubnetMismatchForPort as e:
        LOG.debug('Error    configuring    DHCP    port,    scheduling    resync:    %s', e)
        self.schedule_resync(e, network.id)
    except Exception as e:
        if (getattr(e, 'exc_type', '') != 'IpAddressGenerationFailure'):
            self.schedule_resync(e, network.id)
        if ((isinstance(e, oslo_messaging.RemoteError) and (e.exc_type == 'NetworkNotFound')) or isinstance(e, exceptions.NetworkNotFound)):
            LOG.debug('Network    %s    has    been    deleted.', network.id)
        else:
            LOG.exception(_LE('Unable    to    %(action)s    dhcp    for    %(net_id)s.'), {'net_id': network.id, 'action': action})
