You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cvm/src/schemas/main.gql

362 lines
6.5 KiB
GraphQL

scalar ByteSize
scalar TimeSize
type AccessPermissions {
read: Boolean
write: Boolean
execute: Boolean
}
type Permissions {
owner: AccessPermissions
group: AccessPermissions
everybody: AccessPermissions
setUID: Boolean
setGID: Boolean
sticky: Boolean
}
type User {
name: String
id: Int
# FIXME
}
type Group {
name: String
id: Int
# FIXME
}
type RawMountValueOption {
key: String!
value: String
}
type RawMountFlagOption {
key: String!
}
union RawMountOption = RawMountFlagOption | RawMountValueOption
enum MountErrorHandlingMode {
PANIC
CONTINUE
REMOUNT_READ_ONLY
}
enum ExtAllocator {
OLD
ORLOV
}
enum ExtJournalingMode {
JOURNAL
ORDERED
WRITEBACK
}
enum ExtBufferErrorHandlingMode {
IGNORE_ERROR
ABORT_JOURNAL
}
enum ExtQuotaSystem {
OLD
V0
V1
}
enum FatTimestampsAllowedFrom {
EVERYBODY
GROUP
OWNER
}
enum FatNameStrictness {
RELAXED
NORMAL
STRICT
}
enum FatShortNameMode {
LOWER
WINDOWS_95
WINDOWS_NT
MIXED
}
enum FatLineEndingConversionPolicy {
BINARY
TEXT
AUTO
}
type MountOptions {
writable: Boolean
userMountable: Boolean
freelyMountable: Boolean
asynchronous: Boolean
asynchronousDirectoryUpdates: Boolean
allowDeviceNodes: Boolean
allowExecution: Boolean
allowMandatoryLocks: Boolean
allowSetUIDBits: Boolean
requiresNetworkAccess: Boolean
allowOfflineChecks: Boolean
updateAccessTime: Boolean
updateDirectoryAccessTime: Boolean
updateAccessTimeRelatively: Boolean
updateAccessTimeStrictly: Boolean
automaticallyMountable: Boolean
incrementIVersion: Boolean
printDebugInformation: Boolean
reportMountingErrors: Boolean
onError: MountErrorHandlingMode
owner: User
group: Group
filesystemOwner: User
filesystemGroup: Group
filesystemPermissions: Permissions
# devpts
newPTYOwner: User
newPTYGroup: Group
newPTYPermissions: Permissions
isolatePTYs: Boolean
ptmxPermissions: Permissions
# tmpfs, hugetlbfs
rootOwner: User
rootGroup: Group
rootPermissions: Permissions
maximumInodes: Int
size: ByteSize
# hugetlbfs
pageSize: ByteSize
sizeAsPoolPercentage: Float
minimumSize: ByteSize
minimumSizeAsPoolPercentage: Float
# tmpfs
blockCount: Int
numaPolicy: String
# ext2, ext3, ext4
allow32bitIdentifiers: Boolean
allow64bitInodeVersions: Boolean
allowExtendedAttributes: Boolean
supportACL: Boolean
showOnlyUsableSpace: Boolean
useGroupIDFromDirectory: Boolean
allowAutomaticFilesystemResizing: Boolean
enableMetadataBlockTracking: Boolean
simulateAbort: Boolean
attachBufferHeads: Boolean # obsolete
checkFilesystemOnMount: Boolean
enableWriteBarriers: Boolean
enableHardwareDeleteCalls: Boolean
allocator: ExtAllocator
reservedSpaceForGroup: Group
reservedSpaceForUser: User
superblockIndex: Int
inodeBlockReadAheadLimit: Int
stripeBlocks: Int
directorySizeLimit: ByteSize
updateJournalFormat: Boolean
enableJournalChecksumming: Boolean
asynchronousJournalCommits: Boolean
processJournal: Boolean
journalInode: Int
journalDevice: String # FIXME: Translate this into a BlockDevice somehow? Expected 'number' format here is unclear.
journalPath: String
journalingMode: ExtJournalingMode
journalIOPriority: Int
onBufferError: ExtBufferErrorHandlingMode
commitInterval: TimeSize
allowDeferredAllocations: Boolean
batchingTimeLimit: TimeSize
batchingTimeMinimum: TimeSize
enableMetadataBlockCache: Boolean
enableDirectIOReadLocking: Boolean
enableInodeTableBlockInitialization: Boolean
inodeTableBlockInitializationDelay: Int
automaticallySynchronizeBeforeRename: Boolean
enableGroupQuota: Boolean
enableUserQuota: Boolean
enableProjectQuota: Boolean
quotaSystem: ExtQuotaSystem
userQuotaFile: String
groupQuotaFile: String
# fat, vfat
blockSize: ByteSize
allocationTableBitness: Int
compressedVolumeFileModule: String
compressedVolumeFileOption: String
defaultFileMode: Permissions
defaultFolderMode: Permissions
nameStrictness: FatNameStrictness
timestampChangesAllowedFrom: FatTimestampsAllowedFrom
restrictExecutableModeToWindowsBinaries: Boolean
treatAttrSysFlagAsImmutable: Boolean
allowDifferentlyCasedNameConflicts: Boolean
shortNameMode: FatShortNameMode
preferShortNamesWithoutSequenceNumber: Boolean
enableUnicodeCharacterEscaping: Boolean
supportUtf8: Boolean
enableReadOnlyFlagSupport: Boolean
enableDOS1xFallbackConfiguration: Boolean
enableQuietModeFailures: Boolean
enableNFSInodeCache: Boolean
enableEagerFlushing: Boolean
enableFreeClusterCache: Boolean
enableTimezoneConversion: Boolean
timestampOffset: TimeSize
lineEndingConversionPolicy: FatLineEndingConversionPolicy
conversionCharacterSet: String
codepage: Int
}
type Mount {
path: String!
rawOptions: [RawMountOption]
options: MountOptions
}
type SmartAttributeFlags {
autoKeep: Boolean!
eventCount: Boolean!
errorRate: Boolean!
affectsPerformance: Boolean!
updatedOnline: Boolean!
indicatesFailure: Boolean!
}
enum SmartAttributeType {
PRE_FAIL
OLD_AGE
}
enum SmartAttributeUpdateType {
ALWAYS
OFFLINE
}
enum SmartHealth {
HEALTHY
DETERIORATING
FAILING
}
type SmartAttribute {
id: Int!
name: String!
flags: SmartAttributeFlags!
value: Int!
rawValue: String!
worstValueSeen: Int!
failureThreshold: Int!
type: SmartAttributeType!
failingNow: Boolean!
failedBefore: Boolean!
updatedWhen: SmartAttributeUpdateType!
}
enum BlockDeviceType {
DISK
PARTITION
LOOP_DEVICE
}
type BlockDevice {
name: String!
type: BlockDeviceType!
path: String!
mountpoint: String
deviceNumber: String!
removable: Boolean!
readOnly: Boolean!
size: ByteSize!
parent: BlockDevice
children: [BlockDevice!]!
}
type PhysicalDrive {
path: String!
interface: String!
blockDevice: BlockDevice!
allBlockDevices(type: BlockDeviceType): [BlockDevice!]!
smartAvailable: Boolean!
smartEnabled: Boolean
smartHealth: SmartHealth
smartAttributes: [SmartAttribute!]!
model: String
modelFamily: String
serialNumber: String
wwn: String,
firmwareVersion: String
size: ByteSize
rpm: Int
logicalSectorSize: ByteSize
physicalSectorSize: ByteSize
formFactor: String
ataVersion: String
sataVersion: String
}
type LVMPhysicalVolume {
path: String!
blockDevice: BlockDevice!
volumeGroup: LVMVolumeGroup!
format: String!
size: ByteSize!
freeSpace: ByteSize!
duplicate: Boolean!
allocatable: Boolean!
used: Boolean!
exported: Boolean!
missing: Boolean!
}
type LVMVolumeGroup {
name: String!
}
type HardwareQuery {
drives(paths: [String]): [PhysicalDrive!]!
}
type LVMQuery {
physicalVolumes: [LVMPhysicalVolume!]!
volumeGroups: [LVMVolumeGroup!]!
}
type ResourcesQuery {
blockDevices: [BlockDevice!]!
lvm: LVMQuery
}
type Query {
hardware: HardwareQuery!
resources: ResourcesQuery!
}