code: def _delete_fw(self, tenant_id, data):
          
          LOG.debug("In Delete fw data is %s", data)
          in_sub = self.get_in_subnet_id(tenant_id)
          out_sub = self.get_out_subnet_id(tenant_id)
          arg_dict = self._create_arg_dict(tenant_id, data, in_sub, out_sub)
  
          if arg_dict.get('router_id') is None:
              LOG.error("Router ID unknown for tenant %s", tenant_id)
              return False
  
          if tenant_id not in self.tenant_dict:
              self.create_tenant_dict(tenant_id, arg_dict.get('router_id'))
          ret = self.send_in_router_port_msg(tenant_id, arg_dict, 'down')
          if not ret:
              return False
          ret = self.send_out_router_port_msg(tenant_id, arg_dict, 'down')
          if not ret:
              return False
          # Usually sending message to queue doesn't fail!!!
  
          router_ret = self.delete_intf_router(tenant_id,
                                               arg_dict.get('tenant_name'),
                                               arg_dict.get('router_id'))
          if not router_ret:
              LOG.error("Unable to delete router for tenant %s, error case",
                        tenant_id)
              return router_ret
          del self.tenant_dict[tenant_id]
          return router_ret
docs: Internal routine called when a FW is deleted.