// @project        The CERN Tape Archive (CTA)
// @brief          CTA Admin Command API definition
// @copyright      Copyright 2019 CERN
// @license        This program is free software: you can redistribute it and/or modify
//                 it under the terms of the GNU General Public License as published by
//                 the Free Software Foundation, either version 3 of the License, or
//                 (at your option) any later version.
//
//                 This program is distributed in the hope that it will be useful,
//                 but WITHOUT ANY WARRANTY; without even the implied warranty of
//                 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//                 GNU General Public License for more details.
//
//                 You should have received a copy of the GNU General Public License
//                 along with this program.  If not, see <http://www.gnu.org/licenses/>.

syntax  = "proto3";
package cta.admin;

import "cta_common.proto";

//
// Command Options
//

message OptionBoolean {
  enum Key {
    DISABLED                           =  0;
    ENCRYPTED                          =  1;
    FORCE                              =  2;
    FULL                               =  3;
    READ_ONLY                          =  4;
    FROM_CASTOR                        =  5;

    // hasOption options
    ALL                                =  6;
    JUSTARCHIVE                        =  9;
    JUSTADDCOPIES                      = 10;
    JUSTMOVE                           = 11;
    JUSTRETRIEVE                       = 12;
    SHOW_LOG_ENTRIES                   = 13;
    SUMMARY                            = 14;
    LOOKUP_NAMESPACE                   = 15;
    NO_RECALL                          = 17;
    DIRTY_BIT                          = 18;
    IS_REPACK_VO                       = 19;
  }

  Key key                              =  1;
  bool value                           =  2;
}

message OptionUInt64 {
  enum Key {
    ARCHIVE_FILE_ID                    =  0;
    ARCHIVE_PRIORITY                   =  1;
    RETRIEVE_PRIORITY                  =  2;
    CAPACITY                           =  3;
    COPY_NUMBER                        =  4;
    MIN_ARCHIVE_REQUEST_AGE            = 10;
    MIN_RETRIEVE_REQUEST_AGE           = 11;
    MAX_FILE_SIZE                      = 12;
    PARTIAL_TAPES_NUMBER               = 15;
    REFRESH_INTERVAL                   = 16;
    TARGETED_FREE_SPACE                = 17;
    SLEEP_TIME                         = 20;
    MAX_LPOS                           = 21;
    MIN_LPOS                           = 22;
    NUMBER_OF_WRAPS                    = 23;
    PRIMARY_DENSITY_CODE               = 24;
    SECONDARY_DENSITY_CODE             = 25;
    READ_MAX_DRIVES                    = 26;
    WRITE_MAX_DRIVES                   = 27;
    NB_PHYSICAL_CARTRIDGE_SLOTS        = 28;
    NB_AVAILABLE_CARTRIDGE_SLOTS       = 29;
    NB_PHYSICAL_DRIVE_SLOTS            = 30;
    MAX_FILES_TO_EXPAND                = 31;
  }

  Key key                              =  1;
  uint64 value                         =  2;
}

message OptionString {
  enum Key {
    COMMENT                            =  0;
    DRIVE                              =  2;
    ENCRYPTION_KEY_NAME                =  3;
    INSTANCE                           =  7;
    LOGICAL_LIBRARY                    =  8;
    MOUNT_POLICY                       =  9;
    STORAGE_CLASS                      = 12;
    TAPE_POOL                          = 13;
    USERNAME                           = 14;
    VID                                = 15;
    VO                                 = 16;
    BUFFERURL                          = 17;
    MEDIA_TYPE                         = 18;
    VENDOR                             = 19;
    SUPPLY                             = 20;
    DISK_SYSTEM                        = 21;
    FILE_REGEXP                        = 22;
    FREE_SPACE_QUERY_URL               = 23;
    REASON                             = 24;
    CARTRIDGE                          = 25;
    FXID                               = 26;
    OBJECTID                           = 27;
    STATE                              = 28;
    ACTIVITY_REGEX                     = 29;
    DISK_INSTANCE                      = 30;
    DISK_INSTANCE_SPACE                = 31;
    VERIFICATION_STATUS                = 32;
    DISABLED_REASON                    = 33;
    // 34 DEPRECATED
    MEDIA_PURCHASE_ORDER_NUMBER        = 35;
    PHYSICAL_LIBRARY                   = 36;
    MANUFACTURER                       = 37;
    LIBRARY_MODEL                      = 38;
    LIBRARY_TYPE                       = 39;
    GUI_URL                            = 40;
    WEBCAM_URL                         = 41;
    LIBRARY_LOCATION                   = 42;
  }

  Key key                              =  1;
  string value                         =  2;
}

message OptionStrList {
  enum Key {
    VID                                =  0;
    FILE_ID                            =  1;
  }

  Key key                              =  1;
  repeated string item                 =  2;
}

//
// CTA Admin Command API
//

message AdminCmd {
  enum Cmd {
    CMD_NONE                           =  0;
    CMD_ADMIN                          =  1;
    CMD_ARCHIVEROUTE                   =  3;
    CMD_DRIVE                          =  4;
    CMD_FAILEDREQUEST                  =  5;
    CMD_GROUPMOUNTRULE                 =  6;
    CMD_LOGICALLIBRARY                 =  9;
    CMD_MOUNTPOLICY                    = 10;
    CMD_REPACK                         = 11;
    CMD_REQUESTERMOUNTRULE             = 12;
    CMD_SHOWQUEUES                     = 13;
    CMD_STORAGECLASS                   = 14;
    CMD_TAPE                           = 15;
    CMD_TAPEPOOL                       = 16;
    CMD_DISKSYSTEM                     = 17;
    CMD_TAPEFILE                       = 18;
    CMD_VIRTUALORGANIZATION            = 19;
    CMD_VERSION                        = 20;
    CMD_MEDIATYPE                      = 21;
    // 22 DEPRECATED
    CMD_RECYCLETAPEFILE                = 23;
    CMD_ACTIVITYMOUNTRULE              = 24;
    CMD_DISKINSTANCE                   = 25;
    CMD_DISKINSTANCESPACE              = 26;
    CMD_ARCHIVEFILE                    = 27;
    CMD_PHYSICALLIBRARY                = 28;
  }
  enum SubCmd {
    SUBCMD_NONE                        =  0;
    SUBCMD_ADD                         =  1;
    SUBCMD_CH                          =  2;
    SUBCMD_ERR                         =  3;
    SUBCMD_LS                          =  5;
    SUBCMD_RECLAIM                     =  6;
    SUBCMD_RM                          =  7;
    SUBCMD_UP                          =  8;
    SUBCMD_DOWN                        =  9;
    SUBCMD_RETRY                       = 10;
    SUBCMD_SHOW                        = 11;
    SUBCMD_RESTORE                     = 12;
  }

  Cmd cmd                                = 1;    //< The primary command
  SubCmd subcmd                          = 2;    //< The secondary command
  repeated OptionBoolean option_bool     = 3;    //< List of boolean options
  repeated OptionUInt64  option_uint64   = 4;    //< List of integer options
  repeated OptionString  option_str      = 5;    //< List of string options
  repeated OptionStrList option_str_list = 6;    //< List of string list options
  string client_version                  = 7;    //< CTA client version
  string protobuf_tag                    = 8;    //< Protobuf version (tag)
}

//
// Stream response header type
//

enum HeaderType {
  NONE                         =  0;    //< No header (default)
  ADMIN_LS                     =  1;    //< cta-admin admin ls
  ARCHIVEFILE_LS               =  2;    //< cta-admin archivefile ls
  ARCHIVEFILE_LS_SUMMARY       =  3;    //< cta-admin archivefile ls -S
  ARCHIVEROUTE_LS              =  4;    //< cta-admin archiveroute ls
  DRIVE_LS                     =  5;    //< cta-admin drive ls
  FAILEDREQUEST_LS             =  6;    //< cta-admin failedrequest ls
  FAILEDREQUEST_LS_SUMMARY     =  7;    //< cta-admin failedrequest ls -S
  GROUPMOUNTRULE_LS            =  8;    //< cta-admin groupmountrule ls
  LISTPENDINGARCHIVES          =  9;    //< cta-admin listpendingarchives -x
  LISTPENDINGARCHIVES_SUMMARY  = 10;    //< cta-admin listpendingarchives
  LISTPENDINGRETRIEVES         = 11;    //< cta-admin listpendingretrieves -x
  LISTPENDINGRETRIEVES_SUMMARY = 12;    //< cta-admin listpendingretrieves
  LOGICALLIBRARY_LS            = 13;    //< cta-admin logicallibrary ls
  MOUNTPOLICY_LS               = 14;    //< cta-admin mountpolicy ls
  REPACK_LS                    = 15;    //< cta-admin repack ls
  REQUESTERMOUNTRULE_LS        = 16;    //< cta-admin requestermountrule ls
  SHOWQUEUES                   = 17;    //< cta-admin showqueues ls
  STORAGECLASS_LS              = 18;    //< cta-admin storageclass ls
  TAPE_LS                      = 19;    //< cta-admin ta ls
  TAPEPOOL_LS                  = 20;    //< cta-admin tapepool ls
  DISKSYSTEM_LS                = 21;    //< cta-admin disksystem ls
  TAPEFILE_LS                  = 22;    //< cta-admin tapefile ls
  VIRTUALORGANIZATION_LS       = 23;    //< cta-admin virtualorganization ls
  VERSION_CMD                  = 24;    //< cta-admin version (This can't be called VERSION as it clashes with an EOS macro)
  MEDIATYPE_LS                 = 25;    //< cta-admin mediatype ls
  // 26 DEPRECATED
  RECYLETAPEFILE_LS            = 27;    //< cta-admin recycletf ls
  ACTIVITYMOUNTRULE_LS         = 28;    //< cta-admin activitymountrule ls
  DISKINSTANCE_LS              = 29;    //< cta-admin diskinstance ls
  DISKINSTANCESPACE_LS         = 30;    //< cta-admin diskinstancespace ls
  PHYSICALLIBRARY_LS           = 31;    //< cta-admin physicallibrary ls

}

//
// Stream response types
//

enum MountType {
  UNKNOWN_MOUNT_TYPE                        = 0;
  NO_MOUNT                                  = 1;
  ARCHIVE_FOR_USER                          = 2;
  ARCHIVE_FOR_REPACK                        = 3;
  ARCHIVE_ALL_TYPES                         = 4;
  RETRIEVE                                  = 5;
  LABEL                                     = 6;
}

enum RequestType {
  TOTAL                                     = 0;    //< Used for summary totals
  ARCHIVE_REQUEST                           = 1;    //< Archive request
  RETRIEVE_REQUEST                          = 2;    //< Retrieve request
}

message AdminLsItem {
  string user                               = 1;
  cta.common.EntryLog creation_log          = 2;
  cta.common.EntryLog last_modification_log = 3;
  string comment                            = 4;
}

message ArchiveFileLsItem {
  cta.common.ArchiveFile af                 = 1;
  cta.common.TapeFile tf                    = 2;
  uint64 copy_nb                            = 3;
}

message ArchiveFileLsSummary {
  uint64 total_files                        = 1;
  uint64 total_size                         = 2;
}

message ArchiveRouteLsItem {
  string storage_class                      = 1;
  uint32 copy_number                        = 2;
  string tapepool                           = 3;
  cta.common.EntryLog creation_log          = 4;
  cta.common.EntryLog last_modification_log = 5;
  string comment                            = 6;
}

message DriveConfigItem {
  string category                  = 1;
  string key                       = 2;
  string value                     = 3;
  string source                    = 4;
}

message DriveLsItem {
  enum DriveStatus {
    UNKNOWN_DRIVE_STATUS                    =  0;
    DOWN                                    =  1;
    UP                                      =  2;
    PROBING                                 =  3;
    STARTING                                =  4;
    MOUNTING                                =  5;
    TRANSFERRING                            =  6;
    UNLOADING                               =  7;
    UNMOUNTING                              =  8;
    DRAINING_TO_DISK                        =  9;
    CLEANING_UP                             = 10;
    SHUTDOWN                                = 11;
  }

  string logical_library                    =  1;
  string drive_name                         =  2;
  string host                               =  3;
  DriveStatus desired_drive_state           =  4;
  MountType mount_type                      =  5;
  DriveStatus drive_status                  =  6;
  uint64 drive_status_since                 =  7;
  string vid                                =  8;
  string tapepool                           =  9;
  uint64 files_transferred_in_session       = 10;
  uint64 bytes_transferred_in_session       = 11;
  // 12 DEPRECATED. Average bandwidth can be calculated as bytes_transferred_in_session/session_elapsed_time.
  uint64 session_id                         = 13;
  uint64 time_since_last_update             = 14;
  uint64 current_priority                   = 15;
  string current_activity                   = 16;
  string cta_version                        = 17;
  string dev_file_name                      = 18;
  string raw_library_slot                   = 19;
  repeated DriveConfigItem drive_config     = 20;
  string comment                            = 21;
  string reason                             = 22;
  string vo                                 = 23;
  string disk_system_name                   = 24;
  uint64 reserved_bytes                     = 25;
  uint64 session_elapsed_time               = 26;
  bool logical_library_disabled             = 27;
  string physical_library                   = 28;
}

message FailedRequestLsItem {
  string object_id                          = 1;    //< Address of the request in the objectstore
  RequestType request_type                  = 2;
  cta.common.RequesterId requester          = 3;
  cta.common.ArchiveFile af                 = 4;
  cta.common.TapeFile tf                    = 5;
  string tapepool                           = 6;    //< For archive requests only
  uint64 copy_nb                            = 7;
  uint32 totalretries                       = 8;
  repeated string failurelogs               = 9;
  uint32 totalreportretries                 = 10;
  repeated string reportfailurelogs         = 11;
}

message FailedRequestLsSummary {
  RequestType request_type                  = 1;
  uint64 total_files                        = 2;
  uint64 total_size                         = 3;
}

message GroupMountRuleLsItem {
  string disk_instance                      = 1;
  string group_mount_rule                   = 2;
  string mount_policy                       = 3;
  cta.common.EntryLog creation_log          = 4;
  cta.common.EntryLog last_modification_log = 5;
  string comment                            = 6;
}

message ListPendingArchivesItem {
  cta.common.ArchiveFile af                 = 1;
  cta.common.TapeFile tf                    = 2;
  uint64 copy_nb                            = 3;
  string tapepool                           = 4;
}

message ListPendingArchivesSummary {
  string tapepool                           = 1;
  uint64 total_files                        = 2;
  uint64 total_size                         = 3;
}

message ListPendingRetrievesItem {
  cta.common.ArchiveFile af                 = 1;
  cta.common.TapeFile tf                    = 2;
  uint64 copy_nb                            = 3;
}

message ListPendingRetrievesSummary {
  string vid                                = 1;
  uint64 total_files                        = 2;
  uint64 total_size                         = 3;
}

message LogicalLibraryLsItem {
  string name                               = 1;
  bool is_disabled                          = 2;
  cta.common.EntryLog creation_log          = 3;
  cta.common.EntryLog last_modification_log = 4;
  string comment                            = 5;
  string disabled_reason                    = 6;
  string physical_library                   = 7;
}

message PhysicalLibraryLsItem {
  string name                               = 1;
  string manufacturer                       = 2;
  string model                              = 3;
  string type                               = 4;
  string gui_url                            = 5;
  string webcam_url                         = 6;
  string location                           = 7;
  uint64 nb_physical_cartridge_slots        = 8;
  uint64 nb_available_cartridge_slots       = 9;
  uint64 nb_physical_drive_slots            = 10;
  string comment                            = 11;
  cta.common.EntryLog creation_log          = 12;
  cta.common.EntryLog last_modification_log = 13;
}

message MediaTypeLsItem {
  string name                               =  1;
  string cartridge                          =  2;
  uint64 capacity                           =  3;
  uint64 primary_density_code               =  4;
  uint64 secondary_density_code             =  5;
  uint64 number_of_wraps                    =  6;
  uint64 min_lpos                           =  7;
  uint64 max_lpos                           =  8;
  string comment                            =  9;
  cta.common.EntryLog creation_log          = 10;
  cta.common.EntryLog last_modification_log = 11;
}

message MountPolicyLsItem {
  string name                               = 1;
  uint64 archive_priority                   = 2;
  uint64 archive_min_request_age            = 3;
  uint64 retrieve_priority                  = 4;
  uint64 retrieve_min_request_age           = 5;
  cta.common.EntryLog creation_log          = 7;
  cta.common.EntryLog last_modification_log = 8;
  string comment                            = 9;
}

message RepackDestinationInfos{
  string vid                                = 1;
  uint64 files                              = 2;
  uint64 bytes                              = 3;
}

message RepackLsItem {
  string vid                                        =  1;
  string repack_buffer_url                          =  2;
  uint64 user_provided_files                        =  3;
  uint64 total_files_to_retrieve                    =  4;
  uint64 total_bytes_to_retrieve                    =  5;
  uint64 total_files_to_archive                     =  6;
  uint64 total_bytes_to_archive                     =  7;
  uint64 retrieved_files                            =  8;
  uint64 archived_files                             =  9;
  uint64 failed_to_retrieve_files                   = 10;
  uint64 failed_to_retrieve_bytes                   = 11;
  uint64 failed_to_archive_files                    = 12;
  uint64 failed_to_archive_bytes                    = 13;
  uint64 last_expanded_fseq                         = 14;
  string status                                     = 15;
  repeated RepackDestinationInfos destination_infos = 16;
  cta.common.EntryLog creation_log                  = 17;
  uint64 repack_finished_time                       = 18;
  uint64 retrieved_bytes                            = 19;
  uint64 archived_bytes                             = 20;
  uint64 repack_time                                = 21;
  uint64 files_left_to_retrieve                     = 22;
  uint64 files_left_to_archive                      = 23;
  uint64 total_failed_files                         = 24;
  string tapepool                                   = 25;
  uint64 total_files_on_tape_at_start               = 26;
  uint64 total_bytes_on_tape_at_start               = 27;
  bool all_files_selected_at_start                  = 28;
}

message RequesterMountRuleLsItem {
  string disk_instance                      = 1;
  string requester_mount_rule               = 2;
  string mount_policy                       = 3;
  cta.common.EntryLog creation_log          = 4;
  cta.common.EntryLog last_modification_log = 5;
  string comment                            = 6;
}

message ShowQueuesItem {
  MountType mount_type                      =  1;
  string tapepool                           =  2;
  string logical_library                    =  3;
  string vid                                =  4;
  uint64 queued_files                       =  5;
  uint64 queued_bytes                       =  6;
  uint64 oldest_age                         =  7;
  uint64 priority                           =  8;
  uint64 min_age                            =  9;
  // 10 DEPRECATED
  uint64 cur_mounts                         = 11;
  uint64 cur_files                          = 12;
  uint64 cur_bytes                          = 13;
  // 14 DEPRECATED
  // 15 DEPRECATED
  uint64 tapes_capacity                     = 16;
  uint64 tapes_files                        = 17;
  uint64 tapes_bytes                        = 18;
  uint64 full_tapes                         = 19;
  // 20 DEPRECATED
  // 21 DEPRECATED
  // 22 DEPRECATED
  uint64 writable_tapes                     = 23;
  bool sleeping_for_space                   = 24;
  uint64 sleep_start_time                   = 25;
  string disk_system_slept_for              = 26;
  string vo                                 = 27;
  uint64 read_max_drives                    = 28;
  uint64 write_max_drives                   = 29;
  repeated string mount_policies            = 30;
  uint64 youngest_age                       = 31;
  string highest_priority_mount_policy      = 32;
  string lowest_request_age_mount_policy    = 33;
}

message StorageClassLsItem {
  string name                               = 1;
  uint64 nb_copies                          = 2;
  string vo                                 = 3;
  cta.common.EntryLog creation_log          = 4;
  cta.common.EntryLog last_modification_log = 5;
  string comment                            = 6;
}

message TapeLsItem {
  string vid                                =  1;
  string media_type                         =  2;
  string vendor                             =  3;
  string logical_library                    =  4;
  string tapepool                           =  5;
  string vo                                 =  6;
  string encryption_key_name                =  7;
  uint64 capacity                           =  8;
  uint64 occupancy                          =  9;
  uint64 last_fseq                          = 10;
  bool full                                 = 11;
  bool from_castor                          = 14;
  uint64 read_mount_count                   = 15;
  uint64 write_mount_count                  = 16;
  cta.common.TapeLog label_log              = 17;
  cta.common.TapeLog last_written_log       = 18;
  cta.common.TapeLog last_read_log          = 19;
  cta.common.EntryLog creation_log          = 20;
  cta.common.EntryLog last_modification_log = 21;
  string comment                            = 22;
  uint64 nb_master_files                    = 23;
  uint64 master_data_in_bytes               = 24;
  string state                              = 25;
  string state_reason                       = 26;
  uint64 state_update_time                  = 27;
  string state_modified_by                  = 28;
  bool dirty                                = 29;
  string verification_status                = 30;
  string purchase_order                     = 31;
  string physical_library                   = 32;
}

message Checksum {
  common.ChecksumBlob.Checksum.Type type  = 1;       //< Checksum type
  string value                            = 2;       //< Checksum value, differs from cta.common.ChecksumBlob.Checksum.value
                                                     //< in that value is a decoded string not a byte array
}

message TapeFileLsItem {
  message ArchiveFile {
    uint64 archive_id                       = 1;       //< Archive File ID
    string storage_class                    = 2;       //< Storage Class
    uint64 creation_time                    = 3;       //< Creation Time
    repeated Checksum checksum              = 4;       //< Array of checksums
    uint64 size                             = 5;       //< File size
  }
  message DiskFile {
    string disk_id                          = 1;       //< Disk file ID
    string disk_instance                    = 2;       //< Disk instance
    cta.common.OwnerId owner_id             = 3;       //< Owner user ID and group ID of the disk file
    string path                             = 4;       //< Path of the disk file
  }
  message TapeFile {
    string vid                              = 1;       //< Volume ID of the tape on which the file has been written
    uint32 copy_nb                          = 2;       //< Copy number
    uint64 block_id                         = 3;       //< The position of the file on tape: Logical Block ID
    uint64 f_seq                            = 4;       //< The position of the file on tape: File Sequence number
  }
  ArchiveFile af                            = 1;
  DiskFile df                               = 2;
  TapeFile tf                               = 3;
}

message TapePoolLsItem {
  string name                               =  1;
  string vo                                 =  2;
  uint64 num_tapes                          =  3;
  uint64 num_partial_tapes                  =  4;
  uint64 num_physical_files                 =  5;
  uint64 capacity_bytes                     =  6;
  uint64 data_bytes                         =  7;
  bool   encrypt                            =  8;
  string supply                             =  9;
  cta.common.EntryLog created               = 10;
  cta.common.EntryLog modified              = 11;
  string comment                            = 12;
}

message DiskSystemLsItem {
  string name                               =  1;
  string file_regexp                        =  2;
  uint64 targeted_free_space                =  5;
  uint64 sleep_time                         =  9;
  cta.common.EntryLog creation_log          =  6;
  cta.common.EntryLog last_modification_log =  7;
  string comment                            =  8;
  string disk_instance                      =  10;
  string disk_instance_space                =  11;
}

message DiskInstanceLsItem {
  string name                               =  1;
  string comment                            =  2;
  cta.common.EntryLog creation_log          =  3;
  cta.common.EntryLog last_modification_log =  4;  
}

message DiskInstanceSpaceLsItem {
  string name                               =  1;
  string disk_instance                      =  2;
  string comment                            =  3;
  string free_space_query_url               =  4;
  uint64 refresh_interval                   =  5;
  uint64 free_space                         =  6;
  uint64 last_refresh_time                  =  7;
  cta.common.EntryLog creation_log          =  8;
  cta.common.EntryLog last_modification_log =  9;  
}

message VirtualOrganizationLsItem {
  string name                               =  1;
  cta.common.EntryLog creation_log          =  2;
  cta.common.EntryLog last_modification_log =  3;
  string comment                            =  4;
  uint64 read_max_drives                    =  5;
  uint64 write_max_drives                   =  6;
  uint64 max_file_size                      =  7;
  string diskinstance                       =  8;
  bool   is_repack_vo                       =  9;
}

message Version{
  string cta_version = 1;
  string xrootd_ssi_protobuf_interface_version = 2;
}

message VersionItem {
  Version client_version = 1;
  Version server_version = 2;
  string catalogue_connection_string = 3;
  string catalogue_version = 4;
  bool is_upgrading = 5;
}

message RecycleTapeFileLsItem {
  string vid = 1;
  uint64 fseq = 2;
  uint64 block_id = 3;
  uint32 copy_nb = 4;
  uint64 tape_file_creation_time = 5;
  uint64 archive_file_id = 6;
  string disk_instance = 7;
  string disk_file_id = 8;
  string disk_file_id_when_deleted = 9;
  uint64 disk_file_uid = 10;
  uint64 disk_file_gid = 11;
  uint64 size_in_bytes = 12;
  repeated Checksum checksum = 13;
  string storage_class = 14;
  uint64 archive_file_creation_time = 15;
  uint64 reconciliation_time = 16;
  string collocation_hint = 17;
  string disk_file_path = 18;
  string reason_log = 19;
  uint64 recycle_log_time = 20;
}

message ActivityMountRuleLsItem {
  string disk_instance                      = 1;
  string activity_mount_rule                = 2;
  string activity_regex                     = 3;
  string mount_policy                       = 4;
  cta.common.EntryLog creation_log          = 5;
  cta.common.EntryLog last_modification_log = 6;
  string comment                            = 7;
}