Statistics
| Branch: | Tag: | Revision:

root / src / Ganeti / OpParams.hs @ 731152ce

History | View | Annotate | Download (48.5 kB)

1 92f51573 Iustin Pop
{-# LANGUAGE TemplateHaskell #-}
2 92f51573 Iustin Pop
3 92f51573 Iustin Pop
{-| Implementation of opcodes parameters.
4 92f51573 Iustin Pop
5 92f51573 Iustin Pop
These are defined in a separate module only due to TemplateHaskell
6 92f51573 Iustin Pop
stage restrictions - expressions defined in the current module can't
7 92f51573 Iustin Pop
be passed to splices. So we have to either parameters/repeat each
8 92f51573 Iustin Pop
parameter definition multiple times, or separate them into this
9 92f51573 Iustin Pop
module.
10 92f51573 Iustin Pop
11 92f51573 Iustin Pop
-}
12 92f51573 Iustin Pop
13 92f51573 Iustin Pop
{-
14 92f51573 Iustin Pop
15 015f1517 Jose A. Lopes
Copyright (C) 2012, 2014 Google Inc.
16 92f51573 Iustin Pop
17 92f51573 Iustin Pop
This program is free software; you can redistribute it and/or modify
18 92f51573 Iustin Pop
it under the terms of the GNU General Public License as published by
19 92f51573 Iustin Pop
the Free Software Foundation; either version 2 of the License, or
20 92f51573 Iustin Pop
(at your option) any later version.
21 92f51573 Iustin Pop
22 92f51573 Iustin Pop
This program is distributed in the hope that it will be useful, but
23 92f51573 Iustin Pop
WITHOUT ANY WARRANTY; without even the implied warranty of
24 92f51573 Iustin Pop
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25 92f51573 Iustin Pop
General Public License for more details.
26 92f51573 Iustin Pop
27 92f51573 Iustin Pop
You should have received a copy of the GNU General Public License
28 92f51573 Iustin Pop
along with this program; if not, write to the Free Software
29 92f51573 Iustin Pop
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
30 92f51573 Iustin Pop
02110-1301, USA.
31 92f51573 Iustin Pop
32 92f51573 Iustin Pop
-}
33 92f51573 Iustin Pop
34 92f51573 Iustin Pop
module Ganeti.OpParams
35 d9f1d93c Jose A. Lopes
  ( ReplaceDisksMode(..)
36 92f51573 Iustin Pop
  , DiskIndex
37 92f51573 Iustin Pop
  , mkDiskIndex
38 92f51573 Iustin Pop
  , unDiskIndex
39 6d558717 Iustin Pop
  , DiskAccess(..)
40 d6979f35 Iustin Pop
  , INicParams(..)
41 d6979f35 Iustin Pop
  , IDiskParams(..)
42 c2d3219b Iustin Pop
  , RecreateDisksInfo(..)
43 c2d3219b Iustin Pop
  , DdmOldChanges(..)
44 c2d3219b Iustin Pop
  , SetParamsMods(..)
45 398e9066 Iustin Pop
  , ExportTarget(..)
46 92f51573 Iustin Pop
  , pInstanceName
47 015f1517 Jose A. Lopes
  , pInstanceCommunication
48 93f1e606 Jose A. Lopes
  , pOptInstanceCommunication
49 da4a52a3 Thomas Thrainer
  , pInstanceUuid
50 d6979f35 Iustin Pop
  , pInstances
51 d6979f35 Iustin Pop
  , pName
52 92f51573 Iustin Pop
  , pTagsList
53 92f51573 Iustin Pop
  , pTagsObject
54 34af39e8 Jose A. Lopes
  , pTagsName
55 d6979f35 Iustin Pop
  , pOutputFields
56 d6979f35 Iustin Pop
  , pShutdownTimeout
57 5cbf7832 Jose A. Lopes
  , pShutdownTimeout'
58 67fc4de7 Iustin Pop
  , pShutdownInstance
59 d6979f35 Iustin Pop
  , pForce
60 d6979f35 Iustin Pop
  , pIgnoreOfflineNodes
61 d6979f35 Iustin Pop
  , pNodeName
62 1c3231aa Thomas Thrainer
  , pNodeUuid
63 d6979f35 Iustin Pop
  , pNodeNames
64 1c3231aa Thomas Thrainer
  , pNodeUuids
65 d6979f35 Iustin Pop
  , pGroupName
66 d6979f35 Iustin Pop
  , pMigrationMode
67 d6979f35 Iustin Pop
  , pMigrationLive
68 7d421386 Iustin Pop
  , pMigrationCleanup
69 d6979f35 Iustin Pop
  , pForceVariant
70 d6979f35 Iustin Pop
  , pWaitForSync
71 d6979f35 Iustin Pop
  , pWaitForSyncFalse
72 d6979f35 Iustin Pop
  , pIgnoreConsistency
73 d6979f35 Iustin Pop
  , pStorageName
74 d6979f35 Iustin Pop
  , pUseLocking
75 1f1188c3 Michael Hanselmann
  , pOpportunisticLocking
76 d6979f35 Iustin Pop
  , pNameCheck
77 d6979f35 Iustin Pop
  , pNodeGroupAllocPolicy
78 d6979f35 Iustin Pop
  , pGroupNodeParams
79 d6979f35 Iustin Pop
  , pQueryWhat
80 d6979f35 Iustin Pop
  , pEarlyRelease
81 6d558717 Iustin Pop
  , pIpCheck
82 6d558717 Iustin Pop
  , pIpConflictsCheck
83 d6979f35 Iustin Pop
  , pNoRemember
84 d6979f35 Iustin Pop
  , pMigrationTargetNode
85 1c3231aa Thomas Thrainer
  , pMigrationTargetNodeUuid
86 c2d3219b Iustin Pop
  , pMoveTargetNode
87 1c3231aa Thomas Thrainer
  , pMoveTargetNodeUuid
88 f198cf91 Thomas Thrainer
  , pMoveCompress
89 896cc964 Thomas Thrainer
  , pBackupCompress
90 d6979f35 Iustin Pop
  , pStartupPaused
91 d6979f35 Iustin Pop
  , pVerbose
92 d6979f35 Iustin Pop
  , pDebugSimulateErrors
93 d6979f35 Iustin Pop
  , pErrorCodes
94 d6979f35 Iustin Pop
  , pSkipChecks
95 d6979f35 Iustin Pop
  , pIgnoreErrors
96 d6979f35 Iustin Pop
  , pOptGroupName
97 d6979f35 Iustin Pop
  , pDiskParams
98 d6979f35 Iustin Pop
  , pHvState
99 d6979f35 Iustin Pop
  , pDiskState
100 d6979f35 Iustin Pop
  , pIgnoreIpolicy
101 df58ca1c Dimitris Aragiorgis
  , pHotplug
102 96ed3a3e Dimitris Aragiorgis
  , pHotplugIfPossible
103 d6979f35 Iustin Pop
  , pAllowRuntimeChgs
104 6d558717 Iustin Pop
  , pInstDisks
105 6d558717 Iustin Pop
  , pDiskTemplate
106 88127c47 Iustin Pop
  , pOptDiskTemplate
107 6d558717 Iustin Pop
  , pFileDriver
108 6d558717 Iustin Pop
  , pFileStorageDir
109 5ce621ab Helga Velroyen
  , pClusterFileStorageDir
110 5ce621ab Helga Velroyen
  , pClusterSharedFileStorageDir
111 d3e6fd0e Santi Raffa
  , pClusterGlusterStorageDir
112 42fda604 Jose A. Lopes
  , pInstanceCommunicationNetwork
113 d6979f35 Iustin Pop
  , pVgName
114 d6979f35 Iustin Pop
  , pEnabledHypervisors
115 6d558717 Iustin Pop
  , pHypervisor
116 d6979f35 Iustin Pop
  , pClusterHvParams
117 6d558717 Iustin Pop
  , pInstHvParams
118 d6979f35 Iustin Pop
  , pClusterBeParams
119 6d558717 Iustin Pop
  , pInstBeParams
120 6d558717 Iustin Pop
  , pResetDefaults
121 d6979f35 Iustin Pop
  , pOsHvp
122 6d558717 Iustin Pop
  , pClusterOsParams
123 07e3c124 Santi Raffa
  , pClusterOsParamsPrivate
124 6d558717 Iustin Pop
  , pInstOsParams
125 6bce7ba2 Santi Raffa
  , pInstOsParamsPrivate
126 6bce7ba2 Santi Raffa
  , pInstOsParamsSecret
127 d6979f35 Iustin Pop
  , pCandidatePoolSize
128 ad756c77 Klaus Aehlig
  , pMaxRunningJobs
129 d6979f35 Iustin Pop
  , pUidPool
130 d6979f35 Iustin Pop
  , pAddUids
131 d6979f35 Iustin Pop
  , pRemoveUids
132 d6979f35 Iustin Pop
  , pMaintainNodeHealth
133 75f2ff7d Michele Tartara
  , pModifyEtcHosts
134 d6979f35 Iustin Pop
  , pPreallocWipeDisks
135 d6979f35 Iustin Pop
  , pNicParams
136 6d558717 Iustin Pop
  , pInstNics
137 d6979f35 Iustin Pop
  , pNdParams
138 d6979f35 Iustin Pop
  , pIpolicy
139 d6979f35 Iustin Pop
  , pDrbdHelper
140 d6979f35 Iustin Pop
  , pDefaultIAllocator
141 0359e5d0 Spyros Trigazis
  , pDefaultIAllocatorParams
142 d6979f35 Iustin Pop
  , pMasterNetdev
143 d6979f35 Iustin Pop
  , pMasterNetmask
144 d6979f35 Iustin Pop
  , pReservedLvs
145 d6979f35 Iustin Pop
  , pHiddenOs
146 d6979f35 Iustin Pop
  , pBlacklistedOs
147 d6979f35 Iustin Pop
  , pUseExternalMipScript
148 d6979f35 Iustin Pop
  , pQueryFields
149 d6979f35 Iustin Pop
  , pQueryFilter
150 34af39e8 Jose A. Lopes
  , pQueryFieldsFields
151 d6979f35 Iustin Pop
  , pOobCommand
152 d6979f35 Iustin Pop
  , pOobTimeout
153 d6979f35 Iustin Pop
  , pIgnoreStatus
154 d6979f35 Iustin Pop
  , pPowerDelay
155 d6979f35 Iustin Pop
  , pPrimaryIp
156 d6979f35 Iustin Pop
  , pSecondaryIp
157 d6979f35 Iustin Pop
  , pReadd
158 d6979f35 Iustin Pop
  , pNodeGroup
159 d6979f35 Iustin Pop
  , pMasterCapable
160 d6979f35 Iustin Pop
  , pVmCapable
161 d6979f35 Iustin Pop
  , pNames
162 d6979f35 Iustin Pop
  , pNodes
163 398e9066 Iustin Pop
  , pRequiredNodes
164 1c3231aa Thomas Thrainer
  , pRequiredNodeUuids
165 d6979f35 Iustin Pop
  , pStorageType
166 fc963293 Jose A. Lopes
  , pOptStorageType
167 d6979f35 Iustin Pop
  , pStorageChanges
168 d6979f35 Iustin Pop
  , pMasterCandidate
169 d6979f35 Iustin Pop
  , pOffline
170 d6979f35 Iustin Pop
  , pDrained
171 d6979f35 Iustin Pop
  , pAutoPromote
172 d6979f35 Iustin Pop
  , pPowered
173 d6979f35 Iustin Pop
  , pIallocator
174 d6979f35 Iustin Pop
  , pRemoteNode
175 1c3231aa Thomas Thrainer
  , pRemoteNodeUuid
176 d6979f35 Iustin Pop
  , pEvacMode
177 6d558717 Iustin Pop
  , pInstCreateMode
178 6d558717 Iustin Pop
  , pNoInstall
179 6d558717 Iustin Pop
  , pInstOs
180 6d558717 Iustin Pop
  , pPrimaryNode
181 1c3231aa Thomas Thrainer
  , pPrimaryNodeUuid
182 6d558717 Iustin Pop
  , pSecondaryNode
183 1c3231aa Thomas Thrainer
  , pSecondaryNodeUuid
184 6d558717 Iustin Pop
  , pSourceHandshake
185 6d558717 Iustin Pop
  , pSourceInstance
186 6d558717 Iustin Pop
  , pSourceShutdownTimeout
187 6d558717 Iustin Pop
  , pSourceX509Ca
188 6d558717 Iustin Pop
  , pSrcNode
189 1c3231aa Thomas Thrainer
  , pSrcNodeUuid
190 6d558717 Iustin Pop
  , pSrcPath
191 6d558717 Iustin Pop
  , pStartInstance
192 6d558717 Iustin Pop
  , pInstTags
193 c2d3219b Iustin Pop
  , pMultiAllocInstances
194 c2d3219b Iustin Pop
  , pTempOsParams
195 da0aa302 Santi Raffa
  , pTempOsParamsPrivate
196 da0aa302 Santi Raffa
  , pTempOsParamsSecret
197 c2d3219b Iustin Pop
  , pTempHvParams
198 c2d3219b Iustin Pop
  , pTempBeParams
199 c2d3219b Iustin Pop
  , pIgnoreFailures
200 c2d3219b Iustin Pop
  , pNewName
201 c2d3219b Iustin Pop
  , pIgnoreSecondaries
202 c2d3219b Iustin Pop
  , pRebootType
203 c2d3219b Iustin Pop
  , pIgnoreDiskSize
204 c2d3219b Iustin Pop
  , pRecreateDisksInfo
205 c2d3219b Iustin Pop
  , pStatic
206 c2d3219b Iustin Pop
  , pInstParamsNicChanges
207 c2d3219b Iustin Pop
  , pInstParamsDiskChanges
208 c2d3219b Iustin Pop
  , pRuntimeMem
209 c2d3219b Iustin Pop
  , pOsNameChange
210 c2d3219b Iustin Pop
  , pDiskIndex
211 c2d3219b Iustin Pop
  , pDiskChgAmount
212 c2d3219b Iustin Pop
  , pDiskChgAbsolute
213 c2d3219b Iustin Pop
  , pTargetGroups
214 398e9066 Iustin Pop
  , pExportMode
215 398e9066 Iustin Pop
  , pExportTargetNode
216 1c3231aa Thomas Thrainer
  , pExportTargetNodeUuid
217 398e9066 Iustin Pop
  , pRemoveInstance
218 398e9066 Iustin Pop
  , pIgnoreRemoveFailures
219 398e9066 Iustin Pop
  , pX509KeyName
220 398e9066 Iustin Pop
  , pX509DestCA
221 a451dae2 Iustin Pop
  , pTagSearchPattern
222 1cd563e2 Iustin Pop
  , pRestrictedCommand
223 7d421386 Iustin Pop
  , pReplaceDisksMode
224 7d421386 Iustin Pop
  , pReplaceDisksList
225 7d421386 Iustin Pop
  , pAllowFailover
226 7d421386 Iustin Pop
  , pDelayDuration
227 7d421386 Iustin Pop
  , pDelayOnMaster
228 7d421386 Iustin Pop
  , pDelayOnNodes
229 1c3231aa Thomas Thrainer
  , pDelayOnNodeUuids
230 a451dae2 Iustin Pop
  , pDelayRepeat
231 2868f3f7 Hrvoje Ribicic
  , pDelayInterruptible
232 a3f02317 Iustin Pop
  , pIAllocatorDirection
233 a3f02317 Iustin Pop
  , pIAllocatorMode
234 a3f02317 Iustin Pop
  , pIAllocatorReqName
235 a3f02317 Iustin Pop
  , pIAllocatorNics
236 a3f02317 Iustin Pop
  , pIAllocatorDisks
237 a3f02317 Iustin Pop
  , pIAllocatorMemory
238 a3f02317 Iustin Pop
  , pIAllocatorVCpus
239 a3f02317 Iustin Pop
  , pIAllocatorOs
240 a3f02317 Iustin Pop
  , pIAllocatorInstances
241 a3f02317 Iustin Pop
  , pIAllocatorEvacMode
242 a3f02317 Iustin Pop
  , pIAllocatorSpindleUse
243 a3f02317 Iustin Pop
  , pIAllocatorCount
244 a3f02317 Iustin Pop
  , pJQueueNotifyWaitLock
245 a3f02317 Iustin Pop
  , pJQueueNotifyExec
246 a3f02317 Iustin Pop
  , pJQueueLogMessages
247 a3f02317 Iustin Pop
  , pJQueueFail
248 a3f02317 Iustin Pop
  , pTestDummyResult
249 a3f02317 Iustin Pop
  , pTestDummyMessages
250 a3f02317 Iustin Pop
  , pTestDummyFail
251 a3f02317 Iustin Pop
  , pTestDummySubmitJobs
252 8d239fa4 Iustin Pop
  , pNetworkName
253 8d239fa4 Iustin Pop
  , pNetworkAddress4
254 8d239fa4 Iustin Pop
  , pNetworkGateway4
255 8d239fa4 Iustin Pop
  , pNetworkAddress6
256 8d239fa4 Iustin Pop
  , pNetworkGateway6
257 8d239fa4 Iustin Pop
  , pNetworkMacPrefix
258 8d239fa4 Iustin Pop
  , pNetworkAddRsvdIps
259 8d239fa4 Iustin Pop
  , pNetworkRemoveRsvdIps
260 8d239fa4 Iustin Pop
  , pNetworkMode
261 8d239fa4 Iustin Pop
  , pNetworkLink
262 b46ba79c Iustin Pop
  , pDryRun
263 b46ba79c Iustin Pop
  , pDebugLevel
264 b46ba79c Iustin Pop
  , pOpPriority
265 b46ba79c Iustin Pop
  , pDependencies
266 b46ba79c Iustin Pop
  , pComment
267 516a0e94 Michele Tartara
  , pReason
268 66af5ec5 Helga Velroyen
  , pEnabledDiskTemplates
269 92f51573 Iustin Pop
  ) where
270 92f51573 Iustin Pop
271 e817723c Klaus Aehlig
import Control.Monad (liftM, mplus)
272 34af39e8 Jose A. Lopes
import Text.JSON (JSON, JSValue(..), JSObject (..), readJSON, showJSON,
273 34af39e8 Jose A. Lopes
                  fromJSString, toJSObject)
274 c2d3219b Iustin Pop
import qualified Text.JSON
275 92f51573 Iustin Pop
import Text.JSON.Pretty (pp_value)
276 92f51573 Iustin Pop
277 6d558717 Iustin Pop
import Ganeti.BasicTypes
278 92f51573 Iustin Pop
import qualified Ganeti.Constants as C
279 92f51573 Iustin Pop
import Ganeti.THH
280 72375ff8 Petr Pudlak
import Ganeti.THH.Field
281 eabbda6f Klaus Aehlig
import Ganeti.Utils
282 92f51573 Iustin Pop
import Ganeti.JSON
283 d6979f35 Iustin Pop
import Ganeti.Types
284 d6979f35 Iustin Pop
import qualified Ganeti.Query.Language as Qlang
285 92f51573 Iustin Pop
286 34af39e8 Jose A. Lopes
-- * Helper functions and types
287 d6979f35 Iustin Pop
288 d6979f35 Iustin Pop
-- | Build a boolean field.
289 d6979f35 Iustin Pop
booleanField :: String -> Field
290 d6979f35 Iustin Pop
booleanField = flip simpleField [t| Bool |]
291 d6979f35 Iustin Pop
292 d6979f35 Iustin Pop
-- | Default a field to 'False'.
293 d6979f35 Iustin Pop
defaultFalse :: String -> Field
294 d6979f35 Iustin Pop
defaultFalse = defaultField [| False |] . booleanField
295 d6979f35 Iustin Pop
296 d6979f35 Iustin Pop
-- | Default a field to 'True'.
297 d6979f35 Iustin Pop
defaultTrue :: String -> Field
298 d6979f35 Iustin Pop
defaultTrue = defaultField [| True |] . booleanField
299 d6979f35 Iustin Pop
300 d6979f35 Iustin Pop
-- | An alias for a 'String' field.
301 d6979f35 Iustin Pop
stringField :: String -> Field
302 d6979f35 Iustin Pop
stringField = flip simpleField [t| String |]
303 d6979f35 Iustin Pop
304 d6979f35 Iustin Pop
-- | An alias for an optional string field.
305 d6979f35 Iustin Pop
optionalStringField :: String -> Field
306 d6979f35 Iustin Pop
optionalStringField = optionalField . stringField
307 d6979f35 Iustin Pop
308 d6979f35 Iustin Pop
-- | An alias for an optional non-empty string field.
309 d6979f35 Iustin Pop
optionalNEStringField :: String -> Field
310 d6979f35 Iustin Pop
optionalNEStringField = optionalField . flip simpleField [t| NonEmptyString |]
311 d6979f35 Iustin Pop
312 6d558717 Iustin Pop
-- | Function to force a non-negative value, without returning via a
313 6d558717 Iustin Pop
-- monad. This is needed for, and should be used /only/ in the case of
314 6d558717 Iustin Pop
-- forcing constants. In case the constant is wrong (< 0), this will
315 6d558717 Iustin Pop
-- become a runtime error.
316 6d558717 Iustin Pop
forceNonNeg :: (Num a, Ord a, Show a) => a -> NonNegative a
317 6d558717 Iustin Pop
forceNonNeg i = case mkNonNegative i of
318 6d558717 Iustin Pop
                  Ok n -> n
319 6d558717 Iustin Pop
                  Bad msg -> error msg
320 6d558717 Iustin Pop
321 92f51573 Iustin Pop
-- ** Disks
322 92f51573 Iustin Pop
323 92f51573 Iustin Pop
-- | Disk index type (embedding constraints on the index value via a
324 92f51573 Iustin Pop
-- smart constructor).
325 92f51573 Iustin Pop
newtype DiskIndex = DiskIndex { unDiskIndex :: Int }
326 139c0683 Iustin Pop
  deriving (Show, Eq, Ord)
327 92f51573 Iustin Pop
328 92f51573 Iustin Pop
-- | Smart constructor for 'DiskIndex'.
329 92f51573 Iustin Pop
mkDiskIndex :: (Monad m) => Int -> m DiskIndex
330 92f51573 Iustin Pop
mkDiskIndex i | i >= 0 && i < C.maxDisks = return (DiskIndex i)
331 92f51573 Iustin Pop
              | otherwise = fail $ "Invalid value for disk index '" ++
332 92f51573 Iustin Pop
                            show i ++ "', required between 0 and " ++
333 92f51573 Iustin Pop
                            show C.maxDisks
334 92f51573 Iustin Pop
335 92f51573 Iustin Pop
instance JSON DiskIndex where
336 92f51573 Iustin Pop
  readJSON v = readJSON v >>= mkDiskIndex
337 92f51573 Iustin Pop
  showJSON = showJSON . unDiskIndex
338 92f51573 Iustin Pop
339 d6979f35 Iustin Pop
-- ** I* param types
340 d6979f35 Iustin Pop
341 d6979f35 Iustin Pop
-- | Type holding disk access modes.
342 d6979f35 Iustin Pop
$(declareSADT "DiskAccess"
343 d6979f35 Iustin Pop
  [ ("DiskReadOnly",  'C.diskRdonly)
344 d6979f35 Iustin Pop
  , ("DiskReadWrite", 'C.diskRdwr)
345 d6979f35 Iustin Pop
  ])
346 d6979f35 Iustin Pop
$(makeJSONInstance ''DiskAccess)
347 d6979f35 Iustin Pop
348 d6979f35 Iustin Pop
-- | NIC modification definition.
349 d6979f35 Iustin Pop
$(buildObject "INicParams" "inic"
350 34af39e8 Jose A. Lopes
  [ optionalField $ simpleField C.inicMac    [t| NonEmptyString |]
351 34af39e8 Jose A. Lopes
  , optionalField $ simpleField C.inicIp     [t| String         |]
352 34af39e8 Jose A. Lopes
  , optionalField $ simpleField C.inicMode   [t| NonEmptyString |]
353 34af39e8 Jose A. Lopes
  , optionalField $ simpleField C.inicLink   [t| NonEmptyString |]
354 34af39e8 Jose A. Lopes
  , optionalField $ simpleField C.inicName   [t| NonEmptyString |]
355 7295a6dc Hrvoje Ribicic
  , optionalField $ simpleField C.inicVlan   [t| String         |]
356 34af39e8 Jose A. Lopes
  , optionalField $ simpleField C.inicBridge [t| NonEmptyString |]
357 d6979f35 Iustin Pop
  ])
358 d6979f35 Iustin Pop
359 eabbda6f Klaus Aehlig
-- | Disk modification definition.
360 d6979f35 Iustin Pop
$(buildObject "IDiskParams" "idisk"
361 eabbda6f Klaus Aehlig
  [ specialNumericalField 'parseUnitAssumeBinary . optionalField
362 eabbda6f Klaus Aehlig
      $ simpleField C.idiskSize               [t| Int            |]
363 6d558717 Iustin Pop
  , optionalField $ simpleField C.idiskMode   [t| DiskAccess     |]
364 6d558717 Iustin Pop
  , optionalField $ simpleField C.idiskAdopt  [t| NonEmptyString |]
365 6d558717 Iustin Pop
  , optionalField $ simpleField C.idiskVg     [t| NonEmptyString |]
366 6d558717 Iustin Pop
  , optionalField $ simpleField C.idiskMetavg [t| NonEmptyString |]
367 4e4433e8 Christos Stavrakakis
  , optionalField $ simpleField C.idiskName   [t| NonEmptyString |]
368 b75430d9 Ilias Tsitsimpis
  , optionalField $ simpleField C.idiskProvider [t| NonEmptyString |]
369 2ca1b52d Klaus Aehlig
  , optionalField $ simpleField C.idiskSpindles [t| Int          |]
370 2e09344f Klaus Aehlig
  , andRestArguments "opaque"
371 d6979f35 Iustin Pop
  ])
372 d6979f35 Iustin Pop
373 c2d3219b Iustin Pop
-- | Disk changes type for OpInstanceRecreateDisks. This is a bit
374 c2d3219b Iustin Pop
-- strange, because the type in Python is something like Either
375 c2d3219b Iustin Pop
-- [DiskIndex] [DiskChanges], but we can't represent the type of an
376 c2d3219b Iustin Pop
-- empty list in JSON, so we have to add a custom case for the empty
377 c2d3219b Iustin Pop
-- list.
378 c2d3219b Iustin Pop
data RecreateDisksInfo
379 c2d3219b Iustin Pop
  = RecreateDisksAll
380 c2d3219b Iustin Pop
  | RecreateDisksIndices (NonEmpty DiskIndex)
381 c2d3219b Iustin Pop
  | RecreateDisksParams (NonEmpty (DiskIndex, IDiskParams))
382 139c0683 Iustin Pop
    deriving (Eq, Show)
383 c2d3219b Iustin Pop
384 c2d3219b Iustin Pop
readRecreateDisks :: JSValue -> Text.JSON.Result RecreateDisksInfo
385 c2d3219b Iustin Pop
readRecreateDisks (JSArray []) = return RecreateDisksAll
386 c2d3219b Iustin Pop
readRecreateDisks v =
387 c2d3219b Iustin Pop
  case readJSON v::Text.JSON.Result [DiskIndex] of
388 c2d3219b Iustin Pop
    Text.JSON.Ok indices -> liftM RecreateDisksIndices (mkNonEmpty indices)
389 c2d3219b Iustin Pop
    _ -> case readJSON v::Text.JSON.Result [(DiskIndex, IDiskParams)] of
390 c2d3219b Iustin Pop
           Text.JSON.Ok params -> liftM RecreateDisksParams (mkNonEmpty params)
391 c2d3219b Iustin Pop
           _ -> fail $ "Can't parse disk information as either list of disk"
392 f56013fd Iustin Pop
                ++ " indices or list of disk parameters; value received:"
393 c2d3219b Iustin Pop
                ++ show (pp_value v)
394 c2d3219b Iustin Pop
395 c2d3219b Iustin Pop
instance JSON RecreateDisksInfo where
396 c2d3219b Iustin Pop
  readJSON = readRecreateDisks
397 c2d3219b Iustin Pop
  showJSON  RecreateDisksAll            = showJSON ()
398 c2d3219b Iustin Pop
  showJSON (RecreateDisksIndices idx)   = showJSON idx
399 c2d3219b Iustin Pop
  showJSON (RecreateDisksParams params) = showJSON params
400 c2d3219b Iustin Pop
401 c2d3219b Iustin Pop
-- | Simple type for old-style ddm changes.
402 c2d3219b Iustin Pop
data DdmOldChanges = DdmOldIndex (NonNegative Int)
403 c2d3219b Iustin Pop
                   | DdmOldMod DdmSimple
404 139c0683 Iustin Pop
                     deriving (Eq, Show)
405 c2d3219b Iustin Pop
406 c2d3219b Iustin Pop
readDdmOldChanges :: JSValue -> Text.JSON.Result DdmOldChanges
407 c2d3219b Iustin Pop
readDdmOldChanges v =
408 c2d3219b Iustin Pop
  case readJSON v::Text.JSON.Result (NonNegative Int) of
409 c2d3219b Iustin Pop
    Text.JSON.Ok nn -> return $ DdmOldIndex nn
410 c2d3219b Iustin Pop
    _ -> case readJSON v::Text.JSON.Result DdmSimple of
411 c2d3219b Iustin Pop
           Text.JSON.Ok ddms -> return $ DdmOldMod ddms
412 c2d3219b Iustin Pop
           _ -> fail $ "Can't parse value '" ++ show (pp_value v) ++ "' as"
413 c2d3219b Iustin Pop
                ++ " either index or modification"
414 c2d3219b Iustin Pop
415 c2d3219b Iustin Pop
instance JSON DdmOldChanges where
416 c2d3219b Iustin Pop
  showJSON (DdmOldIndex i) = showJSON i
417 c2d3219b Iustin Pop
  showJSON (DdmOldMod m)   = showJSON m
418 c2d3219b Iustin Pop
  readJSON = readDdmOldChanges
419 c2d3219b Iustin Pop
420 c2d3219b Iustin Pop
-- | Instance disk or nic modifications.
421 c2d3219b Iustin Pop
data SetParamsMods a
422 c2d3219b Iustin Pop
  = SetParamsEmpty
423 c2d3219b Iustin Pop
  | SetParamsDeprecated (NonEmpty (DdmOldChanges, a))
424 c2d3219b Iustin Pop
  | SetParamsNew (NonEmpty (DdmFull, Int, a))
425 e817723c Klaus Aehlig
  | SetParamsNewName (NonEmpty (DdmFull, String, a))
426 139c0683 Iustin Pop
    deriving (Eq, Show)
427 c2d3219b Iustin Pop
428 c2d3219b Iustin Pop
-- | Custom deserialiser for 'SetParamsMods'.
429 c2d3219b Iustin Pop
readSetParams :: (JSON a) => JSValue -> Text.JSON.Result (SetParamsMods a)
430 c2d3219b Iustin Pop
readSetParams (JSArray []) = return SetParamsEmpty
431 c2d3219b Iustin Pop
readSetParams v =
432 e817723c Klaus Aehlig
  liftM SetParamsDeprecated (readJSON v)
433 e817723c Klaus Aehlig
  `mplus` liftM SetParamsNew (readJSON v)
434 e817723c Klaus Aehlig
  `mplus` liftM SetParamsNewName (readJSON v)
435 c2d3219b Iustin Pop
436 c2d3219b Iustin Pop
instance (JSON a) => JSON (SetParamsMods a) where
437 c2d3219b Iustin Pop
  showJSON SetParamsEmpty = showJSON ()
438 c2d3219b Iustin Pop
  showJSON (SetParamsDeprecated v) = showJSON v
439 c2d3219b Iustin Pop
  showJSON (SetParamsNew v) = showJSON v
440 e817723c Klaus Aehlig
  showJSON (SetParamsNewName v) = showJSON v
441 c2d3219b Iustin Pop
  readJSON = readSetParams
442 c2d3219b Iustin Pop
443 398e9066 Iustin Pop
-- | Custom type for target_node parameter of OpBackupExport, which
444 34af39e8 Jose A. Lopes
-- varies depending on mode. FIXME: this uses an [JSValue] since
445 398e9066 Iustin Pop
-- we don't care about individual rows (just like the Python code
446 398e9066 Iustin Pop
-- tests). But the proper type could be parsed if we wanted.
447 398e9066 Iustin Pop
data ExportTarget = ExportTargetLocal NonEmptyString
448 34af39e8 Jose A. Lopes
                  | ExportTargetRemote [JSValue]
449 139c0683 Iustin Pop
                    deriving (Eq, Show)
450 398e9066 Iustin Pop
451 398e9066 Iustin Pop
-- | Custom reader for 'ExportTarget'.
452 398e9066 Iustin Pop
readExportTarget :: JSValue -> Text.JSON.Result ExportTarget
453 398e9066 Iustin Pop
readExportTarget (JSString s) = liftM ExportTargetLocal $
454 398e9066 Iustin Pop
                                mkNonEmpty (fromJSString s)
455 398e9066 Iustin Pop
readExportTarget (JSArray arr) = return $ ExportTargetRemote arr
456 398e9066 Iustin Pop
readExportTarget v = fail $ "Invalid value received for 'target_node': " ++
457 398e9066 Iustin Pop
                     show (pp_value v)
458 398e9066 Iustin Pop
459 398e9066 Iustin Pop
instance JSON ExportTarget where
460 398e9066 Iustin Pop
  showJSON (ExportTargetLocal s)  = showJSON s
461 398e9066 Iustin Pop
  showJSON (ExportTargetRemote l) = showJSON l
462 398e9066 Iustin Pop
  readJSON = readExportTarget
463 398e9066 Iustin Pop
464 34af39e8 Jose A. Lopes
-- * Common opcode parameters
465 d6979f35 Iustin Pop
466 34af39e8 Jose A. Lopes
pDryRun :: Field
467 34af39e8 Jose A. Lopes
pDryRun =
468 34af39e8 Jose A. Lopes
  withDoc "Run checks only, don't execute" .
469 34af39e8 Jose A. Lopes
  optionalField $ booleanField "dry_run"
470 d6979f35 Iustin Pop
471 34af39e8 Jose A. Lopes
pDebugLevel :: Field
472 34af39e8 Jose A. Lopes
pDebugLevel =
473 34af39e8 Jose A. Lopes
  withDoc "Debug level" .
474 34af39e8 Jose A. Lopes
  optionalField $ simpleField "debug_level" [t| NonNegative Int |]
475 d6979f35 Iustin Pop
476 34af39e8 Jose A. Lopes
pOpPriority :: Field
477 34af39e8 Jose A. Lopes
pOpPriority =
478 34af39e8 Jose A. Lopes
  withDoc "Opcode priority. Note: python uses a separate constant,\
479 34af39e8 Jose A. Lopes
          \ we're using the actual value we know it's the default" .
480 34af39e8 Jose A. Lopes
  defaultField [| OpPrioNormal |] $
481 34af39e8 Jose A. Lopes
  simpleField "priority" [t| OpSubmitPriority |]
482 1c3231aa Thomas Thrainer
483 34af39e8 Jose A. Lopes
pDependencies :: Field
484 34af39e8 Jose A. Lopes
pDependencies =
485 34af39e8 Jose A. Lopes
  withDoc "Job dependencies" .
486 34af39e8 Jose A. Lopes
  optionalNullSerField $ simpleField "depends" [t| [JobDependency] |]
487 c2d3219b Iustin Pop
488 34af39e8 Jose A. Lopes
pComment :: Field
489 34af39e8 Jose A. Lopes
pComment =
490 34af39e8 Jose A. Lopes
  withDoc "Comment field" .
491 34af39e8 Jose A. Lopes
  optionalNullSerField $ stringField "comment"
492 1c3231aa Thomas Thrainer
493 34af39e8 Jose A. Lopes
pReason :: Field
494 34af39e8 Jose A. Lopes
pReason =
495 34af39e8 Jose A. Lopes
  withDoc "Reason trail field" $
496 34af39e8 Jose A. Lopes
  simpleField C.opcodeReason [t| ReasonTrail |]
497 d6979f35 Iustin Pop
498 34af39e8 Jose A. Lopes
-- * Parameters
499 d6979f35 Iustin Pop
500 d6979f35 Iustin Pop
pDebugSimulateErrors :: Field
501 34af39e8 Jose A. Lopes
pDebugSimulateErrors =
502 34af39e8 Jose A. Lopes
  withDoc "Whether to simulate errors (useful for debugging)" $
503 34af39e8 Jose A. Lopes
  defaultFalse "debug_simulate_errors"
504 d6979f35 Iustin Pop
505 d6979f35 Iustin Pop
pErrorCodes :: Field
506 f048c574 Thomas Thrainer
pErrorCodes =
507 34af39e8 Jose A. Lopes
  withDoc "Error codes" $
508 34af39e8 Jose A. Lopes
  defaultFalse "error_codes"
509 d6979f35 Iustin Pop
510 d6979f35 Iustin Pop
pSkipChecks :: Field
511 f048c574 Thomas Thrainer
pSkipChecks =
512 34af39e8 Jose A. Lopes
  withDoc "Which checks to skip" .
513 4651c69f Jose A. Lopes
  defaultField [| emptyListSet |] $
514 4651c69f Jose A. Lopes
  simpleField "skip_checks" [t| ListSet VerifyOptionalChecks |]
515 d6979f35 Iustin Pop
516 d6979f35 Iustin Pop
pIgnoreErrors :: Field
517 34af39e8 Jose A. Lopes
pIgnoreErrors =
518 34af39e8 Jose A. Lopes
  withDoc "List of error codes that should be treated as warnings" .
519 4651c69f Jose A. Lopes
  defaultField [| emptyListSet |] $
520 4651c69f Jose A. Lopes
  simpleField "ignore_errors" [t| ListSet CVErrorCode |]
521 d6979f35 Iustin Pop
522 34af39e8 Jose A. Lopes
pVerbose :: Field
523 34af39e8 Jose A. Lopes
pVerbose =
524 34af39e8 Jose A. Lopes
  withDoc "Verbose mode" $
525 34af39e8 Jose A. Lopes
  defaultFalse "verbose"
526 d6979f35 Iustin Pop
527 34af39e8 Jose A. Lopes
pOptGroupName :: Field
528 34af39e8 Jose A. Lopes
pOptGroupName =
529 34af39e8 Jose A. Lopes
  withDoc "Optional group name" .
530 34af39e8 Jose A. Lopes
  renameField "OptGroupName" .
531 34af39e8 Jose A. Lopes
  optionalField $ simpleField "group_name" [t| NonEmptyString |]
532 d6979f35 Iustin Pop
533 34af39e8 Jose A. Lopes
pGroupName :: Field
534 34af39e8 Jose A. Lopes
pGroupName =
535 34af39e8 Jose A. Lopes
  withDoc "Group name" $
536 34af39e8 Jose A. Lopes
  simpleField "group_name" [t| NonEmptyString |]
537 d6979f35 Iustin Pop
538 df58ca1c Dimitris Aragiorgis
-- | Whether to hotplug device.
539 df58ca1c Dimitris Aragiorgis
pHotplug :: Field
540 df58ca1c Dimitris Aragiorgis
pHotplug = defaultFalse "hotplug"
541 df58ca1c Dimitris Aragiorgis
542 96ed3a3e Dimitris Aragiorgis
pHotplugIfPossible :: Field
543 96ed3a3e Dimitris Aragiorgis
pHotplugIfPossible = defaultFalse "hotplug_if_possible"
544 96ed3a3e Dimitris Aragiorgis
545 34af39e8 Jose A. Lopes
pInstances :: Field
546 34af39e8 Jose A. Lopes
pInstances =
547 34af39e8 Jose A. Lopes
  withDoc "List of instances" .
548 34af39e8 Jose A. Lopes
  defaultField [| [] |] $
549 34af39e8 Jose A. Lopes
  simpleField "instances" [t| [NonEmptyString] |]
550 6d558717 Iustin Pop
551 34af39e8 Jose A. Lopes
pOutputFields :: Field
552 34af39e8 Jose A. Lopes
pOutputFields =
553 34af39e8 Jose A. Lopes
  withDoc "Selected output fields" $
554 34af39e8 Jose A. Lopes
  simpleField "output_fields" [t| [NonEmptyString] |]
555 6d558717 Iustin Pop
556 34af39e8 Jose A. Lopes
pName :: Field
557 34af39e8 Jose A. Lopes
pName =
558 34af39e8 Jose A. Lopes
  withDoc "A generic name" $
559 34af39e8 Jose A. Lopes
  simpleField "name" [t| NonEmptyString |]
560 6d558717 Iustin Pop
561 34af39e8 Jose A. Lopes
pForce :: Field
562 34af39e8 Jose A. Lopes
pForce =
563 34af39e8 Jose A. Lopes
  withDoc "Whether to force the operation" $
564 34af39e8 Jose A. Lopes
  defaultFalse "force"
565 88127c47 Iustin Pop
566 34af39e8 Jose A. Lopes
pHvState :: Field
567 34af39e8 Jose A. Lopes
pHvState =
568 34af39e8 Jose A. Lopes
  withDoc "Set hypervisor states" .
569 34af39e8 Jose A. Lopes
  optionalField $ simpleField "hv_state" [t| JSObject JSValue |]
570 6d558717 Iustin Pop
571 34af39e8 Jose A. Lopes
pDiskState :: Field
572 34af39e8 Jose A. Lopes
pDiskState =
573 34af39e8 Jose A. Lopes
  withDoc "Set disk states" .
574 34af39e8 Jose A. Lopes
  optionalField $ simpleField "disk_state" [t| JSObject JSValue |]
575 d6979f35 Iustin Pop
576 5ce621ab Helga Velroyen
-- | Cluster-wide default directory for storing file-backed disks.
577 5ce621ab Helga Velroyen
pClusterFileStorageDir :: Field
578 5ce621ab Helga Velroyen
pClusterFileStorageDir =
579 5ce621ab Helga Velroyen
  renameField "ClusterFileStorageDir" $
580 5ce621ab Helga Velroyen
  optionalStringField "file_storage_dir"
581 5ce621ab Helga Velroyen
582 5ce621ab Helga Velroyen
-- | Cluster-wide default directory for storing shared-file-backed disks.
583 5ce621ab Helga Velroyen
pClusterSharedFileStorageDir :: Field
584 5ce621ab Helga Velroyen
pClusterSharedFileStorageDir =
585 5ce621ab Helga Velroyen
  renameField "ClusterSharedFileStorageDir" $
586 5ce621ab Helga Velroyen
  optionalStringField "shared_file_storage_dir"
587 4e6cfd11 Helga Velroyen
588 d3e6fd0e Santi Raffa
-- | Cluster-wide default directory for storing Gluster-backed disks.
589 d3e6fd0e Santi Raffa
pClusterGlusterStorageDir :: Field
590 d3e6fd0e Santi Raffa
pClusterGlusterStorageDir =
591 d3e6fd0e Santi Raffa
  renameField "ClusterGlusterStorageDir" $
592 d3e6fd0e Santi Raffa
  optionalStringField "gluster_storage_dir"
593 d3e6fd0e Santi Raffa
594 42fda604 Jose A. Lopes
pInstanceCommunicationNetwork :: Field
595 42fda604 Jose A. Lopes
pInstanceCommunicationNetwork =
596 42fda604 Jose A. Lopes
  optionalStringField "instance_communication_network"
597 42fda604 Jose A. Lopes
598 d6979f35 Iustin Pop
-- | Volume group name.
599 d6979f35 Iustin Pop
pVgName :: Field
600 34af39e8 Jose A. Lopes
pVgName =
601 34af39e8 Jose A. Lopes
  withDoc "Volume group name" $
602 34af39e8 Jose A. Lopes
  optionalStringField "vg_name"
603 d6979f35 Iustin Pop
604 d6979f35 Iustin Pop
pEnabledHypervisors :: Field
605 d6979f35 Iustin Pop
pEnabledHypervisors =
606 34af39e8 Jose A. Lopes
  withDoc "List of enabled hypervisors" .
607 d6979f35 Iustin Pop
  optionalField $
608 5cbf7832 Jose A. Lopes
  simpleField "enabled_hypervisors" [t| [Hypervisor] |]
609 6d558717 Iustin Pop
610 d6979f35 Iustin Pop
pClusterHvParams :: Field
611 d6979f35 Iustin Pop
pClusterHvParams =
612 34af39e8 Jose A. Lopes
  withDoc "Cluster-wide hypervisor parameters, hypervisor-dependent" .
613 6d558717 Iustin Pop
  renameField "ClusterHvParams" .
614 d6979f35 Iustin Pop
  optionalField $
615 34af39e8 Jose A. Lopes
  simpleField "hvparams" [t| GenericContainer String (JSObject JSValue) |]
616 6d558717 Iustin Pop
617 d6979f35 Iustin Pop
pClusterBeParams :: Field
618 6d558717 Iustin Pop
pClusterBeParams =
619 34af39e8 Jose A. Lopes
  withDoc "Cluster-wide backend parameter defaults" .
620 6d558717 Iustin Pop
  renameField "ClusterBeParams" .
621 34af39e8 Jose A. Lopes
  optionalField $ simpleField "beparams" [t| JSObject JSValue |]
622 6d558717 Iustin Pop
623 d6979f35 Iustin Pop
pOsHvp :: Field
624 34af39e8 Jose A. Lopes
pOsHvp =
625 34af39e8 Jose A. Lopes
  withDoc "Cluster-wide per-OS hypervisor parameter defaults" .
626 34af39e8 Jose A. Lopes
  optionalField $
627 34af39e8 Jose A. Lopes
  simpleField "os_hvp" [t| GenericContainer String (JSObject JSValue) |]
628 d6979f35 Iustin Pop
629 6d558717 Iustin Pop
pClusterOsParams :: Field
630 6d558717 Iustin Pop
pClusterOsParams =
631 34af39e8 Jose A. Lopes
  withDoc "Cluster-wide OS parameter defaults" .
632 c2d3219b Iustin Pop
  renameField "ClusterOsParams" .
633 34af39e8 Jose A. Lopes
  optionalField $
634 34af39e8 Jose A. Lopes
  simpleField "osparams" [t| GenericContainer String (JSObject JSValue) |]
635 c2d3219b Iustin Pop
636 07e3c124 Santi Raffa
pClusterOsParamsPrivate :: Field
637 07e3c124 Santi Raffa
pClusterOsParamsPrivate =
638 07e3c124 Santi Raffa
  withDoc "Cluster-wide private OS parameter defaults" .
639 07e3c124 Santi Raffa
  renameField "ClusterOsParamsPrivate" .
640 07e3c124 Santi Raffa
  optionalField $
641 07e3c124 Santi Raffa
  -- This field needs an unique name to aid Python deserialization
642 07e3c124 Santi Raffa
  simpleField "osparams_private_cluster"
643 07e3c124 Santi Raffa
    [t| GenericContainer String (JSObject (Private JSValue)) |]
644 07e3c124 Santi Raffa
645 34af39e8 Jose A. Lopes
pDiskParams :: Field
646 34af39e8 Jose A. Lopes
pDiskParams =
647 34af39e8 Jose A. Lopes
  withDoc "Disk templates' parameter defaults" .
648 34af39e8 Jose A. Lopes
  optionalField $
649 34af39e8 Jose A. Lopes
  simpleField "diskparams"
650 34af39e8 Jose A. Lopes
              [t| GenericContainer DiskTemplate (JSObject JSValue) |]
651 c2d3219b Iustin Pop
652 d6979f35 Iustin Pop
pCandidatePoolSize :: Field
653 d6979f35 Iustin Pop
pCandidatePoolSize =
654 34af39e8 Jose A. Lopes
  withDoc "Master candidate pool size" .
655 d6979f35 Iustin Pop
  optionalField $ simpleField "candidate_pool_size" [t| Positive Int |]
656 d6979f35 Iustin Pop
657 ad756c77 Klaus Aehlig
pMaxRunningJobs :: Field
658 ad756c77 Klaus Aehlig
pMaxRunningJobs =
659 ad756c77 Klaus Aehlig
  withDoc "Maximal number of jobs to run simultaneously" .
660 ad756c77 Klaus Aehlig
  optionalField $ simpleField "max_running_jobs" [t| Positive Int |]
661 ad756c77 Klaus Aehlig
662 d6979f35 Iustin Pop
pUidPool :: Field
663 34af39e8 Jose A. Lopes
pUidPool =
664 34af39e8 Jose A. Lopes
  withDoc "Set UID pool, must be list of lists describing UID ranges\
665 34af39e8 Jose A. Lopes
          \ (two items, start and end inclusive)" .
666 5cbf7832 Jose A. Lopes
  optionalField $ simpleField "uid_pool" [t| [(Int, Int)] |]
667 d6979f35 Iustin Pop
668 d6979f35 Iustin Pop
pAddUids :: Field
669 34af39e8 Jose A. Lopes
pAddUids =
670 34af39e8 Jose A. Lopes
  withDoc "Extend UID pool, must be list of lists describing UID\
671 34af39e8 Jose A. Lopes
          \ ranges (two items, start and end inclusive)" .
672 5cbf7832 Jose A. Lopes
  optionalField $ simpleField "add_uids" [t| [(Int, Int)] |]
673 d6979f35 Iustin Pop
674 d6979f35 Iustin Pop
pRemoveUids :: Field
675 34af39e8 Jose A. Lopes
pRemoveUids =
676 34af39e8 Jose A. Lopes
  withDoc "Shrink UID pool, must be list of lists describing UID\
677 34af39e8 Jose A. Lopes
          \ ranges (two items, start and end inclusive) to be removed" .
678 5cbf7832 Jose A. Lopes
  optionalField $ simpleField "remove_uids" [t| [(Int, Int)] |]
679 d6979f35 Iustin Pop
680 d6979f35 Iustin Pop
pMaintainNodeHealth :: Field
681 34af39e8 Jose A. Lopes
pMaintainNodeHealth =
682 34af39e8 Jose A. Lopes
  withDoc "Whether to automatically maintain node health" .
683 34af39e8 Jose A. Lopes
  optionalField $ booleanField "maintain_node_health"
684 d6979f35 Iustin Pop
685 75f2ff7d Michele Tartara
-- | Whether to modify and keep in sync the @/etc/hosts@ files of nodes.
686 75f2ff7d Michele Tartara
pModifyEtcHosts :: Field
687 75f2ff7d Michele Tartara
pModifyEtcHosts = optionalField $ booleanField "modify_etc_hosts"
688 75f2ff7d Michele Tartara
689 d6979f35 Iustin Pop
-- | Whether to wipe disks before allocating them to instances.
690 d6979f35 Iustin Pop
pPreallocWipeDisks :: Field
691 34af39e8 Jose A. Lopes
pPreallocWipeDisks =
692 34af39e8 Jose A. Lopes
  withDoc "Whether to wipe disks before allocating them to instances" .
693 34af39e8 Jose A. Lopes
  optionalField $ booleanField "prealloc_wipe_disks"
694 d6979f35 Iustin Pop
695 d6979f35 Iustin Pop
pNicParams :: Field
696 34af39e8 Jose A. Lopes
pNicParams =
697 34af39e8 Jose A. Lopes
  withDoc "Cluster-wide NIC parameter defaults" .
698 34af39e8 Jose A. Lopes
  optionalField $ simpleField "nicparams" [t| INicParams |]
699 d6979f35 Iustin Pop
700 d6979f35 Iustin Pop
pIpolicy :: Field
701 34af39e8 Jose A. Lopes
pIpolicy =
702 34af39e8 Jose A. Lopes
  withDoc "Ipolicy specs" .
703 34af39e8 Jose A. Lopes
  optionalField $ simpleField "ipolicy" [t| JSObject JSValue |]
704 d6979f35 Iustin Pop
705 d6979f35 Iustin Pop
pDrbdHelper :: Field
706 34af39e8 Jose A. Lopes
pDrbdHelper =
707 34af39e8 Jose A. Lopes
  withDoc "DRBD helper program" $
708 34af39e8 Jose A. Lopes
  optionalStringField "drbd_helper"
709 d6979f35 Iustin Pop
710 d6979f35 Iustin Pop
pDefaultIAllocator :: Field
711 34af39e8 Jose A. Lopes
pDefaultIAllocator =
712 34af39e8 Jose A. Lopes
  withDoc "Default iallocator for cluster" $
713 34af39e8 Jose A. Lopes
  optionalStringField "default_iallocator"
714 d6979f35 Iustin Pop
715 0359e5d0 Spyros Trigazis
pDefaultIAllocatorParams :: Field
716 0359e5d0 Spyros Trigazis
pDefaultIAllocatorParams =
717 0359e5d0 Spyros Trigazis
  withDoc "Default iallocator parameters for cluster" . optionalField
718 0359e5d0 Spyros Trigazis
    $ simpleField "default_iallocator_params" [t| JSObject JSValue |]
719 0359e5d0 Spyros Trigazis
720 d6979f35 Iustin Pop
pMasterNetdev :: Field
721 34af39e8 Jose A. Lopes
pMasterNetdev =
722 34af39e8 Jose A. Lopes
  withDoc "Master network device" $
723 34af39e8 Jose A. Lopes
  optionalStringField "master_netdev"
724 d6979f35 Iustin Pop
725 d6979f35 Iustin Pop
pMasterNetmask :: Field
726 67fc4de7 Iustin Pop
pMasterNetmask =
727 34af39e8 Jose A. Lopes
  withDoc "Netmask of the master IP" .
728 67fc4de7 Iustin Pop
  optionalField $ simpleField "master_netmask" [t| NonNegative Int |]
729 d6979f35 Iustin Pop
730 d6979f35 Iustin Pop
pReservedLvs :: Field
731 d6979f35 Iustin Pop
pReservedLvs =
732 34af39e8 Jose A. Lopes
  withDoc "List of reserved LVs" .
733 d6979f35 Iustin Pop
  optionalField $ simpleField "reserved_lvs" [t| [NonEmptyString] |]
734 d6979f35 Iustin Pop
735 d6979f35 Iustin Pop
pHiddenOs :: Field
736 34af39e8 Jose A. Lopes
pHiddenOs =
737 34af39e8 Jose A. Lopes
  withDoc "Modify list of hidden operating systems: each modification\
738 34af39e8 Jose A. Lopes
          \ must have two items, the operation and the OS name; the operation\
739 34af39e8 Jose A. Lopes
          \ can be add or remove" .
740 34af39e8 Jose A. Lopes
  optionalField $ simpleField "hidden_os" [t| [(DdmSimple, NonEmptyString)] |]
741 d6979f35 Iustin Pop
742 d6979f35 Iustin Pop
pBlacklistedOs :: Field
743 d6979f35 Iustin Pop
pBlacklistedOs =
744 34af39e8 Jose A. Lopes
  withDoc "Modify list of blacklisted operating systems: each\
745 34af39e8 Jose A. Lopes
          \ modification must have two items, the operation and the OS name;\
746 34af39e8 Jose A. Lopes
          \ the operation can be add or remove" .
747 34af39e8 Jose A. Lopes
  optionalField $
748 34af39e8 Jose A. Lopes
  simpleField "blacklisted_os" [t| [(DdmSimple, NonEmptyString)] |]
749 d6979f35 Iustin Pop
750 d6979f35 Iustin Pop
pUseExternalMipScript :: Field
751 34af39e8 Jose A. Lopes
pUseExternalMipScript =
752 34af39e8 Jose A. Lopes
  withDoc "Whether to use an external master IP address setup script" .
753 34af39e8 Jose A. Lopes
  optionalField $ booleanField "use_external_mip_script"
754 34af39e8 Jose A. Lopes
755 34af39e8 Jose A. Lopes
pEnabledDiskTemplates :: Field
756 34af39e8 Jose A. Lopes
pEnabledDiskTemplates =
757 34af39e8 Jose A. Lopes
  withDoc "List of enabled disk templates" .
758 34af39e8 Jose A. Lopes
  optionalField $
759 5cbf7832 Jose A. Lopes
  simpleField "enabled_disk_templates" [t| [DiskTemplate] |]
760 34af39e8 Jose A. Lopes
761 34af39e8 Jose A. Lopes
pQueryWhat :: Field
762 34af39e8 Jose A. Lopes
pQueryWhat =
763 34af39e8 Jose A. Lopes
  withDoc "Resource(s) to query for" $
764 34af39e8 Jose A. Lopes
  simpleField "what" [t| Qlang.QueryTypeOp |]
765 34af39e8 Jose A. Lopes
766 34af39e8 Jose A. Lopes
pUseLocking :: Field
767 34af39e8 Jose A. Lopes
pUseLocking =
768 34af39e8 Jose A. Lopes
  withDoc "Whether to use synchronization" $
769 34af39e8 Jose A. Lopes
  defaultFalse "use_locking"
770 d6979f35 Iustin Pop
771 d6979f35 Iustin Pop
pQueryFields :: Field
772 34af39e8 Jose A. Lopes
pQueryFields =
773 34af39e8 Jose A. Lopes
  withDoc "Requested fields" $
774 34af39e8 Jose A. Lopes
  simpleField "fields" [t| [NonEmptyString] |]
775 d6979f35 Iustin Pop
776 d6979f35 Iustin Pop
pQueryFilter :: Field
777 34af39e8 Jose A. Lopes
pQueryFilter =
778 34af39e8 Jose A. Lopes
  withDoc "Query filter" .
779 34af39e8 Jose A. Lopes
  optionalField $ simpleField "qfilter" [t| [JSValue] |]
780 34af39e8 Jose A. Lopes
781 34af39e8 Jose A. Lopes
pQueryFieldsFields :: Field
782 34af39e8 Jose A. Lopes
pQueryFieldsFields =
783 34af39e8 Jose A. Lopes
  withDoc "Requested fields; if not given, all are returned" .
784 34af39e8 Jose A. Lopes
  renameField "QueryFieldsFields" $
785 34af39e8 Jose A. Lopes
  optionalField pQueryFields
786 34af39e8 Jose A. Lopes
787 34af39e8 Jose A. Lopes
pNodeNames :: Field
788 34af39e8 Jose A. Lopes
pNodeNames =
789 34af39e8 Jose A. Lopes
  withDoc "List of node names to run the OOB command against" .
790 34af39e8 Jose A. Lopes
  defaultField [| [] |] $ simpleField "node_names" [t| [NonEmptyString] |]
791 34af39e8 Jose A. Lopes
792 34af39e8 Jose A. Lopes
pNodeUuids :: Field
793 34af39e8 Jose A. Lopes
pNodeUuids =
794 34af39e8 Jose A. Lopes
  withDoc "List of node UUIDs" .
795 34af39e8 Jose A. Lopes
  optionalField $ simpleField "node_uuids" [t| [NonEmptyString] |]
796 d6979f35 Iustin Pop
797 d6979f35 Iustin Pop
pOobCommand :: Field
798 34af39e8 Jose A. Lopes
pOobCommand =
799 34af39e8 Jose A. Lopes
  withDoc "OOB command to run" $
800 34af39e8 Jose A. Lopes
  simpleField "command" [t| OobCommand |]
801 d6979f35 Iustin Pop
802 d6979f35 Iustin Pop
pOobTimeout :: Field
803 d6979f35 Iustin Pop
pOobTimeout =
804 34af39e8 Jose A. Lopes
  withDoc "Timeout before the OOB helper will be terminated" .
805 34af39e8 Jose A. Lopes
  defaultField [| C.oobTimeout |] $
806 34af39e8 Jose A. Lopes
  simpleField "timeout" [t| Int |]
807 d6979f35 Iustin Pop
808 d6979f35 Iustin Pop
pIgnoreStatus :: Field
809 34af39e8 Jose A. Lopes
pIgnoreStatus =
810 34af39e8 Jose A. Lopes
  withDoc "Ignores the node offline status for power off" $
811 34af39e8 Jose A. Lopes
  defaultFalse "ignore_status"
812 d6979f35 Iustin Pop
813 d6979f35 Iustin Pop
pPowerDelay :: Field
814 d6979f35 Iustin Pop
pPowerDelay =
815 d6979f35 Iustin Pop
  -- FIXME: we can't use the proper type "NonNegative Double", since
816 d6979f35 Iustin Pop
  -- the default constant is a plain Double, not a non-negative one.
817 34af39e8 Jose A. Lopes
  -- And trying to fix the constant introduces a cyclic import.
818 34af39e8 Jose A. Lopes
  withDoc "Time in seconds to wait between powering on nodes" .
819 d6979f35 Iustin Pop
  defaultField [| C.oobPowerDelay |] $
820 d6979f35 Iustin Pop
  simpleField "power_delay" [t| Double |]
821 d6979f35 Iustin Pop
822 34af39e8 Jose A. Lopes
pRequiredNodes :: Field
823 34af39e8 Jose A. Lopes
pRequiredNodes =
824 34af39e8 Jose A. Lopes
  withDoc "Required list of node names" .
825 34af39e8 Jose A. Lopes
  renameField "ReqNodes " $ simpleField "nodes" [t| [NonEmptyString] |]
826 34af39e8 Jose A. Lopes
827 34af39e8 Jose A. Lopes
pRequiredNodeUuids :: Field
828 34af39e8 Jose A. Lopes
pRequiredNodeUuids =
829 34af39e8 Jose A. Lopes
  withDoc "Required list of node UUIDs" .
830 34af39e8 Jose A. Lopes
  renameField "ReqNodeUuids " . optionalField $
831 34af39e8 Jose A. Lopes
  simpleField "node_uuids" [t| [NonEmptyString] |]
832 34af39e8 Jose A. Lopes
833 34af39e8 Jose A. Lopes
pRestrictedCommand :: Field
834 34af39e8 Jose A. Lopes
pRestrictedCommand =
835 34af39e8 Jose A. Lopes
  withDoc "Restricted command name" .
836 34af39e8 Jose A. Lopes
  renameField "RestrictedCommand" $
837 34af39e8 Jose A. Lopes
  simpleField "command" [t| NonEmptyString |]
838 34af39e8 Jose A. Lopes
839 34af39e8 Jose A. Lopes
pNodeName :: Field
840 34af39e8 Jose A. Lopes
pNodeName =
841 34af39e8 Jose A. Lopes
  withDoc "A required node name (for single-node LUs)" $
842 34af39e8 Jose A. Lopes
  simpleField "node_name" [t| NonEmptyString |]
843 34af39e8 Jose A. Lopes
844 34af39e8 Jose A. Lopes
pNodeUuid :: Field
845 34af39e8 Jose A. Lopes
pNodeUuid =
846 34af39e8 Jose A. Lopes
  withDoc "A node UUID (for single-node LUs)" .
847 34af39e8 Jose A. Lopes
  optionalField $ simpleField "node_uuid" [t| NonEmptyString |]
848 34af39e8 Jose A. Lopes
849 d6979f35 Iustin Pop
pPrimaryIp :: Field
850 34af39e8 Jose A. Lopes
pPrimaryIp =
851 5cbf7832 Jose A. Lopes
  withDoc "Primary IP address" .
852 5cbf7832 Jose A. Lopes
  optionalField $
853 34af39e8 Jose A. Lopes
  simpleField "primary_ip" [t| NonEmptyString |]
854 d6979f35 Iustin Pop
855 d6979f35 Iustin Pop
pSecondaryIp :: Field
856 34af39e8 Jose A. Lopes
pSecondaryIp =
857 34af39e8 Jose A. Lopes
  withDoc "Secondary IP address" $
858 34af39e8 Jose A. Lopes
  optionalNEStringField "secondary_ip"
859 d6979f35 Iustin Pop
860 d6979f35 Iustin Pop
pReadd :: Field
861 34af39e8 Jose A. Lopes
pReadd =
862 34af39e8 Jose A. Lopes
  withDoc "Whether node is re-added to cluster" $
863 34af39e8 Jose A. Lopes
  defaultFalse "readd"
864 d6979f35 Iustin Pop
865 d6979f35 Iustin Pop
pNodeGroup :: Field
866 34af39e8 Jose A. Lopes
pNodeGroup =
867 34af39e8 Jose A. Lopes
  withDoc "Initial node group" $
868 34af39e8 Jose A. Lopes
  optionalNEStringField "group"
869 d6979f35 Iustin Pop
870 d6979f35 Iustin Pop
pMasterCapable :: Field
871 34af39e8 Jose A. Lopes
pMasterCapable =
872 34af39e8 Jose A. Lopes
  withDoc "Whether node can become master or master candidate" .
873 34af39e8 Jose A. Lopes
  optionalField $ booleanField "master_capable"
874 d6979f35 Iustin Pop
875 d6979f35 Iustin Pop
pVmCapable :: Field
876 34af39e8 Jose A. Lopes
pVmCapable =
877 34af39e8 Jose A. Lopes
  withDoc "Whether node can host instances" .
878 34af39e8 Jose A. Lopes
  optionalField $ booleanField "vm_capable"
879 d6979f35 Iustin Pop
880 34af39e8 Jose A. Lopes
pNdParams :: Field
881 34af39e8 Jose A. Lopes
pNdParams =
882 34af39e8 Jose A. Lopes
  withDoc "Node parameters" .
883 34af39e8 Jose A. Lopes
  renameField "genericNdParams" .
884 34af39e8 Jose A. Lopes
  optionalField $ simpleField "ndparams" [t| JSObject JSValue |]
885 f048c574 Thomas Thrainer
886 d6979f35 Iustin Pop
pNames :: Field
887 34af39e8 Jose A. Lopes
pNames =
888 34af39e8 Jose A. Lopes
  withDoc "List of names" .
889 34af39e8 Jose A. Lopes
  defaultField [| [] |] $ simpleField "names" [t| [NonEmptyString] |]
890 d6979f35 Iustin Pop
891 d6979f35 Iustin Pop
pNodes :: Field
892 34af39e8 Jose A. Lopes
pNodes =
893 34af39e8 Jose A. Lopes
  withDoc "List of nodes" .
894 34af39e8 Jose A. Lopes
  defaultField [| [] |] $ simpleField "nodes" [t| [NonEmptyString] |]
895 d6979f35 Iustin Pop
896 d6979f35 Iustin Pop
pStorageType :: Field
897 34af39e8 Jose A. Lopes
pStorageType =
898 4f90370c Helga Velroyen
  withDoc "Storage type" $ simpleField "storage_type" [t| StorageType |]
899 4f90370c Helga Velroyen
900 fc963293 Jose A. Lopes
pOptStorageType :: Field
901 fc963293 Jose A. Lopes
pOptStorageType =
902 4f90370c Helga Velroyen
  withDoc "Storage type" .
903 fc963293 Jose A. Lopes
  renameField "OptStorageType" .
904 4f90370c Helga Velroyen
  optionalField $ simpleField "storage_type" [t| StorageType |]
905 34af39e8 Jose A. Lopes
906 34af39e8 Jose A. Lopes
pStorageName :: Field
907 34af39e8 Jose A. Lopes
pStorageName =
908 34af39e8 Jose A. Lopes
  withDoc "Storage name" .
909 34af39e8 Jose A. Lopes
  renameField "StorageName" .
910 34af39e8 Jose A. Lopes
  optionalField $ simpleField "name" [t| NonEmptyString |]
911 d6979f35 Iustin Pop
912 d6979f35 Iustin Pop
pStorageChanges :: Field
913 34af39e8 Jose A. Lopes
pStorageChanges =
914 34af39e8 Jose A. Lopes
  withDoc "Requested storage changes" $
915 34af39e8 Jose A. Lopes
  simpleField "changes" [t| JSObject JSValue |]
916 34af39e8 Jose A. Lopes
917 34af39e8 Jose A. Lopes
pIgnoreConsistency :: Field
918 34af39e8 Jose A. Lopes
pIgnoreConsistency =
919 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore disk consistency" $
920 34af39e8 Jose A. Lopes
  defaultFalse "ignore_consistency"
921 d6979f35 Iustin Pop
922 d6979f35 Iustin Pop
pMasterCandidate :: Field
923 34af39e8 Jose A. Lopes
pMasterCandidate =
924 34af39e8 Jose A. Lopes
  withDoc "Whether the node should become a master candidate" .
925 34af39e8 Jose A. Lopes
  optionalField $ booleanField "master_candidate"
926 d6979f35 Iustin Pop
927 d6979f35 Iustin Pop
pOffline :: Field
928 34af39e8 Jose A. Lopes
pOffline =
929 34af39e8 Jose A. Lopes
  withDoc "Whether to mark the node or instance offline" .
930 34af39e8 Jose A. Lopes
  optionalField $ booleanField "offline"
931 d6979f35 Iustin Pop
932 d6979f35 Iustin Pop
pDrained ::Field
933 34af39e8 Jose A. Lopes
pDrained =
934 34af39e8 Jose A. Lopes
  withDoc "Whether to mark the node as drained" .
935 34af39e8 Jose A. Lopes
  optionalField $ booleanField "drained"
936 d6979f35 Iustin Pop
937 d6979f35 Iustin Pop
pAutoPromote :: Field
938 34af39e8 Jose A. Lopes
pAutoPromote =
939 34af39e8 Jose A. Lopes
  withDoc "Whether node(s) should be promoted to master candidate if\
940 34af39e8 Jose A. Lopes
          \ necessary" $
941 34af39e8 Jose A. Lopes
  defaultFalse "auto_promote"
942 d6979f35 Iustin Pop
943 d6979f35 Iustin Pop
pPowered :: Field
944 34af39e8 Jose A. Lopes
pPowered =
945 34af39e8 Jose A. Lopes
  withDoc "Whether the node should be marked as powered" .
946 34af39e8 Jose A. Lopes
  optionalField $ booleanField "powered"
947 d6979f35 Iustin Pop
948 34af39e8 Jose A. Lopes
pMigrationMode :: Field
949 34af39e8 Jose A. Lopes
pMigrationMode =
950 34af39e8 Jose A. Lopes
  withDoc "Migration type (live/non-live)" .
951 34af39e8 Jose A. Lopes
  renameField "MigrationMode" .
952 34af39e8 Jose A. Lopes
  optionalField $
953 34af39e8 Jose A. Lopes
  simpleField "mode" [t| MigrationMode |]
954 34af39e8 Jose A. Lopes
955 34af39e8 Jose A. Lopes
pMigrationLive :: Field
956 34af39e8 Jose A. Lopes
pMigrationLive =
957 34af39e8 Jose A. Lopes
  withDoc "Obsolete \'live\' migration mode (do not use)" .
958 34af39e8 Jose A. Lopes
  renameField "OldLiveMode" . optionalField $ booleanField "live"
959 34af39e8 Jose A. Lopes
960 34af39e8 Jose A. Lopes
pMigrationTargetNode :: Field
961 34af39e8 Jose A. Lopes
pMigrationTargetNode =
962 34af39e8 Jose A. Lopes
  withDoc "Target node for instance migration/failover" $
963 34af39e8 Jose A. Lopes
  optionalNEStringField "target_node"
964 34af39e8 Jose A. Lopes
965 34af39e8 Jose A. Lopes
pMigrationTargetNodeUuid :: Field
966 34af39e8 Jose A. Lopes
pMigrationTargetNodeUuid =
967 34af39e8 Jose A. Lopes
  withDoc "Target node UUID for instance migration/failover" $
968 34af39e8 Jose A. Lopes
  optionalNEStringField "target_node_uuid"
969 34af39e8 Jose A. Lopes
970 34af39e8 Jose A. Lopes
pAllowRuntimeChgs :: Field
971 34af39e8 Jose A. Lopes
pAllowRuntimeChgs =
972 34af39e8 Jose A. Lopes
  withDoc "Whether to allow runtime changes while migrating" $
973 34af39e8 Jose A. Lopes
  defaultTrue "allow_runtime_changes"
974 34af39e8 Jose A. Lopes
975 34af39e8 Jose A. Lopes
pIgnoreIpolicy :: Field
976 34af39e8 Jose A. Lopes
pIgnoreIpolicy =
977 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore ipolicy violations" $
978 34af39e8 Jose A. Lopes
  defaultFalse "ignore_ipolicy"
979 f048c574 Thomas Thrainer
980 d6979f35 Iustin Pop
pIallocator :: Field
981 34af39e8 Jose A. Lopes
pIallocator =
982 34af39e8 Jose A. Lopes
  withDoc "Iallocator for deciding the target node for shared-storage\
983 34af39e8 Jose A. Lopes
          \ instances" $
984 34af39e8 Jose A. Lopes
  optionalNEStringField "iallocator"
985 34af39e8 Jose A. Lopes
986 34af39e8 Jose A. Lopes
pEarlyRelease :: Field
987 34af39e8 Jose A. Lopes
pEarlyRelease =
988 34af39e8 Jose A. Lopes
  withDoc "Whether to release locks as soon as possible" $
989 34af39e8 Jose A. Lopes
  defaultFalse "early_release"
990 d6979f35 Iustin Pop
991 d6979f35 Iustin Pop
pRemoteNode :: Field
992 34af39e8 Jose A. Lopes
pRemoteNode =
993 34af39e8 Jose A. Lopes
  withDoc "New secondary node" $
994 34af39e8 Jose A. Lopes
  optionalNEStringField "remote_node"
995 d6979f35 Iustin Pop
996 1c3231aa Thomas Thrainer
pRemoteNodeUuid :: Field
997 34af39e8 Jose A. Lopes
pRemoteNodeUuid =
998 34af39e8 Jose A. Lopes
  withDoc "New secondary node UUID" $
999 34af39e8 Jose A. Lopes
  optionalNEStringField "remote_node_uuid"
1000 1c3231aa Thomas Thrainer
1001 d6979f35 Iustin Pop
pEvacMode :: Field
1002 34af39e8 Jose A. Lopes
pEvacMode =
1003 34af39e8 Jose A. Lopes
  withDoc "Node evacuation mode" .
1004 d067f40b Jose A. Lopes
  renameField "EvacMode" $ simpleField "mode" [t| EvacMode |]
1005 34af39e8 Jose A. Lopes
1006 34af39e8 Jose A. Lopes
pInstanceName :: Field
1007 34af39e8 Jose A. Lopes
pInstanceName =
1008 34af39e8 Jose A. Lopes
  withDoc "A required instance name (for single-instance LUs)" $
1009 34af39e8 Jose A. Lopes
  simpleField "instance_name" [t| String |]
1010 34af39e8 Jose A. Lopes
1011 015f1517 Jose A. Lopes
pInstanceCommunication :: Field
1012 015f1517 Jose A. Lopes
pInstanceCommunication =
1013 015f1517 Jose A. Lopes
  withDoc C.instanceCommunicationDoc $
1014 015f1517 Jose A. Lopes
  defaultFalse "instance_communication"
1015 015f1517 Jose A. Lopes
1016 93f1e606 Jose A. Lopes
pOptInstanceCommunication :: Field
1017 93f1e606 Jose A. Lopes
pOptInstanceCommunication =
1018 93f1e606 Jose A. Lopes
  withDoc C.instanceCommunicationDoc .
1019 93f1e606 Jose A. Lopes
  renameField "OptInstanceCommunication" .
1020 93f1e606 Jose A. Lopes
  optionalField $
1021 93f1e606 Jose A. Lopes
  booleanField "instance_communication"
1022 93f1e606 Jose A. Lopes
1023 34af39e8 Jose A. Lopes
pForceVariant :: Field
1024 34af39e8 Jose A. Lopes
pForceVariant =
1025 34af39e8 Jose A. Lopes
  withDoc "Whether to force an unknown OS variant" $
1026 34af39e8 Jose A. Lopes
  defaultFalse "force_variant"
1027 34af39e8 Jose A. Lopes
1028 34af39e8 Jose A. Lopes
pWaitForSync :: Field
1029 34af39e8 Jose A. Lopes
pWaitForSync =
1030 34af39e8 Jose A. Lopes
  withDoc "Whether to wait for the disk to synchronize" $
1031 34af39e8 Jose A. Lopes
  defaultTrue "wait_for_sync"
1032 34af39e8 Jose A. Lopes
1033 34af39e8 Jose A. Lopes
pNameCheck :: Field
1034 34af39e8 Jose A. Lopes
pNameCheck =
1035 34af39e8 Jose A. Lopes
  withDoc "Whether to check name" $
1036 34af39e8 Jose A. Lopes
  defaultTrue "name_check"
1037 34af39e8 Jose A. Lopes
1038 34af39e8 Jose A. Lopes
pInstBeParams :: Field
1039 34af39e8 Jose A. Lopes
pInstBeParams =
1040 34af39e8 Jose A. Lopes
  withDoc "Backend parameters for instance" .
1041 34af39e8 Jose A. Lopes
  renameField "InstBeParams" .
1042 34af39e8 Jose A. Lopes
  defaultField [| toJSObject [] |] $
1043 34af39e8 Jose A. Lopes
  simpleField "beparams" [t| JSObject JSValue |]
1044 34af39e8 Jose A. Lopes
1045 34af39e8 Jose A. Lopes
pInstDisks :: Field
1046 34af39e8 Jose A. Lopes
pInstDisks =
1047 34af39e8 Jose A. Lopes
  withDoc "List of instance disks" .
1048 34af39e8 Jose A. Lopes
  renameField "instDisks" $ simpleField "disks" [t| [IDiskParams] |]
1049 34af39e8 Jose A. Lopes
1050 34af39e8 Jose A. Lopes
pDiskTemplate :: Field
1051 34af39e8 Jose A. Lopes
pDiskTemplate =
1052 5cbf7832 Jose A. Lopes
  withDoc "Disk template" $
1053 34af39e8 Jose A. Lopes
  simpleField "disk_template" [t| DiskTemplate |]
1054 34af39e8 Jose A. Lopes
1055 34af39e8 Jose A. Lopes
pFileDriver :: Field
1056 34af39e8 Jose A. Lopes
pFileDriver =
1057 34af39e8 Jose A. Lopes
  withDoc "Driver for file-backed disks" .
1058 34af39e8 Jose A. Lopes
  optionalField $ simpleField "file_driver" [t| FileDriver |]
1059 34af39e8 Jose A. Lopes
1060 34af39e8 Jose A. Lopes
pFileStorageDir :: Field
1061 34af39e8 Jose A. Lopes
pFileStorageDir =
1062 34af39e8 Jose A. Lopes
  withDoc "Directory for storing file-backed disks" $
1063 34af39e8 Jose A. Lopes
  optionalNEStringField "file_storage_dir"
1064 34af39e8 Jose A. Lopes
1065 34af39e8 Jose A. Lopes
pInstHvParams :: Field
1066 34af39e8 Jose A. Lopes
pInstHvParams =
1067 34af39e8 Jose A. Lopes
  withDoc "Hypervisor parameters for instance, hypervisor-dependent" .
1068 34af39e8 Jose A. Lopes
  renameField "InstHvParams" .
1069 34af39e8 Jose A. Lopes
  defaultField [| toJSObject [] |] $
1070 34af39e8 Jose A. Lopes
  simpleField "hvparams" [t| JSObject JSValue |]
1071 34af39e8 Jose A. Lopes
1072 34af39e8 Jose A. Lopes
pHypervisor :: Field
1073 34af39e8 Jose A. Lopes
pHypervisor =
1074 34af39e8 Jose A. Lopes
  withDoc "Selected hypervisor for an instance" .
1075 34af39e8 Jose A. Lopes
  optionalField $
1076 34af39e8 Jose A. Lopes
  simpleField "hypervisor" [t| Hypervisor |]
1077 34af39e8 Jose A. Lopes
1078 34af39e8 Jose A. Lopes
pResetDefaults :: Field
1079 34af39e8 Jose A. Lopes
pResetDefaults =
1080 34af39e8 Jose A. Lopes
  withDoc "Reset instance parameters to default if equal" $
1081 34af39e8 Jose A. Lopes
  defaultFalse "identify_defaults"
1082 34af39e8 Jose A. Lopes
1083 34af39e8 Jose A. Lopes
pIpCheck :: Field
1084 34af39e8 Jose A. Lopes
pIpCheck =
1085 34af39e8 Jose A. Lopes
  withDoc "Whether to ensure instance's IP address is inactive" $
1086 34af39e8 Jose A. Lopes
  defaultTrue "ip_check"
1087 34af39e8 Jose A. Lopes
1088 34af39e8 Jose A. Lopes
pIpConflictsCheck :: Field
1089 34af39e8 Jose A. Lopes
pIpConflictsCheck =
1090 34af39e8 Jose A. Lopes
  withDoc "Whether to check for conflicting IP addresses" $
1091 34af39e8 Jose A. Lopes
  defaultTrue "conflicts_check"
1092 6d558717 Iustin Pop
1093 6d558717 Iustin Pop
pInstCreateMode :: Field
1094 6d558717 Iustin Pop
pInstCreateMode =
1095 34af39e8 Jose A. Lopes
  withDoc "Instance creation mode" .
1096 6d558717 Iustin Pop
  renameField "InstCreateMode" $ simpleField "mode" [t| InstCreateMode |]
1097 6d558717 Iustin Pop
1098 34af39e8 Jose A. Lopes
pInstNics :: Field
1099 34af39e8 Jose A. Lopes
pInstNics =
1100 34af39e8 Jose A. Lopes
  withDoc "List of NIC (network interface) definitions" $
1101 34af39e8 Jose A. Lopes
  simpleField "nics" [t| [INicParams] |]
1102 34af39e8 Jose A. Lopes
1103 6d558717 Iustin Pop
pNoInstall :: Field
1104 34af39e8 Jose A. Lopes
pNoInstall =
1105 34af39e8 Jose A. Lopes
  withDoc "Do not install the OS (will disable automatic start)" .
1106 34af39e8 Jose A. Lopes
  optionalField $ booleanField "no_install"
1107 6d558717 Iustin Pop
1108 6d558717 Iustin Pop
pInstOs :: Field
1109 34af39e8 Jose A. Lopes
pInstOs =
1110 34af39e8 Jose A. Lopes
  withDoc "OS type for instance installation" $
1111 34af39e8 Jose A. Lopes
  optionalNEStringField "os_type"
1112 34af39e8 Jose A. Lopes
1113 34af39e8 Jose A. Lopes
pInstOsParams :: Field
1114 34af39e8 Jose A. Lopes
pInstOsParams =
1115 34af39e8 Jose A. Lopes
  withDoc "OS parameters for instance" .
1116 34af39e8 Jose A. Lopes
  renameField "InstOsParams" .
1117 34af39e8 Jose A. Lopes
  defaultField [| toJSObject [] |] $
1118 34af39e8 Jose A. Lopes
  simpleField "osparams" [t| JSObject JSValue |]
1119 6d558717 Iustin Pop
1120 6bce7ba2 Santi Raffa
pInstOsParamsPrivate :: Field
1121 6bce7ba2 Santi Raffa
pInstOsParamsPrivate =
1122 6bce7ba2 Santi Raffa
  withDoc "Private OS parameters for instance" .
1123 6bce7ba2 Santi Raffa
  optionalField $
1124 6bce7ba2 Santi Raffa
  simpleField "osparams_private" [t| JSObject (Private JSValue) |]
1125 6bce7ba2 Santi Raffa
1126 6bce7ba2 Santi Raffa
pInstOsParamsSecret :: Field
1127 6bce7ba2 Santi Raffa
pInstOsParamsSecret =
1128 6bce7ba2 Santi Raffa
  withDoc "Secret OS parameters for instance" .
1129 6bce7ba2 Santi Raffa
  optionalField $
1130 6bce7ba2 Santi Raffa
  simpleField "osparams_secret" [t| JSObject (Private JSValue) |]
1131 6bce7ba2 Santi Raffa
1132 6d558717 Iustin Pop
pPrimaryNode :: Field
1133 34af39e8 Jose A. Lopes
pPrimaryNode =
1134 34af39e8 Jose A. Lopes
  withDoc "Primary node for an instance" $
1135 34af39e8 Jose A. Lopes
  optionalNEStringField "pnode"
1136 6d558717 Iustin Pop
1137 1c3231aa Thomas Thrainer
pPrimaryNodeUuid :: Field
1138 34af39e8 Jose A. Lopes
pPrimaryNodeUuid =
1139 34af39e8 Jose A. Lopes
  withDoc "Primary node UUID for an instance" $
1140 34af39e8 Jose A. Lopes
  optionalNEStringField "pnode_uuid"
1141 1c3231aa Thomas Thrainer
1142 6d558717 Iustin Pop
pSecondaryNode :: Field
1143 34af39e8 Jose A. Lopes
pSecondaryNode =
1144 34af39e8 Jose A. Lopes
  withDoc "Secondary node for an instance" $
1145 34af39e8 Jose A. Lopes
  optionalNEStringField "snode"
1146 6d558717 Iustin Pop
1147 1c3231aa Thomas Thrainer
pSecondaryNodeUuid :: Field
1148 34af39e8 Jose A. Lopes
pSecondaryNodeUuid =
1149 34af39e8 Jose A. Lopes
  withDoc "Secondary node UUID for an instance" $
1150 34af39e8 Jose A. Lopes
  optionalNEStringField "snode_uuid"
1151 1c3231aa Thomas Thrainer
1152 6d558717 Iustin Pop
pSourceHandshake :: Field
1153 6d558717 Iustin Pop
pSourceHandshake =
1154 34af39e8 Jose A. Lopes
  withDoc "Signed handshake from source (remote import only)" .
1155 34af39e8 Jose A. Lopes
  optionalField $ simpleField "source_handshake" [t| [JSValue] |]
1156 6d558717 Iustin Pop
1157 6d558717 Iustin Pop
pSourceInstance :: Field
1158 34af39e8 Jose A. Lopes
pSourceInstance =
1159 34af39e8 Jose A. Lopes
  withDoc "Source instance name (remote import only)" $
1160 34af39e8 Jose A. Lopes
  optionalNEStringField "source_instance_name"
1161 6d558717 Iustin Pop
1162 6d558717 Iustin Pop
-- FIXME: non-negative int, whereas the constant is a plain int.
1163 6d558717 Iustin Pop
pSourceShutdownTimeout :: Field
1164 6d558717 Iustin Pop
pSourceShutdownTimeout =
1165 34af39e8 Jose A. Lopes
  withDoc "How long source instance was given to shut down (remote import\
1166 34af39e8 Jose A. Lopes
          \ only)" .
1167 6d558717 Iustin Pop
  defaultField [| forceNonNeg C.defaultShutdownTimeout |] $
1168 6d558717 Iustin Pop
  simpleField "source_shutdown_timeout" [t| NonNegative Int |]
1169 6d558717 Iustin Pop
1170 6d558717 Iustin Pop
pSourceX509Ca :: Field
1171 34af39e8 Jose A. Lopes
pSourceX509Ca =
1172 34af39e8 Jose A. Lopes
  withDoc "Source X509 CA in PEM format (remote import only)" $
1173 34af39e8 Jose A. Lopes
  optionalNEStringField "source_x509_ca"
1174 6d558717 Iustin Pop
1175 6d558717 Iustin Pop
pSrcNode :: Field
1176 34af39e8 Jose A. Lopes
pSrcNode =
1177 34af39e8 Jose A. Lopes
  withDoc "Source node for import" $
1178 34af39e8 Jose A. Lopes
  optionalNEStringField "src_node"
1179 6d558717 Iustin Pop
1180 1c3231aa Thomas Thrainer
pSrcNodeUuid :: Field
1181 34af39e8 Jose A. Lopes
pSrcNodeUuid =
1182 34af39e8 Jose A. Lopes
  withDoc "Source node UUID for import" $
1183 34af39e8 Jose A. Lopes
  optionalNEStringField "src_node_uuid"
1184 1c3231aa Thomas Thrainer
1185 6d558717 Iustin Pop
pSrcPath :: Field
1186 34af39e8 Jose A. Lopes
pSrcPath =
1187 34af39e8 Jose A. Lopes
  withDoc "Source directory for import" $
1188 34af39e8 Jose A. Lopes
  optionalNEStringField "src_path"
1189 6d558717 Iustin Pop
1190 6d558717 Iustin Pop
pStartInstance :: Field
1191 34af39e8 Jose A. Lopes
pStartInstance =
1192 34af39e8 Jose A. Lopes
  withDoc "Whether to start instance after creation" $
1193 34af39e8 Jose A. Lopes
  defaultTrue "start"
1194 6d558717 Iustin Pop
1195 34af39e8 Jose A. Lopes
-- FIXME: unify/simplify with pTags, once that migrates to NonEmpty String"
1196 6d558717 Iustin Pop
pInstTags :: Field
1197 6d558717 Iustin Pop
pInstTags =
1198 34af39e8 Jose A. Lopes
  withDoc "Instance tags" .
1199 6d558717 Iustin Pop
  renameField "InstTags" .
1200 6d558717 Iustin Pop
  defaultField [| [] |] $
1201 6d558717 Iustin Pop
  simpleField "tags" [t| [NonEmptyString] |]
1202 c2d3219b Iustin Pop
1203 c2d3219b Iustin Pop
pMultiAllocInstances :: Field
1204 c2d3219b Iustin Pop
pMultiAllocInstances =
1205 34af39e8 Jose A. Lopes
  withDoc "List of instance create opcodes describing the instances to\
1206 34af39e8 Jose A. Lopes
          \ allocate" .
1207 c2d3219b Iustin Pop
  renameField "InstMultiAlloc" .
1208 c2d3219b Iustin Pop
  defaultField [| [] |] $
1209 34af39e8 Jose A. Lopes
  simpleField "instances"[t| [JSValue] |]
1210 34af39e8 Jose A. Lopes
1211 34af39e8 Jose A. Lopes
pOpportunisticLocking :: Field
1212 34af39e8 Jose A. Lopes
pOpportunisticLocking =
1213 34af39e8 Jose A. Lopes
  withDoc "Whether to employ opportunistic locking for nodes, meaning\
1214 34af39e8 Jose A. Lopes
          \ nodes already locked by another opcode won't be considered for\
1215 34af39e8 Jose A. Lopes
          \ instance allocation (only when an iallocator is used)" $
1216 34af39e8 Jose A. Lopes
  defaultFalse "opportunistic_locking"
1217 34af39e8 Jose A. Lopes
1218 34af39e8 Jose A. Lopes
pInstanceUuid :: Field
1219 34af39e8 Jose A. Lopes
pInstanceUuid =
1220 34af39e8 Jose A. Lopes
  withDoc "An instance UUID (for single-instance LUs)" .
1221 34af39e8 Jose A. Lopes
  optionalField $ simpleField "instance_uuid" [t| NonEmptyString |]
1222 34af39e8 Jose A. Lopes
1223 34af39e8 Jose A. Lopes
pTempOsParams :: Field
1224 34af39e8 Jose A. Lopes
pTempOsParams =
1225 34af39e8 Jose A. Lopes
  withDoc "Temporary OS parameters (currently only in reinstall, might be\
1226 34af39e8 Jose A. Lopes
          \ added to install as well)" .
1227 34af39e8 Jose A. Lopes
  renameField "TempOsParams" .
1228 34af39e8 Jose A. Lopes
  optionalField $ simpleField "osparams" [t| JSObject JSValue |]
1229 34af39e8 Jose A. Lopes
1230 da0aa302 Santi Raffa
pTempOsParamsPrivate :: Field
1231 da0aa302 Santi Raffa
pTempOsParamsPrivate =
1232 da0aa302 Santi Raffa
  withDoc "Private OS parameters for instance reinstalls" .
1233 da0aa302 Santi Raffa
  optionalField $
1234 da0aa302 Santi Raffa
  simpleField "osparams_private" [t| JSObject (Private JSValue) |]
1235 da0aa302 Santi Raffa
1236 da0aa302 Santi Raffa
pTempOsParamsSecret :: Field
1237 da0aa302 Santi Raffa
pTempOsParamsSecret =
1238 da0aa302 Santi Raffa
  withDoc "Secret OS parameters for instance reinstalls" .
1239 da0aa302 Santi Raffa
  optionalField $
1240 da0aa302 Santi Raffa
  simpleField "osparams_secret" [t| JSObject (Private JSValue) |]
1241 da0aa302 Santi Raffa
1242 34af39e8 Jose A. Lopes
pShutdownTimeout :: Field
1243 34af39e8 Jose A. Lopes
pShutdownTimeout =
1244 34af39e8 Jose A. Lopes
  withDoc "How long to wait for instance to shut down" .
1245 34af39e8 Jose A. Lopes
  defaultField [| forceNonNeg C.defaultShutdownTimeout |] $
1246 34af39e8 Jose A. Lopes
  simpleField "shutdown_timeout" [t| NonNegative Int |]
1247 c2d3219b Iustin Pop
1248 5cbf7832 Jose A. Lopes
-- | Another name for the shutdown timeout, because we like to be
1249 5cbf7832 Jose A. Lopes
-- inconsistent.
1250 5cbf7832 Jose A. Lopes
pShutdownTimeout' :: Field
1251 5cbf7832 Jose A. Lopes
pShutdownTimeout' =
1252 5cbf7832 Jose A. Lopes
  withDoc "How long to wait for instance to shut down" .
1253 5cbf7832 Jose A. Lopes
  renameField "InstShutdownTimeout" .
1254 5cbf7832 Jose A. Lopes
  defaultField [| forceNonNeg C.defaultShutdownTimeout |] $
1255 5cbf7832 Jose A. Lopes
  simpleField "timeout" [t| NonNegative Int |]
1256 5cbf7832 Jose A. Lopes
1257 c2d3219b Iustin Pop
pIgnoreFailures :: Field
1258 34af39e8 Jose A. Lopes
pIgnoreFailures =
1259 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore failures during removal" $
1260 34af39e8 Jose A. Lopes
  defaultFalse "ignore_failures"
1261 c2d3219b Iustin Pop
1262 c2d3219b Iustin Pop
pNewName :: Field
1263 34af39e8 Jose A. Lopes
pNewName =
1264 34af39e8 Jose A. Lopes
  withDoc "New group or instance name" $
1265 34af39e8 Jose A. Lopes
  simpleField "new_name" [t| NonEmptyString |]
1266 f048c574 Thomas Thrainer
1267 34af39e8 Jose A. Lopes
pIgnoreOfflineNodes :: Field
1268 34af39e8 Jose A. Lopes
pIgnoreOfflineNodes =
1269 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore offline nodes" $
1270 34af39e8 Jose A. Lopes
  defaultFalse "ignore_offline_nodes"
1271 34af39e8 Jose A. Lopes
1272 34af39e8 Jose A. Lopes
pTempHvParams :: Field
1273 34af39e8 Jose A. Lopes
pTempHvParams =
1274 34af39e8 Jose A. Lopes
  withDoc "Temporary hypervisor parameters, hypervisor-dependent" .
1275 34af39e8 Jose A. Lopes
  renameField "TempHvParams" .
1276 34af39e8 Jose A. Lopes
  defaultField [| toJSObject [] |] $
1277 34af39e8 Jose A. Lopes
  simpleField "hvparams" [t| JSObject JSValue |]
1278 34af39e8 Jose A. Lopes
1279 34af39e8 Jose A. Lopes
pTempBeParams :: Field
1280 34af39e8 Jose A. Lopes
pTempBeParams =
1281 34af39e8 Jose A. Lopes
  withDoc "Temporary backend parameters" .
1282 34af39e8 Jose A. Lopes
  renameField "TempBeParams" .
1283 34af39e8 Jose A. Lopes
  defaultField [| toJSObject [] |] $
1284 34af39e8 Jose A. Lopes
  simpleField "beparams" [t| JSObject JSValue |]
1285 34af39e8 Jose A. Lopes
1286 34af39e8 Jose A. Lopes
pNoRemember :: Field
1287 34af39e8 Jose A. Lopes
pNoRemember =
1288 34af39e8 Jose A. Lopes
  withDoc "Do not remember instance state changes" $
1289 34af39e8 Jose A. Lopes
  defaultFalse "no_remember"
1290 34af39e8 Jose A. Lopes
1291 34af39e8 Jose A. Lopes
pStartupPaused :: Field
1292 34af39e8 Jose A. Lopes
pStartupPaused =
1293 34af39e8 Jose A. Lopes
  withDoc "Pause instance at startup" $
1294 34af39e8 Jose A. Lopes
  defaultFalse "startup_paused"
1295 c2d3219b Iustin Pop
1296 c2d3219b Iustin Pop
pIgnoreSecondaries :: Field
1297 34af39e8 Jose A. Lopes
pIgnoreSecondaries =
1298 34af39e8 Jose A. Lopes
  withDoc "Whether to start the instance even if secondary disks are failing" $
1299 34af39e8 Jose A. Lopes
  defaultFalse "ignore_secondaries"
1300 c2d3219b Iustin Pop
1301 c2d3219b Iustin Pop
pRebootType :: Field
1302 34af39e8 Jose A. Lopes
pRebootType =
1303 34af39e8 Jose A. Lopes
  withDoc "How to reboot the instance" $
1304 34af39e8 Jose A. Lopes
  simpleField "reboot_type" [t| RebootType |]
1305 c2d3219b Iustin Pop
1306 34af39e8 Jose A. Lopes
pReplaceDisksMode :: Field
1307 34af39e8 Jose A. Lopes
pReplaceDisksMode =
1308 34af39e8 Jose A. Lopes
  withDoc "Replacement mode" .
1309 34af39e8 Jose A. Lopes
  renameField "ReplaceDisksMode" $ simpleField "mode" [t| ReplaceDisksMode |]
1310 c2d3219b Iustin Pop
1311 34af39e8 Jose A. Lopes
pReplaceDisksList :: Field
1312 34af39e8 Jose A. Lopes
pReplaceDisksList =
1313 34af39e8 Jose A. Lopes
  withDoc "List of disk indices" .
1314 34af39e8 Jose A. Lopes
  renameField "ReplaceDisksList" .
1315 34af39e8 Jose A. Lopes
  defaultField [| [] |] $
1316 34af39e8 Jose A. Lopes
  simpleField "disks" [t| [DiskIndex] |]
1317 34af39e8 Jose A. Lopes
1318 34af39e8 Jose A. Lopes
pMigrationCleanup :: Field
1319 34af39e8 Jose A. Lopes
pMigrationCleanup =
1320 34af39e8 Jose A. Lopes
  withDoc "Whether a previously failed migration should be cleaned up" .
1321 34af39e8 Jose A. Lopes
  renameField "MigrationCleanup" $ defaultFalse "cleanup"
1322 34af39e8 Jose A. Lopes
1323 34af39e8 Jose A. Lopes
pAllowFailover :: Field
1324 34af39e8 Jose A. Lopes
pAllowFailover =
1325 34af39e8 Jose A. Lopes
  withDoc "Whether we can fallback to failover if migration is not possible" $
1326 34af39e8 Jose A. Lopes
  defaultFalse "allow_failover"
1327 34af39e8 Jose A. Lopes
1328 34af39e8 Jose A. Lopes
pMoveTargetNode :: Field
1329 34af39e8 Jose A. Lopes
pMoveTargetNode =
1330 34af39e8 Jose A. Lopes
  withDoc "Target node for instance move" .
1331 34af39e8 Jose A. Lopes
  renameField "MoveTargetNode" $
1332 34af39e8 Jose A. Lopes
  simpleField "target_node" [t| NonEmptyString |]
1333 34af39e8 Jose A. Lopes
1334 34af39e8 Jose A. Lopes
pMoveTargetNodeUuid :: Field
1335 34af39e8 Jose A. Lopes
pMoveTargetNodeUuid =
1336 34af39e8 Jose A. Lopes
  withDoc "Target node UUID for instance move" .
1337 34af39e8 Jose A. Lopes
  renameField "MoveTargetNodeUuid" . optionalField $
1338 34af39e8 Jose A. Lopes
  simpleField "target_node_uuid" [t| NonEmptyString |]
1339 34af39e8 Jose A. Lopes
1340 f198cf91 Thomas Thrainer
pMoveCompress :: Field
1341 f198cf91 Thomas Thrainer
pMoveCompress =
1342 f198cf91 Thomas Thrainer
  withDoc "Compression mode to use during instance moves" .
1343 f198cf91 Thomas Thrainer
  defaultField [| None |] $
1344 f198cf91 Thomas Thrainer
  simpleField "compress" [t| ImportExportCompression |]
1345 f198cf91 Thomas Thrainer
1346 896cc964 Thomas Thrainer
pBackupCompress :: Field
1347 896cc964 Thomas Thrainer
pBackupCompress =
1348 88acff3f Thomas Thrainer
  withDoc "Compression mode to use for moves during backups/imports" .
1349 896cc964 Thomas Thrainer
  defaultField [| None |] $
1350 896cc964 Thomas Thrainer
  simpleField "compress" [t| ImportExportCompression |]
1351 896cc964 Thomas Thrainer
1352 34af39e8 Jose A. Lopes
pIgnoreDiskSize :: Field
1353 34af39e8 Jose A. Lopes
pIgnoreDiskSize =
1354 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore recorded disk size" $
1355 34af39e8 Jose A. Lopes
  defaultFalse "ignore_size"
1356 f048c574 Thomas Thrainer
1357 34af39e8 Jose A. Lopes
pWaitForSyncFalse :: Field
1358 34af39e8 Jose A. Lopes
pWaitForSyncFalse =
1359 34af39e8 Jose A. Lopes
  withDoc "Whether to wait for the disk to synchronize (defaults to false)" $
1360 34af39e8 Jose A. Lopes
  defaultField [| False |] pWaitForSync
1361 f048c574 Thomas Thrainer
1362 c2d3219b Iustin Pop
pRecreateDisksInfo :: Field
1363 c2d3219b Iustin Pop
pRecreateDisksInfo =
1364 34af39e8 Jose A. Lopes
  withDoc "Disk list for recreate disks" .
1365 c2d3219b Iustin Pop
  renameField "RecreateDisksInfo" .
1366 c2d3219b Iustin Pop
  defaultField [| RecreateDisksAll |] $
1367 c2d3219b Iustin Pop
  simpleField "disks" [t| RecreateDisksInfo |]
1368 c2d3219b Iustin Pop
1369 c2d3219b Iustin Pop
pStatic :: Field
1370 34af39e8 Jose A. Lopes
pStatic =
1371 34af39e8 Jose A. Lopes
  withDoc "Whether to only return configuration data without querying nodes" $
1372 34af39e8 Jose A. Lopes
  defaultFalse "static"
1373 c2d3219b Iustin Pop
1374 c2d3219b Iustin Pop
pInstParamsNicChanges :: Field
1375 c2d3219b Iustin Pop
pInstParamsNicChanges =
1376 34af39e8 Jose A. Lopes
  withDoc "List of NIC changes" .
1377 c2d3219b Iustin Pop
  renameField "InstNicChanges" .
1378 c2d3219b Iustin Pop
  defaultField [| SetParamsEmpty |] $
1379 c2d3219b Iustin Pop
  simpleField "nics" [t| SetParamsMods INicParams |]
1380 c2d3219b Iustin Pop
1381 c2d3219b Iustin Pop
pInstParamsDiskChanges :: Field
1382 c2d3219b Iustin Pop
pInstParamsDiskChanges =
1383 34af39e8 Jose A. Lopes
  withDoc "List of disk changes" .
1384 c2d3219b Iustin Pop
  renameField "InstDiskChanges" .
1385 c2d3219b Iustin Pop
  defaultField [| SetParamsEmpty |] $
1386 c2d3219b Iustin Pop
  simpleField "disks" [t| SetParamsMods IDiskParams |]
1387 c2d3219b Iustin Pop
1388 c2d3219b Iustin Pop
pRuntimeMem :: Field
1389 34af39e8 Jose A. Lopes
pRuntimeMem =
1390 34af39e8 Jose A. Lopes
  withDoc "New runtime memory" .
1391 34af39e8 Jose A. Lopes
  optionalField $ simpleField "runtime_mem" [t| Positive Int |]
1392 34af39e8 Jose A. Lopes
1393 34af39e8 Jose A. Lopes
pOptDiskTemplate :: Field
1394 34af39e8 Jose A. Lopes
pOptDiskTemplate =
1395 34af39e8 Jose A. Lopes
  withDoc "Instance disk template" .
1396 34af39e8 Jose A. Lopes
  optionalField .
1397 34af39e8 Jose A. Lopes
  renameField "OptDiskTemplate" $
1398 34af39e8 Jose A. Lopes
  simpleField "disk_template" [t| DiskTemplate |]
1399 c2d3219b Iustin Pop
1400 c2d3219b Iustin Pop
pOsNameChange :: Field
1401 34af39e8 Jose A. Lopes
pOsNameChange =
1402 34af39e8 Jose A. Lopes
  withDoc "Change the instance's OS without reinstalling the instance" $
1403 34af39e8 Jose A. Lopes
  optionalNEStringField "os_name"
1404 c2d3219b Iustin Pop
1405 c2d3219b Iustin Pop
pDiskIndex :: Field
1406 34af39e8 Jose A. Lopes
pDiskIndex =
1407 34af39e8 Jose A. Lopes
  withDoc "Disk index for e.g. grow disk" .
1408 34af39e8 Jose A. Lopes
  renameField "DiskIndex " $ simpleField "disk" [t| DiskIndex |]
1409 c2d3219b Iustin Pop
1410 c2d3219b Iustin Pop
pDiskChgAmount :: Field
1411 c2d3219b Iustin Pop
pDiskChgAmount =
1412 34af39e8 Jose A. Lopes
  withDoc "Disk amount to add or grow to" .
1413 c2d3219b Iustin Pop
  renameField "DiskChgAmount" $ simpleField "amount" [t| NonNegative Int |]
1414 c2d3219b Iustin Pop
1415 c2d3219b Iustin Pop
pDiskChgAbsolute :: Field
1416 34af39e8 Jose A. Lopes
pDiskChgAbsolute =
1417 34af39e8 Jose A. Lopes
  withDoc
1418 34af39e8 Jose A. Lopes
    "Whether the amount parameter is an absolute target or a relative one" .
1419 34af39e8 Jose A. Lopes
  renameField "DiskChkAbsolute" $ defaultFalse "absolute"
1420 c2d3219b Iustin Pop
1421 c2d3219b Iustin Pop
pTargetGroups :: Field
1422 c2d3219b Iustin Pop
pTargetGroups =
1423 34af39e8 Jose A. Lopes
  withDoc
1424 34af39e8 Jose A. Lopes
    "Destination group names or UUIDs (defaults to \"all but current group\")" .
1425 c2d3219b Iustin Pop
  optionalField $ simpleField "target_groups" [t| [NonEmptyString] |]
1426 398e9066 Iustin Pop
1427 34af39e8 Jose A. Lopes
pNodeGroupAllocPolicy :: Field
1428 34af39e8 Jose A. Lopes
pNodeGroupAllocPolicy =
1429 34af39e8 Jose A. Lopes
  withDoc "Instance allocation policy" .
1430 34af39e8 Jose A. Lopes
  optionalField $
1431 34af39e8 Jose A. Lopes
  simpleField "alloc_policy" [t| AllocPolicy |]
1432 34af39e8 Jose A. Lopes
1433 34af39e8 Jose A. Lopes
pGroupNodeParams :: Field
1434 34af39e8 Jose A. Lopes
pGroupNodeParams =
1435 34af39e8 Jose A. Lopes
  withDoc "Default node parameters for group" .
1436 34af39e8 Jose A. Lopes
  optionalField $ simpleField "ndparams" [t| JSObject JSValue |]
1437 34af39e8 Jose A. Lopes
1438 398e9066 Iustin Pop
pExportMode :: Field
1439 398e9066 Iustin Pop
pExportMode =
1440 34af39e8 Jose A. Lopes
  withDoc "Export mode" .
1441 398e9066 Iustin Pop
  renameField "ExportMode" $ simpleField "mode" [t| ExportMode |]
1442 398e9066 Iustin Pop
1443 34af39e8 Jose A. Lopes
-- FIXME: Rename target_node as it changes meaning for different
1444 34af39e8 Jose A. Lopes
-- export modes (e.g. "destination")
1445 398e9066 Iustin Pop
pExportTargetNode :: Field
1446 398e9066 Iustin Pop
pExportTargetNode =
1447 34af39e8 Jose A. Lopes
  withDoc "Target node (depends on export mode)" .
1448 398e9066 Iustin Pop
  renameField "ExportTarget" $
1449 398e9066 Iustin Pop
  simpleField "target_node" [t| ExportTarget |]
1450 398e9066 Iustin Pop
1451 1c3231aa Thomas Thrainer
pExportTargetNodeUuid :: Field
1452 1c3231aa Thomas Thrainer
pExportTargetNodeUuid =
1453 34af39e8 Jose A. Lopes
  withDoc "Target node UUID (if local export)" .
1454 1c3231aa Thomas Thrainer
  renameField "ExportTargetNodeUuid" . optionalField $
1455 1c3231aa Thomas Thrainer
  simpleField "target_node_uuid" [t| NonEmptyString |]
1456 1c3231aa Thomas Thrainer
1457 34af39e8 Jose A. Lopes
pShutdownInstance :: Field
1458 34af39e8 Jose A. Lopes
pShutdownInstance =
1459 34af39e8 Jose A. Lopes
  withDoc "Whether to shutdown the instance before export" $
1460 34af39e8 Jose A. Lopes
  defaultTrue "shutdown"
1461 34af39e8 Jose A. Lopes
1462 398e9066 Iustin Pop
pRemoveInstance :: Field
1463 34af39e8 Jose A. Lopes
pRemoveInstance =
1464 34af39e8 Jose A. Lopes
  withDoc "Whether to remove instance after export" $
1465 34af39e8 Jose A. Lopes
  defaultFalse "remove_instance"
1466 398e9066 Iustin Pop
1467 398e9066 Iustin Pop
pIgnoreRemoveFailures :: Field
1468 34af39e8 Jose A. Lopes
pIgnoreRemoveFailures =
1469 34af39e8 Jose A. Lopes
  withDoc "Whether to ignore failures while removing instances" $
1470 34af39e8 Jose A. Lopes
  defaultFalse "ignore_remove_failures"
1471 398e9066 Iustin Pop
1472 398e9066 Iustin Pop
pX509KeyName :: Field
1473 34af39e8 Jose A. Lopes
pX509KeyName =
1474 34af39e8 Jose A. Lopes
  withDoc "Name of X509 key (remote export only)" .
1475 34af39e8 Jose A. Lopes
  optionalField $ simpleField "x509_key_name" [t| [JSValue] |]
1476 398e9066 Iustin Pop
1477 398e9066 Iustin Pop
pX509DestCA :: Field
1478 34af39e8 Jose A. Lopes
pX509DestCA =
1479 34af39e8 Jose A. Lopes
  withDoc "Destination X509 CA (remote export only)" $
1480 34af39e8 Jose A. Lopes
  optionalNEStringField "destination_x509_ca"
1481 1cd563e2 Iustin Pop
1482 34af39e8 Jose A. Lopes
pTagsObject :: Field
1483 34af39e8 Jose A. Lopes
pTagsObject =
1484 34af39e8 Jose A. Lopes
  withDoc "Tag kind" $
1485 34af39e8 Jose A. Lopes
  simpleField "kind" [t| TagKind |]
1486 7d421386 Iustin Pop
1487 34af39e8 Jose A. Lopes
pTagsName :: Field
1488 34af39e8 Jose A. Lopes
pTagsName =
1489 34af39e8 Jose A. Lopes
  withDoc "Name of object" .
1490 34af39e8 Jose A. Lopes
  renameField "TagsGetName" .
1491 5cbf7832 Jose A. Lopes
  optionalField $ simpleField "name" [t| String |]
1492 7d421386 Iustin Pop
1493 34af39e8 Jose A. Lopes
pTagsList :: Field
1494 34af39e8 Jose A. Lopes
pTagsList =
1495 34af39e8 Jose A. Lopes
  withDoc "List of tag names" $
1496 34af39e8 Jose A. Lopes
  simpleField "tags" [t| [String] |]
1497 7d421386 Iustin Pop
1498 34af39e8 Jose A. Lopes
-- FIXME: this should be compiled at load time?
1499 34af39e8 Jose A. Lopes
pTagSearchPattern :: Field
1500 34af39e8 Jose A. Lopes
pTagSearchPattern =
1501 34af39e8 Jose A. Lopes
  withDoc "Search pattern (regular expression)" .
1502 34af39e8 Jose A. Lopes
  renameField "TagSearchPattern" $
1503 34af39e8 Jose A. Lopes
  simpleField "pattern" [t| NonEmptyString |]
1504 a3f02317 Iustin Pop
1505 7d421386 Iustin Pop
pDelayDuration :: Field
1506 7d421386 Iustin Pop
pDelayDuration =
1507 34af39e8 Jose A. Lopes
  withDoc "Duration parameter for 'OpTestDelay'" .
1508 34af39e8 Jose A. Lopes
  renameField "DelayDuration" $
1509 34af39e8 Jose A. Lopes
  simpleField "duration" [t| Double |]
1510 7d421386 Iustin Pop
1511 7d421386 Iustin Pop
pDelayOnMaster :: Field
1512 34af39e8 Jose A. Lopes
pDelayOnMaster =
1513 34af39e8 Jose A. Lopes
  withDoc "on_master field for 'OpTestDelay'" .
1514 34af39e8 Jose A. Lopes
  renameField "DelayOnMaster" $
1515 34af39e8 Jose A. Lopes
  defaultTrue "on_master"
1516 7d421386 Iustin Pop
1517 7d421386 Iustin Pop
pDelayOnNodes :: Field
1518 7d421386 Iustin Pop
pDelayOnNodes =
1519 34af39e8 Jose A. Lopes
  withDoc "on_nodes field for 'OpTestDelay'" .
1520 7d421386 Iustin Pop
  renameField "DelayOnNodes" .
1521 7d421386 Iustin Pop
  defaultField [| [] |] $
1522 7d421386 Iustin Pop
  simpleField "on_nodes" [t| [NonEmptyString] |]
1523 7d421386 Iustin Pop
1524 1c3231aa Thomas Thrainer
pDelayOnNodeUuids :: Field
1525 1c3231aa Thomas Thrainer
pDelayOnNodeUuids =
1526 34af39e8 Jose A. Lopes
  withDoc "on_node_uuids field for 'OpTestDelay'" .
1527 1c3231aa Thomas Thrainer
  renameField "DelayOnNodeUuids" . optionalField $
1528 1c3231aa Thomas Thrainer
  simpleField "on_node_uuids" [t| [NonEmptyString] |]
1529 1c3231aa Thomas Thrainer
1530 a451dae2 Iustin Pop
pDelayRepeat :: Field
1531 a451dae2 Iustin Pop
pDelayRepeat =
1532 34af39e8 Jose A. Lopes
  withDoc "Repeat parameter for OpTestDelay" .
1533 a451dae2 Iustin Pop
  renameField "DelayRepeat" .
1534 a451dae2 Iustin Pop
  defaultField [| forceNonNeg (0::Int) |] $
1535 a451dae2 Iustin Pop
  simpleField "repeat" [t| NonNegative Int |]
1536 a3f02317 Iustin Pop
1537 2868f3f7 Hrvoje Ribicic
pDelayInterruptible :: Field
1538 2868f3f7 Hrvoje Ribicic
pDelayInterruptible =
1539 2868f3f7 Hrvoje Ribicic
  withDoc "Allows socket-based interruption of a running OpTestDelay" .
1540 2868f3f7 Hrvoje Ribicic
  renameField "DelayInterruptible" .
1541 2868f3f7 Hrvoje Ribicic
  defaultField [| False |] $
1542 2868f3f7 Hrvoje Ribicic
  simpleField "interruptible" [t| Bool |]
1543 2868f3f7 Hrvoje Ribicic
1544 a3f02317 Iustin Pop
pIAllocatorDirection :: Field
1545 a3f02317 Iustin Pop
pIAllocatorDirection =
1546 34af39e8 Jose A. Lopes
  withDoc "IAllocator test direction" .
1547 a3f02317 Iustin Pop
  renameField "IAllocatorDirection" $
1548 a3f02317 Iustin Pop
  simpleField "direction" [t| IAllocatorTestDir |]
1549 a3f02317 Iustin Pop
1550 a3f02317 Iustin Pop
pIAllocatorMode :: Field
1551 a3f02317 Iustin Pop
pIAllocatorMode =
1552 34af39e8 Jose A. Lopes
  withDoc "IAllocator test mode" .
1553 a3f02317 Iustin Pop
  renameField "IAllocatorMode" $
1554 a3f02317 Iustin Pop
  simpleField "mode" [t| IAllocatorMode |]
1555 a3f02317 Iustin Pop
1556 a3f02317 Iustin Pop
pIAllocatorReqName :: Field
1557 a3f02317 Iustin Pop
pIAllocatorReqName =
1558 34af39e8 Jose A. Lopes
  withDoc "IAllocator target name (new instance, node to evac, etc.)" .
1559 a3f02317 Iustin Pop
  renameField "IAllocatorReqName" $ simpleField "name" [t| NonEmptyString |]
1560 a3f02317 Iustin Pop
1561 a3f02317 Iustin Pop
pIAllocatorNics :: Field
1562 a3f02317 Iustin Pop
pIAllocatorNics =
1563 34af39e8 Jose A. Lopes
  withDoc "Custom OpTestIAllocator nics" .
1564 34af39e8 Jose A. Lopes
  renameField "IAllocatorNics" .
1565 34af39e8 Jose A. Lopes
  optionalField $ simpleField "nics" [t| [INicParams] |]
1566 a3f02317 Iustin Pop
1567 a3f02317 Iustin Pop
pIAllocatorDisks :: Field
1568 a3f02317 Iustin Pop
pIAllocatorDisks =
1569 34af39e8 Jose A. Lopes
  withDoc "Custom OpTestAllocator disks" .
1570 34af39e8 Jose A. Lopes
  renameField "IAllocatorDisks" .
1571 34af39e8 Jose A. Lopes
  optionalField $ simpleField "disks" [t| [JSValue] |]
1572 a3f02317 Iustin Pop
1573 a3f02317 Iustin Pop
pIAllocatorMemory :: Field
1574 a3f02317 Iustin Pop
pIAllocatorMemory =
1575 34af39e8 Jose A. Lopes
  withDoc "IAllocator memory field" .
1576 a3f02317 Iustin Pop
  renameField "IAllocatorMem" .
1577 a3f02317 Iustin Pop
  optionalField $
1578 a3f02317 Iustin Pop
  simpleField "memory" [t| NonNegative Int |]
1579 a3f02317 Iustin Pop
1580 a3f02317 Iustin Pop
pIAllocatorVCpus :: Field
1581 a3f02317 Iustin Pop
pIAllocatorVCpus =
1582 34af39e8 Jose A. Lopes
  withDoc "IAllocator vcpus field" .
1583 a3f02317 Iustin Pop
  renameField "IAllocatorVCpus" .
1584 a3f02317 Iustin Pop
  optionalField $
1585 a3f02317 Iustin Pop
  simpleField "vcpus" [t| NonNegative Int |]
1586 a3f02317 Iustin Pop
1587 a3f02317 Iustin Pop
pIAllocatorOs :: Field
1588 34af39e8 Jose A. Lopes
pIAllocatorOs =
1589 34af39e8 Jose A. Lopes
  withDoc "IAllocator os field" .
1590 34af39e8 Jose A. Lopes
  renameField "IAllocatorOs" $ optionalNEStringField "os"
1591 a3f02317 Iustin Pop
1592 a3f02317 Iustin Pop
pIAllocatorInstances :: Field
1593 a3f02317 Iustin Pop
pIAllocatorInstances =
1594 34af39e8 Jose A. Lopes
  withDoc "IAllocator instances field" .
1595 a3f02317 Iustin Pop
  renameField "IAllocatorInstances " .
1596 a3f02317 Iustin Pop
  optionalField $
1597 a3f02317 Iustin Pop
  simpleField "instances" [t| [NonEmptyString] |]
1598 a3f02317 Iustin Pop
1599 a3f02317 Iustin Pop
pIAllocatorEvacMode :: Field
1600 a3f02317 Iustin Pop
pIAllocatorEvacMode =
1601 34af39e8 Jose A. Lopes
  withDoc "IAllocator evac mode" .
1602 a3f02317 Iustin Pop
  renameField "IAllocatorEvacMode" .
1603 a3f02317 Iustin Pop
  optionalField $
1604 d067f40b Jose A. Lopes
  simpleField "evac_mode" [t| EvacMode |]
1605 a3f02317 Iustin Pop
1606 a3f02317 Iustin Pop
pIAllocatorSpindleUse :: Field
1607 a3f02317 Iustin Pop
pIAllocatorSpindleUse =
1608 34af39e8 Jose A. Lopes
  withDoc "IAllocator spindle use" .
1609 a3f02317 Iustin Pop
  renameField "IAllocatorSpindleUse" .
1610 a3f02317 Iustin Pop
  defaultField [| forceNonNeg (1::Int) |] $
1611 a3f02317 Iustin Pop
  simpleField "spindle_use" [t| NonNegative Int |]
1612 a3f02317 Iustin Pop
1613 a3f02317 Iustin Pop
pIAllocatorCount :: Field
1614 a3f02317 Iustin Pop
pIAllocatorCount =
1615 34af39e8 Jose A. Lopes
  withDoc "IAllocator count field" .
1616 a3f02317 Iustin Pop
  renameField "IAllocatorCount" .
1617 a3f02317 Iustin Pop
  defaultField [| forceNonNeg (1::Int) |] $
1618 a3f02317 Iustin Pop
  simpleField "count" [t| NonNegative Int |]
1619 a3f02317 Iustin Pop
1620 a3f02317 Iustin Pop
pJQueueNotifyWaitLock :: Field
1621 34af39e8 Jose A. Lopes
pJQueueNotifyWaitLock =
1622 34af39e8 Jose A. Lopes
  withDoc "'OpTestJqueue' notify_waitlock" $
1623 34af39e8 Jose A. Lopes
  defaultFalse "notify_waitlock"
1624 a3f02317 Iustin Pop
1625 a3f02317 Iustin Pop
pJQueueNotifyExec :: Field
1626 34af39e8 Jose A. Lopes
pJQueueNotifyExec =
1627 34af39e8 Jose A. Lopes
  withDoc "'OpTestJQueue' notify_exec" $
1628 34af39e8 Jose A. Lopes
  defaultFalse "notify_exec"
1629 a3f02317 Iustin Pop
1630 a3f02317 Iustin Pop
pJQueueLogMessages :: Field
1631 a3f02317 Iustin Pop
pJQueueLogMessages =
1632 34af39e8 Jose A. Lopes
  withDoc "'OpTestJQueue' log_messages" .
1633 a3f02317 Iustin Pop
  defaultField [| [] |] $ simpleField "log_messages" [t| [String] |]
1634 a3f02317 Iustin Pop
1635 a3f02317 Iustin Pop
pJQueueFail :: Field
1636 a3f02317 Iustin Pop
pJQueueFail =
1637 34af39e8 Jose A. Lopes
  withDoc "'OpTestJQueue' fail attribute" .
1638 a3f02317 Iustin Pop
  renameField "JQueueFail" $ defaultFalse "fail"
1639 a3f02317 Iustin Pop
1640 a3f02317 Iustin Pop
pTestDummyResult :: Field
1641 a3f02317 Iustin Pop
pTestDummyResult =
1642 34af39e8 Jose A. Lopes
  withDoc "'OpTestDummy' result field" .
1643 34af39e8 Jose A. Lopes
  renameField "TestDummyResult" $ simpleField "result" [t| JSValue |]
1644 a3f02317 Iustin Pop
1645 a3f02317 Iustin Pop
pTestDummyMessages :: Field
1646 a3f02317 Iustin Pop
pTestDummyMessages =
1647 34af39e8 Jose A. Lopes
  withDoc "'OpTestDummy' messages field" .
1648 a3f02317 Iustin Pop
  renameField "TestDummyMessages" $
1649 34af39e8 Jose A. Lopes
  simpleField "messages" [t| JSValue |]
1650 a3f02317 Iustin Pop
1651 a3f02317 Iustin Pop
pTestDummyFail :: Field
1652 a3f02317 Iustin Pop
pTestDummyFail =
1653 34af39e8 Jose A. Lopes
  withDoc "'OpTestDummy' fail field" .
1654 34af39e8 Jose A. Lopes
  renameField "TestDummyFail" $ simpleField "fail" [t| JSValue |]
1655 a3f02317 Iustin Pop
1656 a3f02317 Iustin Pop
pTestDummySubmitJobs :: Field
1657 a3f02317 Iustin Pop
pTestDummySubmitJobs =
1658 34af39e8 Jose A. Lopes
  withDoc "'OpTestDummy' submit_jobs field" .
1659 a3f02317 Iustin Pop
  renameField "TestDummySubmitJobs" $
1660 34af39e8 Jose A. Lopes
  simpleField "submit_jobs" [t| JSValue |]
1661 8d239fa4 Iustin Pop
1662 8d239fa4 Iustin Pop
pNetworkName :: Field
1663 34af39e8 Jose A. Lopes
pNetworkName =
1664 34af39e8 Jose A. Lopes
  withDoc "Network name" $
1665 34af39e8 Jose A. Lopes
  simpleField "network_name" [t| NonEmptyString |]
1666 8d239fa4 Iustin Pop
1667 8d239fa4 Iustin Pop
pNetworkAddress4 :: Field
1668 8d239fa4 Iustin Pop
pNetworkAddress4 =
1669 34af39e8 Jose A. Lopes
  withDoc "Network address (IPv4 subnet)" .
1670 8d239fa4 Iustin Pop
  renameField "NetworkAddress4" $
1671 34af39e8 Jose A. Lopes
  simpleField "network" [t| IPv4Network |]
1672 8d239fa4 Iustin Pop
1673 8d239fa4 Iustin Pop
pNetworkGateway4 :: Field
1674 8d239fa4 Iustin Pop
pNetworkGateway4 =
1675 34af39e8 Jose A. Lopes
  withDoc "Network gateway (IPv4 address)" .
1676 34af39e8 Jose A. Lopes
  renameField "NetworkGateway4" .
1677 34af39e8 Jose A. Lopes
  optionalField $ simpleField "gateway" [t| IPv4Address |]
1678 8d239fa4 Iustin Pop
1679 8d239fa4 Iustin Pop
pNetworkAddress6 :: Field
1680 8d239fa4 Iustin Pop
pNetworkAddress6 =
1681 34af39e8 Jose A. Lopes
  withDoc "Network address (IPv6 subnet)" .
1682 34af39e8 Jose A. Lopes
  renameField "NetworkAddress6" .
1683 34af39e8 Jose A. Lopes
  optionalField $ simpleField "network6" [t| IPv6Network |]
1684 8d239fa4 Iustin Pop
1685 8d239fa4 Iustin Pop
pNetworkGateway6 :: Field
1686 8d239fa4 Iustin Pop
pNetworkGateway6 =
1687 34af39e8 Jose A. Lopes
  withDoc "Network gateway (IPv6 address)" .
1688 34af39e8 Jose A. Lopes
  renameField "NetworkGateway6" .
1689 34af39e8 Jose A. Lopes
  optionalField $ simpleField "gateway6" [t| IPv6Address |]
1690 8d239fa4 Iustin Pop
1691 8d239fa4 Iustin Pop
pNetworkMacPrefix :: Field
1692 8d239fa4 Iustin Pop
pNetworkMacPrefix =
1693 34af39e8 Jose A. Lopes
  withDoc "Network specific mac prefix (that overrides the cluster one)" .
1694 8d239fa4 Iustin Pop
  renameField "NetMacPrefix" $
1695 8d239fa4 Iustin Pop
  optionalNEStringField "mac_prefix"
1696 8d239fa4 Iustin Pop
1697 8d239fa4 Iustin Pop
pNetworkAddRsvdIps :: Field
1698 8d239fa4 Iustin Pop
pNetworkAddRsvdIps =
1699 34af39e8 Jose A. Lopes
  withDoc "Which IP addresses to reserve" .
1700 8d239fa4 Iustin Pop
  renameField "NetworkAddRsvdIps" .
1701 8d239fa4 Iustin Pop
  optionalField $
1702 34af39e8 Jose A. Lopes
  simpleField "add_reserved_ips" [t| [IPv4Address] |]
1703 8d239fa4 Iustin Pop
1704 8d239fa4 Iustin Pop
pNetworkRemoveRsvdIps :: Field
1705 8d239fa4 Iustin Pop
pNetworkRemoveRsvdIps =
1706 34af39e8 Jose A. Lopes
  withDoc "Which external IP addresses to release" .
1707 8d239fa4 Iustin Pop
  renameField "NetworkRemoveRsvdIps" .
1708 8d239fa4 Iustin Pop
  optionalField $
1709 34af39e8 Jose A. Lopes
  simpleField "remove_reserved_ips" [t| [IPv4Address] |]
1710 8d239fa4 Iustin Pop
1711 8d239fa4 Iustin Pop
pNetworkMode :: Field
1712 34af39e8 Jose A. Lopes
pNetworkMode =
1713 34af39e8 Jose A. Lopes
  withDoc "Network mode when connecting to a group" $
1714 34af39e8 Jose A. Lopes
  simpleField "network_mode" [t| NICMode |]
1715 8d239fa4 Iustin Pop
1716 8d239fa4 Iustin Pop
pNetworkLink :: Field
1717 34af39e8 Jose A. Lopes
pNetworkLink =
1718 34af39e8 Jose A. Lopes
  withDoc "Network link when connecting to a group" $
1719 34af39e8 Jose A. Lopes
  simpleField "network_link" [t| NonEmptyString |]