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 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 ApiCrtNetIf = "CrtNetIf"
const ApiCrtNode = "CrtNode"
## Create object APIs ###
const ApiCrtNodeConn = "CrtNodeConn"
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 ApiDelCtrlProp = "DelCtrlProp"
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 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 ApiLostNode = "LostNode"
const ApiLostStorPool = "LostStorPool"
const ApiLstCtrlProps = "LstCtrlProps"
const ApiLstErrorReports = "LstErrorReports"
const ApiLstKvs = "LstKvs"
const ApiLstNetIf = "LstNetIf"
const ApiLstNode = "LstNode"
## List object APIs ###
const ApiLstPhysStor = "LstPhysicalStorage"
const ApiLstRsc = "LstRsc"
const ApiLstRscConn = "LstRscConn"
const ApiLstRscDfn = "LstRscDfn"
const ApiLstRscGrp = "LstRscGrp"
const ApiLstSnapshotDfn = "LstSnapshotDfn"
const ApiLstStorPool = "LstStorPool"
const ApiLstStorPoolDfn = "LstStorPoolDfn"
const ApiLstVlm = "LstVlm"
const ApiLstVlmDfn = "LstVlmDfn"
const ApiLstVlmGrp = "LstVlmGrp"
const ApiModCryptPass = "ModCryptPass"
const ApiModDrbdProxy = "ModifyDrbdProxy"
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 ApiNodeReconnect = "NodeReconnect"
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 ApiRestoreSnapshot = "RestoreSnapshot"
const ApiRestoreVlmDfn = "RestoreVlmDfn"
const ApiRollbackSnapshot = "RollbackSnapshot"
const ApiRptSpc = "RptSpc"
const ApiRspMaxVlmSize = "RspMaxVlmSize"
const ApiSetCtrlProp = "SetCtrlProp"
const ApiSignIn = "SignIn"
## Authentication APIs ###
const ApiSpawnRscDfn = "SpawnRscDfn"
const ApiToggleDisk = "ToggleDisk"
const ApiVersion = "Version"
const ApiVsnInf = "VsnInf"
const ConnStatusAuthenticated = 9
const ConnStatusAuthenticationError = 5
const ConnStatusConnected = 1
const ConnStatusFullSyncFailed = 4
const ConnStatusHostnameMismatch = 7
const ConnStatusNoStltConn = 10
const ConnStatusOffline = 0
## Satellite connection statuses ###
const ConnStatusOnline = 2
const ConnStatusOtherController = 8
const ConnStatusUnknown = 6
const ConnStatusVersionMismatch = 3
const Created = (1 | MaskSuccess)
## Codes 1-9: success ###
const DefaultNetif = "default"
## Default names ###
const Deleted = (2 | MaskSuccess)
const DfltCtrlPortPlain = 3376
const DfltCtrlPortSsl = 3377
## Default ports ###
const DfltStltPortPlain = 3366
const DfltStltPortSsl = 3367
const EventResourceState = "ResourceState"
State of resource based on DRBD status (or other underlying system)
const EventStreamCloseNoConnection = "CloseNoConnection"
const EventStreamCloseRemoved = "CloseRemoved"
const EventStreamValue = "Value"
## Event stream actions ###
const EventVolumeDiskState = "VlmDiskState"
## Events ###
const FailAccDeniedCommand = (412 | MaskError)
const FailAccDeniedCtrlCfg = (411 | 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 FailExistsCryptPassphrase = (512 | 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 FailExistsRsc = (502 | MaskError)
const FailExistsRscConn = (507 | MaskError)
const FailExistsRscDfn = (501 | MaskError)
const FailExistsRscGrp = (522 | MaskError)
const FailExistsSnapshot = (516 | MaskError)
const FailExistsSnapshotDfn = (514 | 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 FailInvldCryptPassphrase = (216 | MaskError)
const FailInvldDrbdProxyCompressionType = (222 | MaskError)
const FailInvldEncryptType = (217 | 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 FailInvldRscName = (202 | MaskError)
const FailInvldRscPort = (203 | MaskError)
const FailInvldSnapshotName = (218 | MaskError)
const FailInvldStorDriver = (221 | MaskError)
const FailInvldStorPoolName = (208 | MaskError)
const FailInvldTcpPort = (215 | MaskError)
const FailInvldTransportType = (214 | MaskError)
const FailInvldVlmNr = (205 | MaskError)
const FailInvldVlmSize = (206 | MaskError)
const FailInvldVlmSizes = (228 | MaskError)
const FailLostStorPool = (521 | MaskError)
const FailMissingExtName = (606 | MaskError)
const FailMissingNetcom = (603 | MaskError)
const FailMissingNvmeTarget = (608 | 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 FailNotConnected = (995 | MaskError)
const FailNotEnoughNodes = (996 | MaskError)
const FailNotFoundCryptKey = (312 | MaskError)
const FailNotFoundDfltStorPool = (311 | 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 FailPoolExhaustedTcpPort = (802 | MaskError)
const FailPoolExhaustedVlmNr = (800 | MaskError)
## Codes 800-899: number pools exhausted ###
const FailRscBusy = (992 | MaskError)
const FailSignIn = (10000 | MaskError)
const FailSignInMissingCredentials = (10001 | MaskError)
const FailSnapshotsNotSupported = (994 | MaskError)
const FailSql = (100 | MaskError)
## Codes 100 - 199: sql failures ###
const FailSqlRollback = (101 | MaskError)
const FailStltDoesNotSupportLayer = (988 | MaskError)
## Other failures ###
const FailStltDoesNotSupportProvider = (989 | MaskError)
const FailStorPoolConfigurationError = (990 | 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 FlagFailedDeployment = "FAILED_DEPLOYMENT"
const FlagFailedDisconnect = "FAILED_DISCONNECT"
const FlagGrossSize = "GROSS_SIZE"
const FlagNvmeInitiator = "NVME_INITIATOR"
const FlagQignore = "QIGNORE"
const FlagResize = "RESIZE"
const FlagSuccessful = "SUCCESSFUL"
const FlagTieBreaker = "TIE_BREAKER"
const InfoNoRscSpawned = (10000 | MaskInfo)
## Codes 10000-19999: info ###
const InfoNodeNameMismatch = (10001 | MaskInfo)
const InfoPropRemoved = (10005 | MaskInfo)
const InfoPropSet = (10002 | MaskInfo)
const InfoTieBreakerCreated = (10003 | MaskInfo)
const InfoTieBreakerDeleting = (10004 | MaskInfo)
const InfoTieBreakerTakeover = (10006 | MaskInfo)
const Key1StNode = "FirstNode"
const Key1StNodeName = "FirstNodeName"
const Key2NdNode = "SecondNode"
const Key2NdNodeName = "SecondNodeName"
const KeyAlSize = "AlSize"
const KeyAlStripes = "AlStripes"
const KeyAllowLargerVolumeSize = "AllowLargerVolumeSize"
const KeyBindAddr = "bindAddress"
const KeyBindPort = "port"
const KeyCurStltConnName = "CurStltConnName"
const KeyDmstats = "DMStats"
const KeyDrbdAutoAddQuorumTiebreaker = "auto-add-quorum-tiebreaker"
const KeyDrbdAutoQuorum = "auto-quorum"
const KeyDrbdBitmapGi = "DrbdBitmapGi"
const KeyDrbdCurrentGi = "DrbdCurrentGi"
const KeyDrbdHistory1Gi = "DrbdHistory1Gi"
const KeyDrbdHistory2Gi = "DrbdHistory2Gi"
const KeyDrbdProxyCompressionType = "CompressionType"
## DRBD Proxy keys (other than 'options') ###
const KeyEnabled = "enabled"
const KeyExtCmdWaitTo = "ExtCmdWaitTimeout"
## External commands keys ###
const KeyFsMkfsparameters = "MkfsParams"
const KeyFsType = "Type"
## File system property keys ###
const KeyGlobalSeqApiCalls = "GlobSeqApiCalls"
const KeyId = "ID"
const KeyIpAddr = "IPAddr"
const KeyKeyPwd = "KeyPwd"
const KeyKeystore = "Keystore"
const KeyKeystorePwd = "KeystorePwd"
const KeyKvs = "Kvs"
## Object property keys ###
const KeyMinorNr = "MinorNr"
const KeyMinorNrAutoRange = "MinorNrAutoRange"
const KeyMissingNamespc = "MissingNameSpace"
const KeyNetIfName = "NetIfName"
const KeyNetcomEnabled = "NetComEnabled"
const KeyNetcomType = "NetComType"
const KeyNetifName = "NetIfName"
const KeyNetifType = "NetIfType"
const KeyNode = "Node"
const KeyNodeFlags = "NodeFlags"
const KeyNodeId = "NodeId"
const KeyNodeName = "NodeName"
const KeyNodeType = "NodeType"
const KeyPeerCount = "PeerCount"
const KeyPeerSlots = "PeerSlots"
const KeyPeerSlotsNewResource = "PeerSlotsNewResource"
const KeyPoolName = "PoolName"
const KeyPort = "enabled"
const KeyPortNr = "PortNr"
## Property keys ###
const KeyPrefNic = "PrefNic"
const KeyRole = "Role"
const KeyRscDfn = "RscDfn"
const KeyRscGrp = "RscGrp"
const KeyRscMigrateFrom = "MigrateFrom"
const KeyRscName = "RscName"
const KeyRscRollbackTarget = "RollbackTarget"
const KeySearchDomain = "SearchDomain"
const KeySecDomain = "SecDomain"
const KeySecIdentity = "SecIdentity"
## Authentication keys ###
const KeySecPassword = "SecPassword"
const KeySecRole = "SecRole"
const KeySecType = "SecType"
const KeySnapshot = "Snapshot"
const KeySnapshotDfnSequenceNumber = "SequenceNumber"
const KeySnapshotName = "SnapshotName"
const KeySslProto = "SslProto"
const KeyStorPoolAllocationUnit = "AllocationUnit"
Unit of smallest allocation. The size in KiB as a decimal number.
const KeyStorPoolCryptPasswd = "CryptPasswd"
const KeyStorPoolDfn = "StorPoolDfn"
const KeyStorPoolDfnMaxOversubscriptionRatio = "MaxOversubscriptionRatio"
const KeyStorPoolDrbdMetaName = "StorPoolNameDrbdMeta"
const KeyStorPoolDrbdMetaType = "DrbdMetaType"
const KeyStorPoolFileDirectory = "FileDir"
const KeyStorPoolLvcreateType = "LvcreateType"
const KeyStorPoolName = "StorPoolName"
const KeyStorPoolOverrideVlmId = "OverrideVlmId"
const KeyStorPoolPrefNic = "PrefNic"
const KeyStorPoolProvisioning = "Provisioning"
const KeyStorPoolSupportsSnapshots = "SupportsSnapshots"
## Storage pool traits keys ###
const KeyStorPoolThinPool = "ThinPool"
const KeyStorPoolVolumeGroup = "LvmVg"
## Storage pool property keys ###
const KeyStorPoolWaitTimeoutAfterCreate = "WaitTimeoutAfterCreate"
const KeyStorPoolZpool = "ZPool"
const KeyStorPoolZpoolthin = "ZPoolThin"
const KeySysFsBlkioThrottleRead = "blkio_throttle_read"
## sys/fs property keys ###
const KeySysFsBlkioThrottleWrite = "blkio_throttle_write"
const KeyTcpPortAutoRange = "TcpPortAutoRange"
const KeyTrType = "enabled"
const KeyTruststore = "Truststore"
const KeyTruststorePwd = "TruststorePwd"
const KeyUuid = "UUID"
const KeyVlmGrp = "VlmGrp"
const KeyVlmNr = "VlmNr"
const KeyVlmRestoreFromResource = "RestoreFromResource"
const KeyVlmRestoreFromSnapshot = "RestoreFromSnapshot"
const KeyVlmSize = "VlmSize"
const KeyWritecacheBlocksize = "Blocksize"
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 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 NamespcAuxiliary = "Aux"
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 NamespcFilesystem = "FileSystem"
const NamespcLogging = "Logging"
const NamespcNetcom = "NetCom"
## Property namespaces ###
const NamespcNetif = "NetIf"
const NamespcNvme = "NVMe"
const NamespcRest = "REST"
const NamespcStlt = "Satellite"
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 ValNodeTypeAux = "Auxiliary"
const ValNodeTypeCmbd = "Combined"
const ValNodeTypeCtrl = "Controller"
## Node Type values ###
const ValNodeTypeStlt = "Satellite"
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 WarnAllDiskless = (1009 | MaskWarn)
const WarnDelUnsetProp = (1005 | MaskWarn)
const WarnInvldOptPropNetcomEnabled = (1001 | MaskWarn)
## Codes 1000-9999: warnings ###
const WarnMixedPmemAndNonPmem = (1014 | MaskWarn)
const WarnNoStltConnDefined = (1004 | 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 WarnStltNotUpdated = (1003 | MaskWarn)
const WarnStorageError = (1010 | MaskWarn)
const WarnStorageKindAdded = (1012 | 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"` }