'Handle new dvr service port creation.
When a new dvr service port is created, this function will
schedule a dvr router to new compute node if needed and notify
l3 agent on that node.
The \'dest_host\' will provide the destination host of the port in
case of service port migration.'

def dvr_handle_new_service_port(self, context, port, dest_host=None):

    port_host = (dest_host or port[portbindings.HOST_ID])
    l3_agent_on_host = (self.get_l3_agents(context, filters={'host': [port_host]}) or [None])[0]
    if (not l3_agent_on_host):
        return
    if dest_host:
        l3plugin = directory.get_plugin(plugin_constants.L3)
        l3plugin.check_for_fip_and_create_agent_gw_port_on_host_if_not_exists(context, port, dest_host)
    subnet_ids = [ip['subnet_id'] for ip in port['fixed_ips']]
    router_ids = self.get_dvr_routers_by_subnet_ids(context, subnet_ids)
    if router_ids:
        LOG.debug('DVR:    Handle    new    service    port,    host    %(host)s,    router    ids    %(router_ids)s', {'host': port_host, 'router_ids': router_ids})
        self.l3_rpc_notifier.routers_updated_on_host(context, router_ids, port_host)
