Documentation
¶
Index ¶
- Constants
- func EnoughFreeSpace(requestedKiB, replicas string) error
- type FSUtil
- type ResDef
- type ResourceDeployment
- func (r ResourceDeployment) Assign() error
- func (r ResourceDeployment) Attach(node string, asClient bool) error
- func (r ResourceDeployment) Create() error
- func (r ResourceDeployment) CreateAndAssign() error
- func (r ResourceDeployment) Delete() error
- func (r ResourceDeployment) DeployedNodes() ([]string, error)
- func (r ResourceDeployment) Exists() (bool, error)
- func (r ResourceDeployment) GetDevPath(node string, stat bool) (string, error)
- func (r ResourceDeployment) GetSnapByID(snapshots []Snapshot, id string) *Snapshot
- func (r ResourceDeployment) GetSnapByName(snapshots []Snapshot, name string) *Snapshot
- func (r ResourceDeployment) IsClient(nodeName string) bool
- func (r ResourceDeployment) ListResourceDefinitions() ([]ResDef, error)
- func (r ResourceDeployment) NewResourceFromResource(sourceRes ResourceDeployment) error
- func (r ResourceDeployment) NewResourceFromSnapshot(snapshotID string) error
- func (r ResourceDeployment) OnNode(nodeName string) (bool, error)
- func (r ResourceDeployment) SetAuxProp(key, value string) error
- func (r ResourceDeployment) SnapshotCreate(name string) (*Snapshot, error)
- func (r ResourceDeployment) SnapshotDelete(id string) error
- func (r ResourceDeployment) SnapshotList() ([]Snapshot, error)
- func (r ResourceDeployment) Unassign(nodeName string) error
- func (r ResourceDeployment) WaitForDevPath(node string, maxRetries int) (string, error)
- type ResourceDeploymentConfig
- type Snapshot
- type SnapshotInfo
Constants ¶
const ApiActivateRsc = "ActivateRsc"
const ApiAutoPlaceRsc = "AutoPlaceRsc"
const ApiCallAuthReq = (0x0FFFFFFFFFFFFFFE | MaskError)
const ApiCallParseError = (0x0FFFFFFFFFFFFFFD | MaskError)
const ApiCmdShutdown = "Shutdown"
const ApiControlCtrl = "ControlCtrl"
## Command APIs ###
const ApiCreateDevicePool = "CreateDevicePool"
const ApiCrtCryptPass = "CrtCryptPass"
const ApiCrtDbgCnsl = "CrtDbgCnsl"
## Debug APIs ###
const ApiCrtExosEnclosure = "CrtExosEnclosure"
const ApiCrtNetIf = "CrtNetIf"
const ApiCrtNode = "CrtNode"
## Create object APIs ###
const ApiCrtNodeConn = "CrtNodeConn"
const ApiCrtOfTargetNode = "CrtOfTargetNode"
const ApiCrtRsc = "CrtRsc"
const ApiCrtRscConn = "CrtRscConn"
const ApiCrtRscDfn = "CrtRscDfn"
const ApiCrtRscGrp = "CrtRscGrp"
const ApiCrtSnapshot = "CrtSnapshot"
const ApiCrtStorPool = "CrtStorPool"
const ApiCrtStorPoolDfn = "CrtStorPoolDfn"
const ApiCrtVlmConn = "CrtVlmConn"
const ApiCrtVlmDfn = "CrtVlmDfn"
const ApiCrtVlmGrp = "CrtVlmGrp"
const ApiCrtWatch = "CrtWatch"
## Event APIs ###
const ApiDeactivateRsc = "DeactivateRsc"
const ApiDelCtrlProp = "DelCtrlProp"
const ApiDelErrorReport = "DelErrorReport"
const ApiDelErrorReports = "DelErrorReports"
const ApiDelExosEnclosure = "DelExosEnclosure"
const ApiDelExtFile = "DeleteExtFile"
const ApiDelKvs = "DelKvs"
const ApiDelNetIf = "DelNetIf"
const ApiDelNode = "DelNode"
## Delete object APIs ###
const ApiDelNodeConn = "DelNodeConn"
const ApiDelRsc = "DelRsc"
const ApiDelRscConn = "DelRscConn"
const ApiDelRscDfn = "DelRscDfn"
const ApiDelRscGrp = "DelRscGrp"
const ApiDelSnapshot = "DelSnapshot"
const ApiDelStorPool = "DelStorPool"
const ApiDelStorPoolDfn = "DelStorPoolDfn"
const ApiDelVlmConn = "DelVlmConn"
const ApiDelVlmDfn = "DelVlmDfn"
const ApiDelVlmGrp = "DelVlmGrp"
const ApiDelWatch = "DelWatch"
const ApiDeployExtFile = "DeployExtFile"
const ApiDisableDrbdProxy = "DisableDrbdProxy"
const ApiDstrDbgCnsl = "DstrDbgCnsl"
const ApiEnableDrbdProxy = "EnableDrbdProxy"
const ApiEndOfImmediateAnswers = "EndOfImmediateAnswers"
Indicates that the immediate answers to the API call are complete
const ApiEnterCryptPass = "EnterCryptPass"
## Encryption APIs ###
const ApiEvent = "Event"
const ApiExosEnclosureEvents = "ExosEvents"
const ApiExosExec = "ExosExec"
const ApiExosMap = "ExosMap"
const ApiLostNode = "LostNode"
const ApiLostStorPool = "LostStorPool"
const ApiLstCtrlProps = "LstCtrlProps"
const ApiLstErrorReports = "LstErrorReports"
const ApiLstExosDflts = "LstExosDefaults"
const ApiLstExosEnclosures = "LstExosEnclosures"
const ApiLstExtFiles = "LstExtFiles"
const ApiLstKvs = "LstKvs"
const ApiLstNetIf = "LstNetIf"
const ApiLstNode = "LstNode"
## List object APIs ###
const ApiLstPhysStor = "LstPhysicalStorage"
const ApiLstPropsInfo = "LstPropsInfo"
const ApiLstRsc = "LstRsc"
const ApiLstRscConn = "LstRscConn"
const ApiLstRscDfn = "LstRscDfn"
const ApiLstRscGrp = "LstRscGrp"
const ApiLstSnapshotDfn = "LstSnapshotDfn"
const ApiLstSnapshotShippings = "LstSnapShips"
const ApiLstStorPool = "LstStorPool"
const ApiLstStorPoolDfn = "LstStorPoolDfn"
const ApiLstVlm = "LstVlm"
const ApiLstVlmDfn = "LstVlmDfn"
const ApiLstVlmGrp = "LstVlmGrp"
const ApiMakeRscAvail = "MakeRscAvail"
const ApiModCryptPass = "ModCryptPass"
const ApiModDrbdProxy = "ModifyDrbdProxy"
const ApiModExosDflts = "ModifyExosDefaults"
const ApiModExosEnclosure = "ModExosEnclosure"
const ApiModInf = "ModInf"
const ApiModKvs = "ModifyKvs"
const ApiModNetIf = "ModNetIf"
const ApiModNode = "ModNode"
## Modify object APIs ###
const ApiModNodeConn = "ModNodeConn"
const ApiModRsc = "ModRsc"
const ApiModRscConn = "ModRscConn"
const ApiModRscDfn = "ModRscDfn"
const ApiModRscGrp = "ModifyRscGrp"
const ApiModSnapshot = "ModSnapshot"
const ApiModStorPool = "ModStorPool"
const ApiModStorPoolDfn = "ModStorPoolDfn"
const ApiModVlm = "ModVlm"
const ApiModVlmConn = "ModVlmConn"
const ApiModVlmDfn = "ModVlmDfn"
const ApiModVlmGrp = "ModifyVlmGrp"
const ApiNodeEvict = "NodeEvict"
const ApiNodeReconnect = "NodeReconnect"
const ApiNodeRestore = "NodeRestore"
const ApiPing = "Ping"
const ApiPong = "Pong"
const ApiQryMaxVlmSize = "QryMaxVlmSize"
## Query APIs ###
const ApiReply = "Reply"
## Special answer message content types ### Textual MsgApiCallResponse responses
const ApiReqErrorReports = "ReqErrorReports"
const ApiReqRscConnList = "ReqRscConnList"
const ApiReqSosReport = "ReqSosReport"
const ApiRestoreSnapshot = "RestoreSnapshot"
const ApiRestoreVlmDfn = "RestoreVlmDfn"
const ApiRollbackSnapshot = "RollbackSnapshot"
const ApiRptSpc = "RptSpc"
const ApiRspMaxVlmSize = "RspMaxVlmSize"
const ApiSetCtrlProp = "SetCtrlProp"
const ApiSetExtFile = "SetExtFile"
## External files APIs ###
const ApiShipSnapshot = "ShipSnapshot"
const ApiSignIn = "SignIn"
## Authentication APIs ###
const ApiSpawnRscDfn = "SpawnRscDfn"
const ApiToggleDisk = "ToggleDisk"
const ApiUndeployExtFile = "UndeployExtFile"
const ApiVersion = "Version"
const ApiVsnInf = "VsnInf"
const Created = (1 | MaskSuccess)
## Codes 1-9: success ###
const DefaultNetif = "default"
## Default names ###
const Deleted = (2 | MaskSuccess)
const DfltAutoSnapshotKeep = "10"
## Default values ###
const DfltCtrlPortPlain = 3376
const DfltCtrlPortSsl = 3377
## Default ports ###
const DfltShippedSnapshotKeep = "10"
const DfltSnapshotShippingPrefix = "ship"
const DfltStltPortPlain = 3366
const DfltStltPortSsl = 3367
const FailAccDeniedCommand = (412 | MaskError)
const FailAccDeniedCtrlCfg = (411 | MaskError)
const FailAccDeniedExtFile = (422 | MaskError)
const FailAccDeniedFreeSpaceMgr = (417 | MaskError)
const FailAccDeniedKvs = (418 | MaskError)
const FailAccDeniedNode = (400 | MaskError)
## Codes 400-499: access denied failures ###
const FailAccDeniedNodeConn = (407 | MaskError)
const FailAccDeniedRsc = (402 | MaskError)
const FailAccDeniedRscConn = (408 | MaskError)
const FailAccDeniedRscDfn = (401 | MaskError)
const FailAccDeniedRscGrp = (419 | MaskError)
const FailAccDeniedSnapDfn = (421 | MaskError)
const FailAccDeniedSnapshot = (415 | MaskError)
const FailAccDeniedSnapshotDfn = (414 | MaskError)
const FailAccDeniedSnapshotVlmDfn = (416 | MaskError)
const FailAccDeniedStltConn = (410 | MaskError)
const FailAccDeniedStorPool = (406 | MaskError)
const FailAccDeniedStorPoolDfn = (405 | MaskError)
const FailAccDeniedVlm = (404 | MaskError)
const FailAccDeniedVlmConn = (409 | MaskError)
const FailAccDeniedVlmDfn = (403 | MaskError)
const FailAccDeniedVlmGrp = (420 | MaskError)
const FailAccDeniedWatch = (413 | MaskError)
const FailCryptInit = (982 | MaskError)
const FailExistsCryptPassphrase = (512 | MaskError)
const FailExistsExosEnclosure = (526 | MaskError)
const FailExistsExtName = (517 | MaskError)
const FailExistsNetIf = (505 | MaskError)
const FailExistsNode = (500 | MaskError)
## Codes 500-599: data already exists failures ###
const FailExistsNodeConn = (506 | MaskError)
const FailExistsNvmeInitiatorPerRscDfn = (519 | MaskError)
const FailExistsNvmeTargetPerRscDfn = (518 | MaskError)
const FailExistsOpenflexTargetPerRscDfn = (524 | MaskError)
const FailExistsRsc = (502 | MaskError)
const FailExistsRscConn = (507 | MaskError)
const FailExistsRscDfn = (501 | MaskError)
const FailExistsRscGrp = (522 | MaskError)
const FailExistsSnapshot = (516 | MaskError)
const FailExistsSnapshotDfn = (514 | MaskError)
const FailExistsSnapshotShipping = (525 | MaskError)
const FailExistsStltConn = (511 | MaskError)
const FailExistsStorPool = (510 | MaskError)
const FailExistsStorPoolDfn = (509 | MaskError)
const FailExistsVlm = (504 | MaskError)
const FailExistsVlmConn = (508 | MaskError)
const FailExistsVlmDfn = (503 | MaskError)
const FailExistsVlmGrp = (523 | MaskError)
const FailExistsWatch = (513 | MaskError)
const FailImplError = (999 | MaskError)
const FailInUse = (997 | MaskError)
const FailInsufficientPeerSlots = (993 | MaskError)
const FailInsufficientReplicaCount = (991 | MaskError)
const FailInvldConf = (230 | MaskError)
const FailInvldCryptPassphrase = (216 | MaskError)
const FailInvldDrbdProxyCompressionType = (222 | MaskError)
const FailInvldEncryptType = (217 | MaskError)
const FailInvldExtFile = (236 | MaskError)
const FailInvldExtFileName = (235 | MaskError)
const FailInvldExtName = (226 | MaskError)
const FailInvldFreeSpaceMgrName = (220 | MaskError)
const FailInvldKvsName = (223 | MaskError)
const FailInvldLayerKind = (224 | MaskError)
const FailInvldLayerStack = (225 | MaskError)
const FailInvldMinorNr = (207 | MaskError)
const FailInvldNetAddr = (210 | MaskError)
const FailInvldNetName = (209 | MaskError)
const FailInvldNetPort = (211 | MaskError)
const FailInvldNetType = (212 | MaskError)
const FailInvldNodeId = (204 | MaskError)
const FailInvldNodeName = (200 | MaskError)
## Codes 200-299: invalid * failures ###
const FailInvldNodeType = (201 | MaskError)
const FailInvldPlaceCount = (219 | MaskError)
const FailInvldProp = (213 | MaskError)
const FailInvldProvider = (227 | MaskError)
const FailInvldRscGrpName = (234 | MaskError)
const FailInvldRscName = (202 | MaskError)
const FailInvldRscPort = (203 | MaskError)
const FailInvldSnapshotName = (218 | MaskError)
const FailInvldSnapshotShippingSource = (231 | MaskError)
const FailInvldSnapshotShippingTarget = (232 | MaskError)
const FailInvldStorDriver = (221 | MaskError)
const FailInvldStorPoolName = (208 | MaskError)
const FailInvldTcpPort = (215 | MaskError)
const FailInvldTransportType = (214 | MaskError)
const FailInvldVlmCount = (229 | MaskError)
const FailInvldVlmNr = (205 | MaskError)
const FailInvldVlmSize = (206 | MaskError)
const FailInvldVlmSizes = (228 | MaskError)
const FailLinstorManagedSatelliteDidNotStartProperly = (987 | MaskError)
const FailLostStorPool = (521 | MaskError)
const FailMissingExtName = (606 | MaskError)
const FailMissingNetcom = (603 | MaskError)
const FailMissingNvmeTarget = (608 | MaskError)
const FailMissingOpenflexTarget = (610 | MaskError)
const FailMissingProps = (600 | MaskError)
## Codes 600-699: data missing failures ###
const FailMissingPropsNetcomPort = (602 | MaskError)
const FailMissingPropsNetcomType = (601 | MaskError)
const FailMissingPropsNetifName = (604 | MaskError)
const FailMissingStltConn = (605 | MaskError)
const FailNoStltConnDefined = (609 | MaskError)
const FailNodeHasUsedRsc = (233 | MaskError)
const FailNotConnected = (995 | MaskError)
const FailNotEnoughFreeSpace = (980 | MaskError)
## Other failures ###
const FailNotEnoughNodes = (996 | MaskError)
const FailNotFoundCryptKey = (312 | MaskError)
const FailNotFoundDfltStorPool = (311 | MaskError)
const FailNotFoundExosEnclosure = (319 | MaskError)
const FailNotFoundExtFile = (320 | MaskError)
const FailNotFoundKvs = (316 | MaskError)
const FailNotFoundNetIf = (305 | MaskError)
const FailNotFoundNode = (300 | MaskError)
## Codes 300-399: dependency not found failures ###
const FailNotFoundNodeConn = (306 | MaskError)
const FailNotFoundRsc = (302 | MaskError)
const FailNotFoundRscConn = (307 | MaskError)
const FailNotFoundRscDfn = (301 | MaskError)
const FailNotFoundRscGrp = (317 | MaskError)
const FailNotFoundSnapshot = (315 | MaskError)
const FailNotFoundSnapshotDfn = (313 | MaskError)
const FailNotFoundSnapshotVlmDfn = (314 | MaskError)
const FailNotFoundStorPool = (310 | MaskError)
const FailNotFoundStorPoolDfn = (309 | MaskError)
const FailNotFoundVlm = (304 | MaskError)
const FailNotFoundVlmConn = (308 | MaskError)
const FailNotFoundVlmDfn = (303 | MaskError)
const FailNotFoundVlmGrp = (318 | MaskError)
const FailPoolExhaustedMinorNr = (801 | MaskError)
const FailPoolExhaustedNodeId = (803 | MaskError)
const FailPoolExhaustedRscLayerId = (804 | MaskError)
const FailPoolExhaustedSnapshotShippingTcpPort = (806 | MaskError)
const FailPoolExhaustedSpecialSatellteTcpPort = (805 | MaskError)
const FailPoolExhaustedTcpPort = (802 | MaskError)
const FailPoolExhaustedVlmNr = (800 | MaskError)
## Codes 800-899: number pools exhausted ###
const FailPreSelectScriptDidNotTerminate = (986 | MaskError)
const FailRscBusy = (992 | MaskError)
const FailSignIn = (10000 | MaskError)
const FailSignInMissingCredentials = (10001 | MaskError)
const FailSnapshotShippingInProgress = (984 | MaskError)
const FailSnapshotShippingNotSupported = (983 | MaskError)
const FailSnapshotsNotSupported = (994 | MaskError)
const FailSql = (100 | MaskError)
## Codes 100 - 199: sql failures ###
const FailSqlRollback = (101 | MaskError)
const FailStltDoesNotSupportLayer = (988 | MaskError)
const FailStltDoesNotSupportProvider = (989 | MaskError)
const FailStorPoolConfigurationError = (990 | MaskError)
const FailUndecidableAutoplacment = (985 | MaskError)
const FailUnknownError = (998 | MaskError)
const FailUuidKvs = (711 | MaskError)
const FailUuidNetIf = (705 | MaskError)
const FailUuidNode = (700 | MaskError)
## Codes 700-799: uuid mismatch failures ###
const FailUuidNodeConn = (706 | MaskError)
const FailUuidRsc = (702 | MaskError)
const FailUuidRscConn = (707 | MaskError)
const FailUuidRscDfn = (701 | MaskError)
const FailUuidStorPool = (710 | MaskError)
const FailUuidStorPoolDfn = (709 | MaskError)
const FailUuidVlm = (704 | MaskError)
const FailUuidVlmConn = (708 | MaskError)
const FailUuidVlmDfn = (703 | MaskError)
const FlagClean = "CLEAN"
## Flag string values ###
const FlagDelete = "DELETE"
const FlagDiskAddRequested = "DISK_ADD_REQUESTED"
const FlagDiskAdding = "DISK_ADDING"
const FlagDiskRemoveRequested = "DISK_REMOVE_REQUESTED"
const FlagDiskRemoving = "DISK_REMOVING"
const FlagDiskless = "DISKLESS"
const FlagDrbdDiskless = "DRBD_DISKLESS"
const FlagEncrypted = "ENCRYPTED"
const FlagEvicted = "EVICTED"
const FlagFailedDeployment = "FAILED_DEPLOYMENT"
const FlagFailedDisconnect = "FAILED_DISCONNECT"
const FlagGrossSize = "GROSS_SIZE"
const FlagNvmeInitiator = "NVME_INITIATOR"
const FlagQignore = "QIGNORE"
const FlagResize = "RESIZE"
const FlagRscInactive = "INACTIVE"
const FlagSuccessful = "SUCCESSFUL"
const FlagTieBreaker = "TIE_BREAKER"
const InfoAutoDrbdProxyCreated = (10007 | MaskInfo)
const InfoNoRscSpawned = (10000 | MaskInfo)
## Codes 10000-19999: info ###
const InfoNodeNameMismatch = (10001 | MaskInfo)
const InfoNoop = (10007 | MaskInfo)
const InfoPropRemoved = (10005 | MaskInfo)
const InfoPropSet = (10002 | MaskInfo)
const InfoRscAlreadyExists = (10008 | MaskInfo)
const InfoTieBreakerCreated = (10003 | MaskInfo)
const InfoTieBreakerDeleting = (10004 | MaskInfo)
const InfoTieBreakerTakeover = (10006 | MaskInfo)
const Key1StNode = "FirstNode"
const Key2NdNode = "SecondNode"
const KeyAutoEvictAfterTime = "AutoEvictAfterTime"
const KeyAutoEvictAllowEviction = "AutoEvictAllowEviction"
const KeyAutoEvictMaxDisconnectedNodes = "AutoEvictMaxDisconnectedNodes"
const KeyAutoEvictMinReplicaCount = "AutoEvictMinReplicaCount"
## Auto-Evict property keys ###
const KeyAutoSnapshotNextId = "NextAutoId"
const KeyAutoSnapshotPrefix = "Prefix"
const KeyAutoplaceMaxThroughput = "MaxThroughput"
const KeyAutoplacePreSelectFileName = "PreSelectScript"
const KeyAutoplacePreSelectScriptTimeout = "PreSelectScriptTimeout"
const KeyAutoplaceStratWeightMaxFreespace = "MaxFreeSpace"
## Autoplace property keys ###
const KeyAutoplaceStratWeightMinReservedSpace = "MinReservedSpace"
const KeyAutoplaceStratWeightMinRscCount = "MinRscCount"
const KeyBcacheBlocksize = "Blocksize"
const KeyBcacheBucketsize = "Bucketsize"
const KeyBcacheCacheReplacementPolicy = "CacheReplacementPolicy"
const KeyBcacheDataOffset = "DataOffset"
const KeyBcacheDiscard = "Discard"
const KeyBcachePoolName = "PoolName"
## BCache property keys ###
const KeyBcacheSize = "Size"
const KeyBcacheWriteback = "Writeback"
const KeyCacheBlockSize = "Blocksize"
const KeyCacheCachePoolName = "CachePool"
const KeyCacheCacheSize = "Cachesize"
const KeyCacheMetaPoolName = "MetaPool"
const KeyCacheMetaSize = "Metasize"
const KeyCacheOperatingMode = "OpMode"
## Cache property keys ###
const KeyCachePolicy = "Policy"
const KeyCurStltConnName = "CurStltConnName"
const KeyDisableHttpMetrics = "disable-http-metrics"
const KeyDmstats = "DMStats"
const KeyDrbdAutoAddQuorumTiebreaker = "auto-add-quorum-tiebreaker"
const KeyDrbdAutoDiskful = "auto-diskful"
const KeyDrbdAutoDiskfulAllowCleanup = "auto-diskful-allow-cleanup"
const KeyDrbdAutoQuorum = "auto-quorum"
const KeyDrbdAutoVerifyAlgoAllowedUser = "auto-verify-algo-allowed-user-list"
const KeyDrbdCurrentGi = "DrbdCurrentGi"
const KeyDrbdDisableAutoVerifyAlgo = "auto-verify-algo-disable"
const KeyDrbdProxyAutoEnable = "AutoEnable"
const KeyDrbdProxyCompressionType = "CompressionType"
## DRBD Proxy keys (other than 'options') ###
const KeyExtCmdWaitTo = "ExtCmdWaitTimeout"
## External commands keys ###
const KeyExtFile = "ExtFile"
## External files keys ###
const KeyFsMkfsparameters = "MkfsParams"
const KeyFsType = "Type"
## File system property keys ###
const KeyKeep = "Keep"
const KeyMinorNrAutoRange = "MinorNrAutoRange"
const KeyNode = "Node"
## Node property keys ###
const KeyOfTargetPortAutoRange = "OpenflexTargetPortAutoRange"
const KeyPeerSlots = "PeerSlots"
const KeyPeerSlotsNewResource = "PeerSlotsNewResource"
const KeyPoolName = "PoolName"
const KeyPort = "Port"
## Network Interface property keys ###
const KeyPrefNic = "PrefNic"
const KeyRscDfn = "RscDfn"
## Resource property keys ###
const KeyRscGrp = "RscGrp"
const KeyRscMigrateFrom = "MigrateFrom"
const KeyRscRollbackTarget = "RollbackTarget"
const KeyRunEvery = "RunEvery"
const KeySearchDomain = "SearchDomain"
## ldap property keys ###
const KeySecDomain = "SecDomain"
const KeySecIdentity = "SecIdentity"
## Authentication keys ###
const KeySecPassword = "SecPassword"
const KeySecRole = "SecRole"
const KeySecType = "SecType"
const KeySite = "Site"
const KeySnapshot = "Snapshot"
## Snapshot property keys ###
const KeySnapshotDfnSequenceNumber = "SequenceNumber"
const KeySnapshotShippingPrefix = "SnapshotShippingPrefix"
## Snapshot shipping property keys ###
const KeySourceNode = "SourceNode"
const KeyStorPoolAllocationUnit = "AllocationUnit"
Unit of smallest allocation. The size in KiB as a decimal number.
const KeyStorPoolCryptPasswd = "CryptPasswd"
const KeyStorPoolDfn = "StorPoolDfn"
## Storage pool property keys ###
const KeyStorPoolDfnMaxOversubscriptionRatio = "MaxOversubscriptionRatio"
const KeyStorPoolDrbdMetaName = "StorPoolNameDrbdMeta"
const KeyStorPoolExosApiIp = "IP"
const KeyStorPoolExosApiIpEnv = "IPEnv"
const KeyStorPoolExosApiPassword = "Password"
const KeyStorPoolExosApiPasswordEnv = "PasswordEnv"
const KeyStorPoolExosApiPort = "Port"
const KeyStorPoolExosApiUser = "Username"
const KeyStorPoolExosApiUserEnv = "UsernameEnv"
const KeyStorPoolExosCreateVolumeOptions = "CreateVolumeOptions"
const KeyStorPoolExosEnclosure = "Enclosure"
const KeyStorPoolExosPoolSn = "PoolSN"
const KeyStorPoolExosVlmType = "VolumeType"
const KeyStorPoolFileDirectory = "FileDir"
const KeyStorPoolLvcreateOptions = "LvcreateOptions"
const KeyStorPoolLvcreateType = "LvcreateType"
const KeyStorPoolName = "StorPoolName"
const KeyStorPoolOpenflexApiHost = "Openflex/ApiHost"
const KeyStorPoolOpenflexApiPort = "Openflex/ApiPort"
const KeyStorPoolOpenflexJobWaitDelay = "Openflex/JobWaitDelay"
const KeyStorPoolOpenflexJobWaitMaxCount = "Openflex/JobWaitMaxCount"
const KeyStorPoolOpenflexStorDev = "Openflex/StorDev"
const KeyStorPoolOpenflexStorDevHost = "Openflex/StorDevHost"
const KeyStorPoolOpenflexStorPool = "Openflex/StorPool"
const KeyStorPoolOpenflexUserName = "Openflex/UserName"
const KeyStorPoolOpenflexUserPw = "Openflex/UserPassword"
const KeyStorPoolOverrideVlmId = "OverrideVlmId"
const KeyStorPoolPrefNic = "PrefNic"
const KeyStorPoolProvisioning = "Provisioning"
const KeyStorPoolSupportsSnapshots = "SupportsSnapshots"
## Storage pool traits keys ###
const KeyStorPoolThinPool = "ThinPool"
const KeyStorPoolVolumeGroup = "LvmVg"
const KeyStorPoolWaitTimeoutAfterCreate = "WaitTimeoutAfterCreate"
const KeyStorPoolZfsCreateOptions = "ZfscreateOptions"
const KeyStorPoolZpool = "ZPool"
const KeyStorPoolZpoolthin = "ZPoolThin"
const KeySysFsBlkioThrottleRead = "blkio_throttle_read"
## sys/fs property keys ###
const KeySysFsBlkioThrottleReadIops = "blkio_throttle_read_iops"
const KeySysFsBlkioThrottleWrite = "blkio_throttle_write"
const KeySysFsBlkioThrottleWriteIops = "blkio_throttle_write_iops"
const KeyTargetNode = "TargetNode"
const KeyTcpPortAutoRange = "TcpPortAutoRange"
const KeyTcpPortRange = "TcpPortRange"
const KeyTrType = "TRType"
## nvme property keys ###
const KeyUpdateCacheInterval = "UpdateCacheInterval"
const KeyUuid = "UUID"
## DRBD property keys ###
const KeyVlmGrp = "VlmGrp"
## Volume property keys ###
const KeyVlmNr = "VlmNr"
const KeyVlmRestoreFromResource = "RestoreFromResource"
const KeyVlmRestoreFromSnapshot = "RestoreFromSnapshot"
const KeyWritecacheBlocksize = "Blocksize"
## Writecache property keys ###
const KeyWritecacheOptionAdditional = "Additional"
const KeyWritecacheOptionAutocommitBlocks = "AutocommitBlocks"
const KeyWritecacheOptionAutocommitTime = "AutocommitTime"
const KeyWritecacheOptionFua = "Fua"
const KeyWritecacheOptionHighWatermark = "HighWatermark"
const KeyWritecacheOptionLowWatermark = "LowWatermark"
const KeyWritecacheOptionStartSector = "StartSector"
const KeyWritecacheOptionWritebackJobs = "WritebackJobs"
const KeyWritecachePoolName = "PoolName"
const KeyWritecacheSize = "Size"
const MaskBitsCode = 0x0000000000007FFF
## Codes ###
const MaskBitsObj = 0x00000000007C0000
## Type masks (Node, ResDfn, Res, VolDfn, Vol, NetInterface, ...) ###
const MaskBitsOp = 0x0000000003000000
## Operation type masks ###
const MaskBitsType = 0xC000000000000000
## Bits 62 - 63 (most significant 2) are reserved for the message type masks (error, warning, info) Bits 25 - 26 are reserved for the operation type masks (create, modify, delete) Bits 18 - 22 are reserved for the object type masks (node, resource, resource definition, ...) Bits 0 - 14 are reserved for codes ###
const MaskCrt = 0x0000000001000000
const MaskCtrlConf = 0x0000000000100000
const MaskDel = 0x0000000003000000
const MaskError = 0xC000000000000000
const MaskExtFiles = 0x0000000000500000
const MaskInfo = 0x4000000000000000
const MaskKvs = 0x0000000000400000
const MaskMod = 0x0000000002000000
const MaskNetIf = 0x00000000001C0000
const MaskNode = 0x00000000003C0000
const MaskNodeConn = 0x0000000000280000
const MaskPhysicalDevice = 0x00000000004C0000
const MaskRsc = 0x0000000000340000
const MaskRscConn = 0x0000000000240000
const MaskRscDfn = 0x0000000000380000
const MaskRscGrp = 0x0000000000440000
const MaskSnapshot = 0x00000000000C0000
const MaskStorPool = 0x0000000000140000
const MaskStorPoolDfn = 0x0000000000180000
const MaskSuccess = 0x0000000000000000
const MaskVlm = 0x00000000002C0000
const MaskVlmConn = 0x0000000000200000
const MaskVlmDfn = 0x0000000000300000
const MaskVlmGrp = 0x0000000000480000
const MaskWarn = 0x8000000000000000
const Modified = (3 | MaskSuccess)
const NamespcAlloc = "Allocation"
const NamespcAutoSnapshot = "AutoSnapshot"
const NamespcAutoplacer = "Autoplacer"
const NamespcAutoplacerWeights = "Autoplacer/Weights"
const NamespcAuxiliary = "Aux"
const NamespcBcache = "BCache"
const NamespcCache = "Cache"
const NamespcCacheFeatures = "Cache/Features"
const NamespcCachePolicyArgs = "Cache/Policy"
const NamespcConnectionPaths = "Paths"
const NamespcDflt = "Default"
const NamespcDrbdDiskOptions = "DrbdOptions/Disk"
const NamespcDrbdHandlerOptions = "DrbdOptions/Handlers"
const NamespcDrbdNetOptions = "DrbdOptions/Net"
const NamespcDrbdOptions = "DrbdOptions"
const NamespcDrbdPeerDeviceOptions = "DrbdOptions/PeerDevice"
const NamespcDrbdProxy = "DrbdProxy"
const NamespcDrbdProxyCompressionOptions = "DrbdOptions/ProxyCompression"
const NamespcDrbdProxyOptions = "DrbdOptions/Proxy"
const NamespcDrbdResourceOptions = "DrbdOptions/Resource"
const NamespcExos = "StorDriver/Exos"
const NamespcFilesystem = "FileSystem"
const NamespcLogging = "Logging"
const NamespcNetcom = "NetCom"
## Property namespaces ###
const NamespcNetif = "NetIf"
const NamespcNode = "Node"
const NamespcNvme = "NVMe"
const NamespcRest = "REST"
const NamespcSnapshotShipping = "SnapshotShipping"
const NamespcStlt = "Satellite"
const NamespcStltDevSymlinks = "Satellite/Device/Symlinks"
const NamespcStorageDriver = "StorDriver"
const NamespcSysFs = "sys/fs"
const NamespcWritecache = "Writecache"
const NamespcWritecacheOptions = "Writecache/Options"
const PassphraseAccepted = (4 | MaskSuccess)
const SuccessSignIn = (10000 | MaskSuccess)
## SignIn codes ###
const UnknownApiCall = (0x0FFFFFFFFFFFFFFF | MaskError)
## Special codes ###
const ValDrbdAutoQuorumDisabled = "disabled"
const ValDrbdAutoQuorumIoError = "io-error"
const ValDrbdAutoQuorumSuspendIo = "suspend-io"
const ValDrbdProxyCompressionLz4 = "lz4"
const ValDrbdProxyCompressionLzma = "lzma"
const ValDrbdProxyCompressionNone = "none"
## DRBD related property values ###
const ValDrbdProxyCompressionZlib = "zlib"
const ValDrbdProxyCompressionZstd = "zstd"
const ValFalse = "False"
const ValFsTypeExt4 = "ext4"
const ValFsTypeXfs = "xfs"
const ValNetcomTypePlain = "Plain"
const ValNetcomTypeSsl = "SSL"
## Property values ###
const ValNetifTypeIp = "IP"
## Net interface Type values ###
const ValNetifTypeRdma = "RDMA"
const ValNetifTypeRoce = "RoCE"
const ValNo = "No"
const ValNodeTypeAux = "Auxiliary"
const ValNodeTypeCmbd = "Combined"
const ValNodeTypeCtrl = "Controller"
## Node Type values ###
const ValNodeTypeExosTarget = "Exos_Target"
const ValNodeTypeOpenflexTarget = "Openflex_Target"
const ValNodeTypeStlt = "Satellite"
const ValSnapShipName = "SnapshotShipping"
## Snapshot-shipping values ###
const ValSslProtoTlsv1 = "TLSv1"
const ValStorPoolDrbdMetaInternal = ".internal"
const ValStorPoolProvisioningFat = "Fat"
## Storage pool traits values ###
const ValStorPoolProvisioningThin = "Thin"
const ValTrue = "True"
## Boolean values ###
const ValWritecacheFuaOff = "Off"
const ValWritecacheFuaOn = "On"
## Writecache option values ###
const ValYes = "Yes"
const WarnAllDiskless = (1009 | MaskWarn)
const WarnDelUnsetProp = (1005 | MaskWarn)
const WarnInvldOptPropNetcomEnabled = (1001 | MaskWarn)
## Codes 1000-9999: warnings ###
const WarnInvldSnapshotShippingPrefix = (1016 | MaskWarn)
const WarnMixedPmemAndNonPmem = (1014 | MaskWarn)
const WarnNoStltConnDefined = (1004 | MaskWarn)
const WarnNodeEvicted = (1017 | MaskWarn)
const WarnNotConnected = (1002 | MaskWarn)
const WarnNotEnoughNodesForTieBreaker = (1013 | MaskWarn)
const WarnNotFound = (3000 | MaskWarn)
const WarnNotFoundCryptKey = (1011 | MaskWarn)
const WarnRscAlreadyDeployed = (1006 | MaskWarn)
const WarnRscAlreadyDiskless = (1008 | MaskWarn)
const WarnRscAlreadyHasDisk = (1007 | MaskWarn)
const WarnRscDeactivated = (1018 | MaskWarn)
const WarnStltNotUpdated = (1003 | MaskWarn)
const WarnStorageError = (1010 | MaskWarn)
const WarnStorageKindAdded = (1012 | MaskWarn)
const WarnUneffectiveProp = (1015 | MaskWarn)
Variables ¶
This section is empty.
Functions ¶
func EnoughFreeSpace ¶
EnoughFreeSpace checks to see if there's enough free space to create a new resource.
Types ¶
type FSUtil ¶
type FSUtil struct { *ResourceDeployment FSType string FSOpts string MountOpts string // contains filtered or unexported fields }
FSUtil handles creating a filesystem and mounting resources.
func (FSUtil) SafeFormat ¶ added in v0.11.0
type ResDef ¶ added in v0.11.0
type ResDef struct { VlmDfns []struct { VlmDfnUUID string `json:"vlm_dfn_uuid"` VlmMinor int `json:"vlm_minor"` VlmNr int `json:"vlm_nr"` VlmSize int `json:"vlm_size"` } `json:"vlm_dfns,omitempty"` RscDfnSecret string `json:"rsc_dfn_secret"` RscDfnUUID string `json:"rsc_dfn_uuid"` RscName string `json:"rsc_name"` RscDfnPort int `json:"rsc_dfn_port"` RscDfnProps []struct { Value string `json:"value"` Key string `json:"key"` } `json:"rsc_dfn_props,omitempty"` }
type ResourceDeployment ¶ added in v0.8.2
type ResourceDeployment struct { ResourceDeploymentConfig // contains filtered or unexported fields }
ResourceDeployment contains all the information needed to query and assign/deploy a resource.
func NewResourceDeployment ¶ added in v0.8.2
func NewResourceDeployment(c ResourceDeploymentConfig) ResourceDeployment
NewResourceDeployment creates a new ResourceDeployment object. This tolerates some pretty janky ResourceDeploymentConfigs here is the breakdown of how that is handled: If no Name is given, a UUID is generated and used. If no NodeList is given, assignment will be automatically placed. If no ClientList is given, no client assignments will be made. If there are duplicates within ClientList or NodeList, they will be removed. If there are duplicates between ClientList and NodeList, duplicates in the ClientList will be removed. If no AutoPlace Value is given AND there is no NodeList and no ClientList, it will default to 1. If no DisklessOnRemaining is given, no diskless assignments on non replica nodes will be made. If no DoNotPlaceWithRegex, ReplicasOnSame, or ReplicasOnDifferent are provided resource assignment will occur without them. If no SizeKiB is provided, it will be given a size of 4096kb. If no StoragePool is provided, the default storage pool will be used. If no DisklessStoragePool is provided, the default diskless storage pool will be used. If no Encryption is specified, none will be used. If no MigrateOnAttach is specified, none will be used. If no Controllers are specified, none will be used. If no LogOut is specified, ioutil.Discard will be used. TODO: Document DR stuff.
func (ResourceDeployment) Assign ¶ added in v0.8.2
func (r ResourceDeployment) Assign() error
Assign assigns a resource with diskfull storage to all nodes in its NodeList, then attaches the resource disklessly to all nodes in its ClientList.
func (ResourceDeployment) Attach ¶ added in v0.12.0
func (r ResourceDeployment) Attach(node string, asClient bool) error
Attach assigns a resource on a single node disklessly or diskfully. If migrateOnAttach is true the migration will be be performed directly after assignment.
func (ResourceDeployment) Create ¶ added in v0.8.2
func (r ResourceDeployment) Create() error
Create reserves the resource name in Linstor.
func (ResourceDeployment) CreateAndAssign ¶ added in v0.8.2
func (r ResourceDeployment) CreateAndAssign() error
CreateAndAssign deploys the resource, created a new one if it doesn't exist.
func (ResourceDeployment) Delete ¶ added in v0.8.2
func (r ResourceDeployment) Delete() error
Delete removes a resource entirely from all nodes.
func (ResourceDeployment) DeployedNodes ¶ added in v0.13.1
func (r ResourceDeployment) DeployedNodes() ([]string, error)
DeployedNodes returns a list of nodes where the reource is deployed diskfully.
func (ResourceDeployment) Exists ¶ added in v0.8.2
func (r ResourceDeployment) Exists() (bool, error)
Exists checks to see if a resource is defined in LINSTOR.
func (ResourceDeployment) GetDevPath ¶ added in v0.10.0
func (r ResourceDeployment) GetDevPath(node string, stat bool) (string, error)
GetDevPath returns the path to the linstor volume on the given node. If stat is set to true, the device will be stat'd as a loose test to see if it is ready for IO.
func (ResourceDeployment) GetSnapByID ¶ added in v0.13.0
func (r ResourceDeployment) GetSnapByID(snapshots []Snapshot, id string) *Snapshot
func (ResourceDeployment) GetSnapByName ¶ added in v0.13.0
func (r ResourceDeployment) GetSnapByName(snapshots []Snapshot, name string) *Snapshot
func (ResourceDeployment) IsClient ¶ added in v0.8.2
func (r ResourceDeployment) IsClient(nodeName string) bool
IsClient determines if resource is running as a client on nodeName.
func (ResourceDeployment) ListResourceDefinitions ¶ added in v0.11.0
func (r ResourceDeployment) ListResourceDefinitions() ([]ResDef, error)
func (ResourceDeployment) NewResourceFromResource ¶ added in v0.13.0
func (r ResourceDeployment) NewResourceFromResource(sourceRes ResourceDeployment) error
func (ResourceDeployment) NewResourceFromSnapshot ¶ added in v0.13.0
func (r ResourceDeployment) NewResourceFromSnapshot(snapshotID string) error
func (ResourceDeployment) OnNode ¶ added in v0.8.2
func (r ResourceDeployment) OnNode(nodeName string) (bool, error)
OnNode determines if a resource is present on a particular node.
func (ResourceDeployment) SetAuxProp ¶ added in v0.13.0
func (r ResourceDeployment) SetAuxProp(key, value string) error
SetAuxProp adds an aux prop to the resource.
func (ResourceDeployment) SnapshotCreate ¶ added in v0.13.0
func (r ResourceDeployment) SnapshotCreate(name string) (*Snapshot, error)
SnapshotCreate makes a snapshot of the ResourceDeployment on all nodes where it is deployed. If the snapshot already exsits, return it as is.
func (ResourceDeployment) SnapshotDelete ¶ added in v0.13.0
func (r ResourceDeployment) SnapshotDelete(id string) error
SnapshotDelete deletes a snapshot with the given ID.
func (ResourceDeployment) SnapshotList ¶ added in v0.13.0
func (r ResourceDeployment) SnapshotList() ([]Snapshot, error)
SnapshotList returns a list of all snapshots known to LINSTOR.
func (ResourceDeployment) Unassign ¶ added in v0.8.2
func (r ResourceDeployment) Unassign(nodeName string) error
Unassign unassigns a resource from a particular node.
func (ResourceDeployment) WaitForDevPath ¶ added in v0.11.0
func (r ResourceDeployment) WaitForDevPath(node string, maxRetries int) (string, error)
WaitForDevPath polls until the resourse path appears on the system.
type ResourceDeploymentConfig ¶ added in v0.8.2
type ResourceDeploymentConfig struct { Name string NodeList []string ClientList []string ReplicasOnSame []string ReplicasOnDifferent []string DRSites []string DRSiteKey string AutoPlace uint64 DisklessOnRemaining bool DoNotPlaceWithRegex string SizeKiB uint64 StoragePool string DisklessStoragePool string Encryption bool MigrateOnAttach bool Controllers string LayerList []string Annotations map[string]string LogOut io.Writer LogFmt log.Formatter }
ResourceDeploymentConfig is a configuration object for ResourceDeployment. If you're deploying a resource, AutoPlace is required. If you're assigning a resource to particular nodes, NodeList is required.
type Snapshot ¶ added in v0.13.0
type Snapshot struct { SnapshotDfnFlags []string `json:"snapshot_dfn_flags"` UUID string `json:"uuid"` RscName string `json:"rsc_name"` Nodes []struct { NodeName string `json:"node_name"` } `json:"snapshots"` SnapshotName string `json:"snapshot_name"` SnapshotVlmDfns []struct { VlmNr int `json:"vlm_nr"` VlmSize int `json:"vlm_size"` } `json:"snapshot_vlm_dfns"` RscDfnUUID string `json:"rsc_dfn_uuid"` }
type SnapshotInfo ¶ added in v0.13.0
type SnapshotInfo []struct { SnapshotDfns []Snapshot `json:"snapshot_dfns"` }