def create_router(self, context, router):
        """Handle router creation.

        When a new Neutron router is created, its corresponding MidoNet router
        is also created.  In MidoNet, this router is initialized with chains
        for inbound and outbound traffic, which will be used to hold other
        chains that include various rules, such as NAT.

        :param router: Router information provided to create a new router.
        """
        LOG.info(_("MidonetPluginV2.create_router called: router=%(router)s"),
                 {"router": router})
        r = super(MidonetPluginV2, self).create_router(context, router)
        try:
            self.api_cli.create_router(r)
        except Exception as ex:
            LOG.error(_("Failed to create a router %(r_id)s in Midonet:"
                        "%(err)s"), {"r_id": r["id"], "err": ex})
            with excutils.save_and_reraise_exception():
                super(MidonetPluginV2, self).delete_router(context, r['id'])

        LOG.info(_("MidonetPluginV2.create_router exiting: "
                   "router=%(router)s."), {"router": r})
        return r