syntax="proto3";
package eos.console;

message FsProto {
  message AddProto {
    bool Manual = 1;
    uint64 Fsid  = 2;
    uint64 Port = 3;
    string Uuid = 4;
    string NodeQueue = 5;
    string HostPort = 6;
    string Mountpoint = 7;
    string Schedgroup = 8;
    string Status = 9;
    string SharedFs = 10;
  }

  message BootProto {
    bool SyncMgm = 1;
    oneof id {
      uint64 Fsid = 2;
      string Uuid = 3;
      string NodeQueue = 4;
    }
  }

  message CloneProto {
    uint64 SourceId = 1;
    uint64 TargetId = 2;
  }

  message CompareProto {
    uint64 SourceId = 1;
    uint64 TargetId = 2;
  }

  message ConfigProto {
    string Key = 1;
    string Value = 2;
    uint64 Fsid = 3;
  }

  message DropDeletionProto {
    uint64 Fsid = 1;
  }

  message DropGhostsProto {
    uint64 Fsid = 1;
    repeated uint64 Fids = 2;
  }

  message DropFilesProto {
    uint64 Fsid = 1;
    bool Force = 2;
  }

  message DumpMdProto {
    enum DisplayMode {
      DEFAULT = 0;
      MONITOR = 1;
    }

    uint64 Fsid = 1;
    DisplayMode display = 2;
    bool ShowFid = 3;
    bool ShowPath = 4;
    bool ShowSize = 5;
    bool ShowFxid = 6;
  }

  message MvProto {
    string Src = 1;
    string Dst = 2;
    bool Force = 3;
  }

  message LsProto {
    enum DisplayMode {
      DEFAULT = 0;
      MONITOR = 1;
      LONG    = 2;
      ERROR   = 3;
      IO      = 4;
      FSCK    = 5;
      DRAIN   = 6;
      FAILED_DRAIN_JOBS = 7;
      RUNNING_DRAIN_JOBS = 8;
   }

   DisplayMode display = 1;
   bool Brief = 2;
   string Matchlist = 3;
  }

  message RmProto {
    oneof id {
      uint64 Fsid = 1;
      string NodeQueue = 2;
    }
  }

  message StatusProto {
    oneof id {
      uint64 Fsid = 1;
      string NodeQueue = 2;
    }

    bool LongFormat = 3;
    bool RiskAssessment = 4;
  }

  oneof subcmd {
    AddProto add = 1;
    BootProto boot = 2;
    CloneProto clone = 3;
    CompareProto compare = 4;
    ConfigProto config = 5;
    DropDeletionProto dropdel = 6;
    DropFilesProto dropfiles = 7;
    DumpMdProto dumpmd = 8;
    MvProto mv = 9;
    LsProto ls = 10;
    RmProto rm = 11;
    StatusProto status = 12;
    DropGhostsProto dropghosts = 13;
  }
}
