|
|
|
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
|
|
|
|
}
|
|
|
|
|
|
|
|
enum MountType {
|
|
|
|
ROOT_MOUNT
|
|
|
|
SUBMOUNT
|
|
|
|
}
|
|
|
|
|
|
|
|
type Mount {
|
|
|
|
mountpoint: String!
|
|
|
|
type: MountType!
|
|
|
|
id: Int!
|
|
|
|
taskID: Int!
|
|
|
|
sourceDevice: BlockDevice!
|
|
|
|
rootPath: String
|
|
|
|
options: MountOptions!
|
|
|
|
filesystem: String!
|
|
|
|
label: String
|
|
|
|
uuid: String
|
|
|
|
partitionLabel: String
|
|
|
|
partitionUUID: String
|
|
|
|
deviceNumber: String
|
|
|
|
totalSpace: ByteSize
|
|
|
|
freeSpace: ByteSize
|
|
|
|
usedSpace: ByteSize
|
|
|
|
optionalFields: String
|
|
|
|
propagationFlags: String
|
|
|
|
children: [Mount!]!
|
|
|
|
# FIXME
|
|
|
|
# rawOptions: [RawMountOption]
|
|
|
|
}
|
|
|
|
|
|
|
|
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!
|
|
|
|
mounts(type: MountType): [Mount!]!
|
|
|
|
# mountpoint: String
|
|
|
|
deviceNumber: String!
|
|
|
|
removable: Boolean!
|
|
|
|
readOnly: Boolean!
|
|
|
|
size: ByteSize!
|
|
|
|
children: [BlockDevice!]!
|
|
|
|
# For tree linearization
|
|
|
|
_treecutterDepth: Int
|
|
|
|
_treecutterSequenceNumber: Int
|
|
|
|
}
|
|
|
|
|
|
|
|
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!
|
|
|
|
}
|
|
|
|
|
|
|
|
interface Image {
|
|
|
|
id: String!
|
|
|
|
name: String!
|
|
|
|
description: String
|
|
|
|
thumbnail: String
|
|
|
|
originalSource: String!
|
|
|
|
# The below are only available after the image has been downloaded
|
|
|
|
filesize: ByteSize
|
|
|
|
storagePath: String
|
|
|
|
}
|
|
|
|
|
|
|
|
type InstallationMedium implements Image {
|
|
|
|
id: String!
|
|
|
|
name: String!
|
|
|
|
description: String
|
|
|
|
thumbnail: String
|
|
|
|
originalSource: String!
|
|
|
|
# The below are only available after the image has been downloaded
|
|
|
|
filesize: ByteSize
|
|
|
|
storagePath: String
|
|
|
|
}
|
|
|
|
|
|
|
|
type VMImage implements Image {
|
|
|
|
id: String!
|
|
|
|
name: String!
|
|
|
|
description: String
|
|
|
|
thumbnail: String
|
|
|
|
originalSource: String!
|
|
|
|
# The below are only available after the image has been downloaded
|
|
|
|
filesize: ByteSize
|
|
|
|
storagePath: String
|
|
|
|
}
|
|
|
|
|
|
|
|
type HardwareQuery {
|
|
|
|
drives(paths: [String]): [PhysicalDrive!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
type LVMQuery {
|
|
|
|
physicalVolumes: [LVMPhysicalVolume!]!
|
|
|
|
volumeGroups: [LVMVolumeGroup!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
type ImagesQuery {
|
|
|
|
installationMedia: [InstallationMedium!]!
|
|
|
|
vmImages: [VMImage!]!
|
|
|
|
}
|
|
|
|
|
|
|
|
type ResourcesQuery {
|
|
|
|
blockDevices: [BlockDevice!]!
|
|
|
|
lvm: LVMQuery
|
|
|
|
# TODO: RAID
|
|
|
|
images: ImagesQuery
|
|
|
|
}
|
|
|
|
|
|
|
|
type Query {
|
|
|
|
hardware: HardwareQuery!
|
|
|
|
resources: ResourcesQuery!
|
|
|
|
}
|