Safe HaskellNone




Implementation of opcodes parameters.

These are defined in a separate module only due to TemplateHaskell stage restrictions - expressions defined in the current module can't be passed to splices. So we have to either parameters/repeat each parameter definition multiple times, or separate them into this module.


Helper functions and types

Type aliases

type UncheckedValue = JSValueSource

type UncheckedDict = JSObject JSValueSource

type UncheckedList = [JSValue]Source

forceNonNeg :: (Num a, Ord a, Show a) => a -> NonNegative aSource


data TagType Source

Data type representing what items do the tag operations apply to.


Bounded TagType 
Enum TagType 
Eq TagType 
Ord TagType 
Show TagType 
JSON TagType 

tagTypeFromRaw :: forall m. Monad m => String -> m TagTypeSource

data TagObject Source

Data type holding a tag object (type and object name).


TagInstance String 
TagNode String 
TagGroup String 
TagNetwork String 


Eq TagObject 
Show TagObject 
Arbitrary TagObject 

tagNameOf :: TagObject -> Maybe StringSource

Gets the potential tag object name.

tagObjectFrom :: Monad m => TagType -> JSValue -> m TagObjectSource

Builds a TagObject from a tag type and name.

encodeTagObject :: TagObject -> (JSValue, [(String, JSValue)])Source

Custom encoder for TagObject as represented in an opcode.

decodeTagObject :: Monad m => [(String, JSValue)] -> JSValue -> m TagObjectSource

Custom decoder for TagObject as represented in an opcode.


replaceDisksModeFromRaw :: forall m. Monad m => String -> m ReplaceDisksModeSource

newtype DiskIndex Source

Disk index type (embedding constraints on the index value via a smart constructor).




unDiskIndex :: Int


Eq DiskIndex 
Ord DiskIndex 
Show DiskIndex 
Arbitrary DiskIndex 
JSON DiskIndex 

mkDiskIndex :: Monad m => Int -> m DiskIndexSource

Smart constructor for DiskIndex.

I* param types

data DiskAccess Source

Type holding disk access modes.


Bounded DiskAccess 
Enum DiskAccess 
Eq DiskAccess 
Ord DiskAccess 
Show DiskAccess 
Arbitrary DiskAccess 
JSON DiskAccess 

diskAccessFromRaw :: forall m. Monad m => String -> m DiskAccessSource

data INicParams Source

NIC modification definition.




inicMac :: Maybe NonEmptyString
inicIp :: Maybe String
inicMode :: Maybe NonEmptyString
inicLink :: Maybe NonEmptyString
inicName :: Maybe NonEmptyString


Eq INicParams 
Show INicParams 
Arbitrary INicParams 
JSON INicParams 

loadINicParams :: JSValue -> Result INicParamsSource

toDictINicParams :: INicParams -> [(String, JSValue)]Source

data IDiskParams Source

Disk modification definition. FIXME: disksize should be VTYPE_UNIT.




idiskSize :: Maybe Int
idiskMode :: Maybe DiskAccess
idiskAdopt :: Maybe NonEmptyString
idiskVg :: Maybe NonEmptyString
idiskMetavg :: Maybe NonEmptyString
idiskName :: Maybe NonEmptyString


Eq IDiskParams 
Show IDiskParams 
Arbitrary IDiskParams 
JSON IDiskParams 

loadIDiskParams :: JSValue -> Result IDiskParamsSource

toDictIDiskParams :: IDiskParams -> [(String, JSValue)]Source

data RecreateDisksInfo Source

Disk changes type for OpInstanceRecreateDisks. This is a bit strange, because the type in Python is something like Either [DiskIndex] [DiskChanges], but we can't represent the type of an empty list in JSON, so we have to add a custom case for the empty list.

data DdmOldChanges Source

Simple type for old-style ddm changes.


data SetParamsMods a Source

Instance disk or nic modifications.


Eq a => Eq (SetParamsMods a) 
Show a => Show (SetParamsMods a) 
Arbitrary a => Arbitrary (SetParamsMods a) 
JSON a => JSON (SetParamsMods a) 

readSetParams :: JSON a => JSValue -> Result (SetParamsMods a)Source

data ExportTarget Source

Custom type for target_node parameter of OpBackupExport, which varies depending on mode. FIXME: this uses an UncheckedList since we don't care about individual rows (just like the Python code tests). But the proper type could be parsed if we wanted.



pInstanceName :: FieldSource

A required instance name (for single-instance LUs).

pInstances :: FieldSource

A list of instances.

pName :: FieldSource

A generic name.

pTagsList :: FieldSource

Tags list.

pTagsObject :: FieldSource

Tags object.

pOutputFields :: FieldSource

Selected output fields.

pShutdownTimeout :: FieldSource

How long to wait for instance to shut down.

pShutdownTimeout' :: FieldSource

Another name for the shutdown timeout, because we like to be inconsistent.

pShutdownInstance :: FieldSource

Whether to shutdown the instance in backup-export.

pForce :: FieldSource

Whether to force the operation.

pIgnoreOfflineNodes :: FieldSource

Whether to ignore offline nodes.

pNodeName :: FieldSource

A required node name (for single-node LUs).

pNodeNames :: FieldSource

List of nodes.

pGroupName :: FieldSource

A required node group name (for single-group LUs).

pMigrationMode :: FieldSource

Migration type (live/non-live).

pMigrationLive :: FieldSource

Obsolete 'live' migration mode (boolean).

pMigrationCleanup :: FieldSource

Migration cleanup parameter.

pForceVariant :: FieldSource

Whether to force an unknown OS variant.

pWaitForSync :: FieldSource

Whether to wait for the disk to synchronize.

pWaitForSyncFalse :: FieldSource

Whether to wait for the disk to synchronize (defaults to false).

pIgnoreConsistency :: FieldSource

Whether to ignore disk consistency

pStorageName :: FieldSource

Storage name.

pUseLocking :: FieldSource

Whether to use synchronization.

pOpportunisticLocking :: FieldSource

Whether to employ opportunistic locking for nodes, meaning nodes already locked by another opcode won't be considered for instance allocation (only when an iallocator is used).

pNameCheck :: FieldSource

Whether to check name.

pNodeGroupAllocPolicy :: FieldSource

Instance allocation policy.

pGroupNodeParams :: FieldSource

Default node parameters for group.

pQueryWhat :: FieldSource

Resource(s) to query for.

pEarlyRelease :: FieldSource

Whether to release locks as soon as possible.

pIpCheck :: FieldSource

Whether to ensure instance's IP address is inactive.

pIpConflictsCheck :: FieldSource

Check for conflicting IPs.

pNoRemember :: FieldSource

Do not remember instance state changes.

pMigrationTargetNode :: FieldSource

Target node for instance migration/failover.

pMoveTargetNode :: FieldSource

Target node for instance move (required).

pStartupPaused :: FieldSource

Pause instance at startup.

pVerbose :: FieldSource

Verbose mode.

Parameters for cluster verification

pDebugSimulateErrors :: FieldSource

Whether to simulate errors (useful for debugging).

pErrorCodes :: FieldSource

Error codes.

pSkipChecks :: FieldSource

Which checks to skip.

pIgnoreErrors :: FieldSource

List of error codes that should be treated as warnings.

pOptGroupName :: FieldSource

Optional group name.

pDiskParams :: FieldSource

Disk templates' parameter defaults.

Parameters for node resource model

pHvState :: FieldSource

Set hypervisor states.

pDiskState :: FieldSource

Set disk states.

pIgnoreIpolicy :: FieldSource

Whether to ignore ipolicy violations.

pAllowRuntimeChgs :: FieldSource

Allow runtime changes while migrating.

pInstDisks :: FieldSource

List of instance disks.

pDiskTemplate :: FieldSource

Instance disk template.

pOptDiskTemplate :: FieldSource

Instance disk template.

pFileDriver :: FieldSource

File driver.

pFileStorageDir :: FieldSource

Directory for storing file-backed disks.

pVgName :: FieldSource

Volume group name.

pEnabledHypervisors :: FieldSource

List of enabled hypervisors.

pEnabledDiskTemplates :: FieldSource

List of enabled disk templates.

pHypervisor :: FieldSource

Selected hypervisor for an instance.

pClusterHvParams :: FieldSource

Cluster-wide hypervisor parameters, hypervisor-dependent.

pInstHvParams :: FieldSource

Instance hypervisor parameters.

pClusterBeParams :: FieldSource

Cluster-wide beparams.

pInstBeParams :: FieldSource

Instance beparams.

pResetDefaults :: FieldSource

Reset instance parameters to default if equal.

pOsHvp :: FieldSource

Cluster-wide per-OS hypervisor parameter defaults.

pClusterOsParams :: FieldSource

Cluster-wide OS parameter defaults.

pInstOsParams :: FieldSource

Instance OS parameters.

pTempOsParams :: FieldSource

Temporary OS parameters (currently only in reinstall, might be added to install as well).

pTempHvParams :: FieldSource

Temporary hypervisor parameters, hypervisor-dependent.

pTempBeParams :: FieldSource

Temporary backend parameters.

pCandidatePoolSize :: FieldSource

Candidate pool size.

pUidPool :: FieldSource

Set UID pool, must be list of lists describing UID ranges (two items, start and end inclusive.

pAddUids :: FieldSource

Extend UID pool, must be list of lists describing UID ranges (two items, start and end inclusive.

pRemoveUids :: FieldSource

Shrink UID pool, must be list of lists describing UID ranges (two items, start and end inclusive) to be removed.

pMaintainNodeHealth :: FieldSource

Whether to automatically maintain node health.

pModifyEtcHosts :: FieldSource

Whether to modify and keep in sync the etchosts files of nodes.

pPreallocWipeDisks :: FieldSource

Whether to wipe disks before allocating them to instances.

pNicParams :: FieldSource

Cluster-wide NIC parameter defaults.

pInstNics :: FieldSource

Instance NIC definitions.

pNdParams :: FieldSource

Cluster-wide node parameter defaults.

pIpolicy :: FieldSource

Cluster-wide ipolicy specs.

pDrbdHelper :: FieldSource

DRBD helper program.

pDefaultIAllocator :: FieldSource

Default iallocator for cluster.

pMasterNetdev :: FieldSource

Master network device.

pMasterNetmask :: FieldSource

Netmask of the master IP.

pReservedLvs :: FieldSource

List of reserved LVs.

pHiddenOs :: FieldSource

Modify list of hidden operating systems: each modification must have two items, the operation and the OS name; the operation can be add or remove.

pBlacklistedOs :: FieldSource

Modify list of blacklisted operating systems: each modification must have two items, the operation and the OS name; the operation can be add or remove.

pUseExternalMipScript :: FieldSource

Whether to use an external master IP address setup script.

pQueryFields :: FieldSource

Requested fields.

pQueryFilter :: FieldSource

Query filter.

pOobCommand :: FieldSource

OOB command to run.

pOobTimeout :: FieldSource

Timeout before the OOB helper will be terminated.

pIgnoreStatus :: FieldSource

Ignores the node offline status for power off.

pPowerDelay :: FieldSource

Time in seconds to wait between powering on nodes.

pPrimaryIp :: FieldSource

Primary IP address.

pSecondaryIp :: FieldSource

Secondary IP address.

pReadd :: FieldSource

Whether node is re-added to cluster.

pNodeGroup :: FieldSource

Initial node group.

pMasterCapable :: FieldSource

Whether node can become master or master candidate.

pVmCapable :: FieldSource

Whether node can host instances.

pNames :: FieldSource

List of names.

pNodes :: FieldSource

List of node names.

pRequiredNodes :: FieldSource

Required list of node names.

pStorageType :: FieldSource

Storage type.

pStorageChanges :: FieldSource

Storage changes (unchecked).

pMasterCandidate :: FieldSource

Whether the node should become a master candidate.

pOffline :: FieldSource

Whether the node should be marked as offline.

pDrained :: FieldSource

Whether the node should be marked as drained.

pAutoPromote :: FieldSource

Whether node(s) should be promoted to master candidate if necessary.

pPowered :: FieldSource

Whether the node should be marked as powered

pIallocator :: FieldSource

Iallocator for deciding the target node for shared-storage instances during migrate and failover.

pRemoteNode :: FieldSource

New secondary node.

pEvacMode :: FieldSource

Node evacuation mode.

pInstCreateMode :: FieldSource

Instance creation mode.

pNoInstall :: FieldSource

Do not install the OS (will disable automatic start).

pInstOs :: FieldSource

OS type for instance installation.

pPrimaryNode :: FieldSource

Primary node for an instance.

pSecondaryNode :: FieldSource

Secondary node for an instance.

pSourceHandshake :: FieldSource

Signed handshake from source (remote import only).

pSourceInstance :: FieldSource

Source instance name (remote import only).

pSourceShutdownTimeout :: FieldSource

How long source instance was given to shut down (remote import only). FIXME: non-negative int, whereas the constant is a plain int.

pSourceX509Ca :: FieldSource

Source X509 CA in PEM format (remote import only).

pSrcNode :: FieldSource

Source node for import.

pSrcPath :: FieldSource

Source directory for import.

pStartInstance :: FieldSource

Whether to start instance after creation.

pInstTags :: FieldSource

Instance tags. FIXME: unify/simplify with pTags, once that migrates to NonEmpty String.

pMultiAllocInstances :: FieldSource

Unchecked list of OpInstanceCreate, used in OpInstanceMultiAlloc.

pIgnoreFailures :: FieldSource

Ignore failures parameter.

pNewName :: FieldSource

New instance or cluster name.

pIgnoreSecondaries :: FieldSource

Whether to start the instance even if secondary disks are failing.

pRebootType :: FieldSource

How to reboot the instance.

pIgnoreDiskSize :: FieldSource

Whether to ignore recorded disk size.

pRecreateDisksInfo :: FieldSource

Disk list for recreate disks.

pStatic :: FieldSource

Whether to only return configuration data without querying nodes.

pInstParamsNicChanges :: FieldSource

InstanceSetParams NIC changes.

pInstParamsDiskChanges :: FieldSource

InstanceSetParams Disk changes.

pRuntimeMem :: FieldSource

New runtime memory.

pOsNameChange :: FieldSource

Change the instance's OS without reinstalling the instance

pDiskIndex :: FieldSource

Disk index for e.g. grow disk.

pDiskChgAmount :: FieldSource

Disk amount to add or grow to.

pDiskChgAbsolute :: FieldSource

Whether the amount parameter is an absolute target or a relative one.

pTargetGroups :: FieldSource

Destination group names or UUIDs (defaults to "all but current group".

pExportMode :: FieldSource

Export mode field.

pExportTargetNode :: FieldSource

Export target_node field, depends on mode.

pRemoveInstance :: FieldSource

Whether to remove instance after export.

pIgnoreRemoveFailures :: FieldSource

Whether to ignore failures while removing instances.

pX509KeyName :: FieldSource

Name of X509 key (remote export only).

pX509DestCA :: FieldSource

Destination X509 CA (remote export only).

pTagSearchPattern :: FieldSource

Search pattern (regular expression). FIXME: this should be compiled at load time?

pRestrictedCommand :: FieldSource

Restricted command name.

pReplaceDisksMode :: FieldSource

Replace disks mode.

pReplaceDisksList :: FieldSource

List of disk indices.

pAllowFailover :: FieldSource

Whether do allow failover in migrations.

Test opcode parameters

pDelayDuration :: FieldSource

Duration parameter for OpTestDelay.

pDelayOnMaster :: FieldSource

on_master field for OpTestDelay.

pDelayOnNodes :: FieldSource

on_nodes field for OpTestDelay.

pDelayRepeat :: FieldSource

Repeat parameter for OpTestDelay.

pIAllocatorDirection :: FieldSource

IAllocator test direction.

pIAllocatorMode :: FieldSource

IAllocator test mode.

pIAllocatorReqName :: FieldSource

IAllocator target name (new instance, node to evac, etc.).

pIAllocatorNics :: FieldSource

Custom OpTestIAllocator nics.

pIAllocatorDisks :: FieldSource

Custom OpTestAllocator disks.

pIAllocatorMemory :: FieldSource

IAllocator memory field.

pIAllocatorVCpus :: FieldSource

IAllocator vcpus field.

pIAllocatorOs :: FieldSource

IAllocator os field.

pIAllocatorInstances :: FieldSource

IAllocator instances field.

pIAllocatorEvacMode :: FieldSource

IAllocator evac mode.

pIAllocatorSpindleUse :: FieldSource

IAllocator spindle use.

pIAllocatorCount :: FieldSource

IAllocator count field.

pJQueueNotifyWaitLock :: FieldSource

OpTestJqueue notify_waitlock.

pJQueueNotifyExec :: FieldSource

OpTestJQueue notify_exec.

pJQueueLogMessages :: FieldSource

OpTestJQueue log_messages.

pJQueueFail :: FieldSource

OpTestJQueue fail attribute.

pTestDummyResult :: FieldSource

OpTestDummy result field.

pTestDummyMessages :: FieldSource

OpTestDummy messages field.

pTestDummyFail :: FieldSource

OpTestDummy fail field.

pTestDummySubmitJobs :: FieldSource

OpTestDummy submit_jobs field.

Network parameters

pNetworkName :: FieldSource

Network name.

pNetworkAddress4 :: FieldSource

Network address (IPv4 subnet). FIXME: no real type for this.

pNetworkGateway4 :: FieldSource

Network gateway (IPv4 address). FIXME: no real type for this.

pNetworkAddress6 :: FieldSource

Network address (IPv6 subnet). FIXME: no real type for this.

pNetworkGateway6 :: FieldSource

Network gateway (IPv6 address). FIXME: no real type for this.

pNetworkMacPrefix :: FieldSource

Network specific mac prefix (that overrides the cluster one).

pNetworkAddRsvdIps :: FieldSource

Network add reserved IPs.

pNetworkRemoveRsvdIps :: FieldSource

Network remove reserved IPs.

pNetworkMode :: FieldSource

Network mode when connecting to a group.

pNetworkLink :: FieldSource

Network link when connecting to a group.

Common opcode parameters

pDryRun :: FieldSource

Run checks only, don't execute.

pDebugLevel :: FieldSource

Debug level.

pOpPriority :: FieldSource

Opcode priority. Note: python uses a separate constant, we're using the actual value we know it's the default.

pDependencies :: FieldSource

Job dependencies.

pComment :: FieldSource

Comment field.

pReason :: FieldSource

Reason trail field.

Entire opcode parameter list

dOldQuery :: [Field]Source

Old-style query opcode, with locking.

dOldQueryNoLocking :: [Field]Source

Old-style query opcode, without locking.