@Override
  public JSONRPC2Response process(Map<String, Object> params) {
    JSONRPC2Response resp = null;

    try {
      Integer id = HandlerUtils.<Number>fetchField(FSID, params, true, null).intValue();

      String status = FVConfigurationController.instance().flowSpaceStatus(id);
      resp = new JSONRPC2Response(status, 0);
    } catch (ClassCastException e) {
      resp =
          new JSONRPC2Response(
              new JSONRPC2Error(
                  JSONRPC2Error.INVALID_PARAMS.getCode(), cmdName() + ": " + e.getMessage()),
              0);
    } catch (MissingRequiredField e) {
      resp =
          new JSONRPC2Response(
              new JSONRPC2Error(
                  JSONRPC2Error.INVALID_PARAMS.getCode(), cmdName() + ": " + e.getMessage()),
              0);
    } catch (NullPointerException e) {
      e.printStackTrace();
    }
    return resp;
  }
  @Override
  public JSONRPC2Response process(final Map<String, Object> params) {
    try {

      final Number tid =
          HandlerUtils.<Number>fetchField(MonitoringHandler.TENANT, params, true, null);
      final Number dpid =
          HandlerUtils.<Number>fetchField(MonitoringHandler.VDPID, params, false, -1);
      final OVXMap map = OVXMap.getInstance();
      final LinkedList<Map<String, Object>> flows = new LinkedList<Map<String, Object>>();
      if (dpid.longValue() == -1) {
        HashMap<String, Object> res = new HashMap<String, Object>();
        for (OVXSwitch vsw : map.getVirtualNetwork(tid.intValue()).getSwitches()) {
          flows.clear();
          final Collection<OVXFlowMod> fms = vsw.getFlowTable().getFlowTable();
          for (final OVXFlowMod flow : fms) {
            final Map<String, Object> entry = flow.toMap();
            flows.add(entry);
          }
          res.put(vsw.getSwitchName(), flows.clone());
        }
        this.resp = new JSONRPC2Response(res, 0);
      } else {

        final OVXSwitch vsw = map.getVirtualNetwork(tid.intValue()).getSwitch(dpid.longValue());
        final Collection<OVXFlowMod> fms = vsw.getFlowTable().getFlowTable();
        for (final OVXFlowMod flow : fms) {
          final Map<String, Object> entry = flow.toMap();
          flows.add(entry);
        }
        this.resp = new JSONRPC2Response(flows, 0);
      }

    } catch (ClassCastException | MissingRequiredField e) {
      this.resp =
          new JSONRPC2Response(
              new JSONRPC2Error(
                  JSONRPC2Error.INVALID_PARAMS.getCode(),
                  this.cmdName() + ": Unable to fetch virtual topology : " + e.getMessage()),
              0);
    } catch (final InvalidDPIDException e) {
      this.resp =
          new JSONRPC2Response(
              new JSONRPC2Error(
                  JSONRPC2Error.INVALID_PARAMS.getCode(),
                  this.cmdName() + ": Unable to fetch virtual topology : " + e.getMessage()),
              0);
    } catch (NetworkMappingException e) {
      this.resp =
          new JSONRPC2Response(
              new JSONRPC2Error(
                  JSONRPC2Error.INVALID_PARAMS.getCode(),
                  this.cmdName() + ": Unable to fetch virtual topology : " + e.getMessage()),
              0);
    }

    return this.resp;
  }