type AlternateIO (
	static str AgentFile = "bin/Script51Agent"
	static str ArgList[] = { StorageSG, NetworkSG }
	str StorageSG{}
	str NetworkSG{}
)

type Apache (
	static boolean IntentionalOffline = 0
	static keylist SupportedActions = { "checkconffile.vfd" }
	static str ArgList[] = { ResLogLevel, State, IState, httpdDir, SharedObjDir, EnvFile, PidFile, HostName, Port, User, SecondLevelMonitor, SecondLevelTimeout, ConfigFile, EnableSSL, DirectiveAfter, DirectiveBefore }
	static int ContainerOpts{} = { RunInContainer=1, PassCInfo=0 }
	str ResLogLevel = INFO
	str httpdDir
	str SharedObjDir
	str EnvFile
	str PidFile
	str HostName
	int Port = 80
	str User
	boolean SecondLevelMonitor = 0
	int SecondLevelTimeout = 30
	str ConfigFile
	boolean EnableSSL = 0
	str DirectiveAfter{}
	str DirectiveBefore{}
)

type Application (
	static keylist RegList = { MonitorProcesses, User }
	static int IMF{} = { Mode=3, MonitorFreq=1, RegisterRetryLimit=3 }
	static str IMFRegList[] = { MonitorProcesses, User, PidFiles, MonitorProgram, StartProgram }
	static keylist SupportedActions = { "program.vfd", "user.vfd", "cksum.vfd", getcksum, propcv }
	static str ArgList[] = { State, IState, User, StartProgram, StopProgram, CleanProgram, MonitorProgram, PidFiles, MonitorProcesses, EnvFile, UseSUDash }
	static int ContainerOpts{} = { RunInContainer=1, PassCInfo=0 }
	str User = root
	str StartProgram
	str StopProgram
	str CleanProgram
	str MonitorProgram
	str PidFiles[]
	str MonitorProcesses[]
	str EnvFile
	boolean UseSUDash = 0
)

type CoordPoint (
	static int InfoInterval = 300
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { FaultTolerance }
	static str Operations = None
	int FaultTolerance
)

type DNS (
	static keylist SupportedActions = { "dig.vfd", "master.vfd", "keyfile.vfd" }
	static str ArgList[] = { Domain, TTL, TSIGKeyFile, StealthMasters, ResRecord, CreatePTR, OffDelRR, UseGSSAPI, RefreshInterval, CleanRRKeys }
	str Domain
	int TTL = 86400
	str TSIGKeyFile
	str StealthMasters[]
	str ResRecord{}
	boolean CreatePTR = 0
	boolean OffDelRR = 0
	boolean UseGSSAPI = 0
	int RefreshInterval
	boolean CleanRRKeys = 0
)

type Disk (
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { Partition }
	static str Operations = None
	str Partition
)

type DiskGroup (
	static str IMFRegList[] = { DiskGroup, Reservation }
	static int IMF{} = { Mode=3, MonitorFreq=5, RegisterRetryLimit=3 }
	static keylist SupportedActions = { "license.vfd", "disk.vfd", "udid.vfd", "verifyplex.vfd", checkudid, campusplex, numdisks, joindg, splitdg, getvxvminfo, volinuse }
	static int NumThreads = 1
	static int OnlineRetryLimit = 1
	static str ArgList[] = { DiskGroup, StartVolumes, StopVolumes, MonitorOnly, MonitorReservation, tempUseFence, PanicSystemOnDGLoss, DiskGroupType, UmountVolumes, Reservation, ConfidenceLevel, ClearClone }
	str DiskGroup
	boolean StartVolumes = 1
	boolean StopVolumes = 1
	boolean MonitorReservation = 0
	temp str tempUseFence = INVALID
	int PanicSystemOnDGLoss
	str DiskGroupType = private
	int UmountVolumes
	str Reservation = ClusterDefault
	boolean ClearClone = 0
)

type DiskGroupSnap (
	static int ActionTimeout = 120
	static int MonitorInterval = 300
	static int NumThreads = 1
	static str ArgList[] = { TargetResName, FDSiteName, FDType }
	str TargetResName
	str FDSiteName
	str FDType
)

type ElifNone (
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { PathName }
	static str Operations = None
	str PathName
)

type FileNone (
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { PathName }
	static str Operations = None
	str PathName
)

type FileOnOff (
	static str ArgList[] = { PathName }
	str PathName
)

type FileOnOnly (
	static str ArgList[] = { PathName }
	static str Operations = OnOnly
	str PathName
)

type IP (
	static keylist RegList = { NetMask }
	static keylist SupportedActions = { "device.vfd", "route.vfd" }
	static str ArgList[] = { Device, Address, NetMask, Options, ArpDelay, IfconfigTwice, RouteOptions, PrefixLen, ExclusiveIPZone }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	str Device
	str Address
	str NetMask
	str Options
	int ArpDelay = 1
	int IfconfigTwice
	str RouteOptions
	int PrefixLen
	boolean ExclusiveIPZone = 0
)

type IPMultiNIC (
	static int MonitorTimeout = 120
	static int ToleranceLimit = 1
	static str ArgList[] = { "MultiNICResName:Device", Address, NetMask, "MultiNICResName:ArpDelay", Options, "MultiNICResName:Probed", MultiNICResName, IfconfigTwice, PrefixLen }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	str Address
	str NetMask
	str Options
	str MultiNICResName
	int IfconfigTwice
	int PrefixLen
)

type IPMultiNICB (
	static int MonitorInterval = 30
	static int OnlineRetryLimit = 1
	static int ToleranceLimit = 1
	static str ArgList[] = { BaseResName, Address, NetMask, DeviceChoice, RouteOptions, DeleteRouteOptions, PrefixLen, IgnoreMultiNICBFailure, "BaseResName:Protocol", Options }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	str BaseResName
	str Address
	str NetMask
	str DeviceChoice = 0
	str RouteOptions
	str DeleteRouteOptions
	int PrefixLen
	int IgnoreMultiNICBFailure
	str Options
)

type LDom (
	static keylist RegList = { NumCPU, Memory, DomainFailurePolicy }
	static boolean IntentionalOffline = 1
	static str AgentFile = "bin/Script51Agent"
	static keylist SupportedActions = { vmconfigsync }
	static str ArgList[] = { State, IState, LDomName, CfgFile, MonitorCPU, NumCPU, ConfigureNetwork, IPAddress, Netmask, Gateway, DNS, Memory, CEInfo, RemoveLDomConfigForMigration, ResyncVMCfg, DomainFailurePolicy }
	static boolean AEPTimeout = 1
	str CEInfo{} = { Enabled=0, CESystem=NONE, FaultOnHBLoss=1 }
	str LDomName
	int ConfigureNetwork
	str IPAddress
	str Netmask
	str Gateway
	str DNS
	str CfgFile
	boolean MonitorCPU = 1
	int NumCPU
	str Memory
	str DomainFailurePolicy{} = { primary="stop" }
	boolean RemoveLDomConfigForMigration = 0
	boolean ResyncVMCfg = 0
)

type Mount (
	static int IMF{} = { Mode=3, MonitorFreq=1, RegisterRetryLimit=3 }
	static str IMFRegList[] = { MountPoint, BlockDevice, FSType }
	static keylist SupportedActions = { "mountpoint.vfd", "mounted.vfd", "vxfslic.vfd", chgmntlock, "mountentry.vfd" }
	static str ArgList[] = { MountPoint, BlockDevice, FSType, MountOpt, FsckOpt, SnapUmount, CkptUmount, OptCheck, CreateMntPt, MntPtPermission, MntPtOwner, MntPtGroup, AccessPermissionChk, RecursiveMnt, VxFSMountLock }
	static boolean AEPTimeout = 1
	str MountPoint
	str BlockDevice
	str FSType
	str MountOpt
	str FsckOpt
	int SnapUmount
	int CkptUmount = 1
	int OptCheck
	int CreateMntPt
	int ReuseMntPt
	str MntPtPermission
	str MntPtOwner
	str MntPtGroup
	int AccessPermissionChk
	boolean RecursiveMnt = 0
	int VxFSMountLock = 1
)

type MultiNICA (
	static int MonitorTimeout = 300
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { Device, NetMask, ArpDelay, RetestInterval, Options, RouteOptions, PingOptimize, MonitorOnly, IfconfigTwice, HandshakeInterval, NetworkHosts, Protocol }
	static str Operations = None
	str Device{}
	str NetMask
	int ArpDelay = 1
	int RetestInterval = 5
	str Options
	str RouteOptions
	int PingOptimize = 1
	int IfconfigTwice
	int HandshakeInterval = 20
	str NetworkHosts[]
	str Protocol = IPv4
)

type MultiNICB (
	static int MonitorInterval = 10
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { UseMpathd, MpathdCommand, ConfigCheck, MpathdRestart, Device, NetworkHosts, LinkTestRatio, IgnoreLinkStatus, NetworkTimeout, OnlineTestRepeatCount, OfflineTestRepeatCount, NoBroadcast, DefaultRouter, Failback, GroupName, Protocol, IPMPDevice }
	static str Operations = None
	int UseMpathd
	str MpathdCommand = "/usr/lib/inet/in.mpathd"
	int ConfigCheck = 1
	int MpathdRestart = 1
	str Device{}
	str NetworkHosts[]
	int LinkTestRatio = 1
	int IgnoreLinkStatus = 1
	int NetworkTimeout = 100
	int OnlineTestRepeatCount = 3
	int OfflineTestRepeatCount = 3
	int NoBroadcast
	str DefaultRouter = "0.0.0.0"
	int Failback
	str GroupName
	str Protocol = IPv4
	str IPMPDevice
)

type NFS (
	static int RestartLimit = 1
	static str ArgList[] = { UseSMF, Nservers, LockFileTimeout, CleanRmtab }
	static str Operations = OnOnly
	int Nservers = 16
	int LockFileTimeout = 180
	boolean UseSMF = 0
	boolean CleanRmtab = 0
)

type NFSRestart (
	static keylist SupportedActions = { "lockdir.vfd", "nfsconf.vfd" }
	static str ArgList[] = { LocksPathName, NFSLockFailover, LockServers, NFSRes, "NFSRes:Nservers", "NFSRes:LockFileTimeout", "NFSRes:UseSMF", Lower, State }
	str NFSRes
	str LocksPathName
	boolean NFSLockFailover = 0
	int LockServers = 20
	int Lower
)

type NIC (
	static keylist SupportedActions = { "device.vfd", clearNICFaultInZone }
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { Device, PingOptimize, NetworkHosts, Protocol, NetworkType, ExclusiveIPZone }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	static str Operations = None
	str Device
	int PingOptimize = 1
	str NetworkHosts[]
	str Protocol = IPv4
	str NetworkType
	boolean ExclusiveIPZone = 0
)

type NetBios (
	static str ArgList[] = { "SambaServerRes:ConfFile", "SambaServerRes:SambaTopDir", "SambaServerRes:LockDir", NetBiosName, NetBiosAliases, Interfaces, WinsSupport, DomainMaster, "SambaServerRes:PidFile", SambaServerRes, PidFile }
	str SambaServerRes
	str NetBiosName
	str NetBiosAliases[]
	str Interfaces[]
	int WinsSupport
	int DomainMaster
	str PidFile
)

type NotifierMngr (
	static int RestartLimit = 3
	static str ArgList[] = { EngineListeningPort, MessagesQueue, NotifierListeningPort, NotifierSourceIP, SnmpdTrapPort, SnmpCommunity, SnmpConsoles, SmtpServer, SmtpServerVrfyOff, SmtpServerTimeout, SmtpReturnPath, SmtpFromPath, SmtpRecipients }
	int EngineListeningPort = 14141
	int MessagesQueue = 30
	int NotifierListeningPort = 14144
	str NotifierSourceIP
	int SnmpdTrapPort = 162
	str SnmpCommunity = public
	str SnmpConsoles{}
	str SmtpServer
	boolean SmtpServerVrfyOff = 0
	int SmtpServerTimeout = 10
	str SmtpReturnPath
	str SmtpFromPath
	str SmtpRecipients{}
)

type Phantom (
)

type Process (
	static int IMF{} = { Mode=3, MonitorFreq=5, RegisterRetryLimit=3 }
	static keylist SupportedActions = { "program.vfd", getcksum }
	static str ArgList[] = { PathName, Arguments }
	static int ContainerOpts{} = { RunInContainer=1, PassCInfo=0 }
	str PathName
	str Arguments
)

type ProcessOnOnly (
	static str ArgList[] = { IgnoreArgs, PathName, Arguments }
	static int ContainerOpts{} = { RunInContainer=1, PassCInfo=0 }
	static str Operations = OnOnly
	boolean IgnoreArgs = 0
	str PathName
	str Arguments
)

type Project (
	static str ArgList[] = { User, OfflineDelProject }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	static int FaultPropagation = 0
	str User
	boolean OfflineDelProject = 1
)

type Proxy (
	static int OfflineMonitorInterval = 60
	static str ArgList[] = { TargetResName, TargetSysName, "TargetResName:Probed", "TargetResName:State" }
	static str Operations = None
	str TargetResName
	str TargetSysName
)

type RVG (
	static int NumThreads = 1
	static str ArgList[] = { RVG, DiskGroup }
	str RVG
	str DiskGroup
	str StorageRVG
	str StorageDG
	str StorageHostIds
)

type RVGLogowner (
	static int NumThreads = 1
	static int OnlineRetryLimit = 5
	static str ArgList[] = { RVG, DiskGroup }
	str RVG
	str DiskGroup
	str StorageRVG
	str StorageDG
	str StorageHostIds
)

type RVGPrimary (
	static keylist SupportedActions = { fbsync, ElectPrimary }
	static int NumThreads = 1
	static int OnlineRetryLimit = 1
	static str ArgList[] = { RvgResourceName, "RvgResourceName:RVG", "RvgResourceName:DiskGroup", AutoTakeover, AutoResync, BunkerSyncTimeOut, BunkerSyncElapsedTime }
	str RvgResourceName
	int AutoTakeover = 1
	int AutoResync
	str BunkerSyncTimeOut
	int BunkerSyncElapsedTime
)

type RVGShared (
	static int NumThreads = 1
	static str ArgList[] = { RVG, DiskGroup }
	str RVG
	str DiskGroup
)

type RVGSharedPri (
	static keylist SupportedActions = { fbsync, resync }
	static int NumThreads = 1
	static int OnlineRetryLimit = 1
	static str ArgList[] = { RvgResourceName, "RvgResourceName:RVG", "RvgResourceName:DiskGroup", AutoTakeover, AutoResync }
	str RvgResourceName
	int AutoTakeover = 1
	int AutoResync
	temp str VCSResLock
)

type RVGSnapshot (
	static keylist RegList = { Prefix }
	static int NumThreads = 1
	static str ArgList[] = { RvgResourceName, CacheObj, Prefix, DestroyOnOffline }
	str RvgResourceName
	str CacheObj
	str Prefix
	boolean DestroyOnOffline = 1
	temp str FDFile
	temp str VCSResLock
)

type RemoteGroup (
	static boolean IntentionalOffline = 1
	static int OnlineRetryLimit = 2
	static int ToleranceLimit = 1
	static str ArgList[] = { IpAddress, Port, Username, Password, GroupName, VCSSysName, ControlMode, OfflineWaitTime, DomainType, BrokerIp, ReturnIntOffline }
	str IpAddress
	int Port = 14141
	str Username
	str Password
	str GroupName
	str VCSSysName
	str ControlMode
	int OfflineWaitTime
	str DomainType
	str BrokerIp
	str ReturnIntOffline[]
	temp str OfflineMonitoringNode
)

type SambaServer (
	static str ArgList[] = { ConfFile, SambaTopDir, LockDir, Ports, IndepthMonitorCyclePeriod, ResponseTimeout, PidFile, SocketAddress }
	str ConfFile
	str SambaTopDir
	str LockDir
	int Ports[] = { 139, 445 }
	int IndepthMonitorCyclePeriod = 5
	int ResponseTimeout = 10
	str PidFile
	str SocketAddress
)

type SambaShare (
	static str ArgList[] = { "SambaServerRes:ConfFile", "SambaServerRes:SambaTopDir", "SambaServerRes:LockDir", ShareName, ShareOptions, "SambaServerRes:Ports", SambaServerRes, "SambaServerRes:PidFile", "SambaServerRes:SocketAddress" }
	str SambaServerRes
	str ShareName
	str ShareOptions
)

type Share (
	static keylist SupportedActions = { "direxists.vfd" }
	static str ArgList[] = { PathName, Options, "NFSRes:State" }
	str NFSRes
	str PathName
	str Options
)

type Volume (
	static int NumThreads = 1
	static str ArgList[] = { Volume, DiskGroup }
	str Volume
	str DiskGroup
)

type VolumeSet (
	static str ArgList[] = { DiskGroup, VolumeSet }
	str DiskGroup
	str VolumeSet
)

type Zone (
	static str IMFRegList[] = { BootState }
	static int IMF{} = { Mode=3, MonitorFreq=5, RegisterRetryLimit=3 }
	static str ArgList[] = { Pool, BootState, ShutdownGracePeriod, RunFsck, DetachZonePath, ForceAttach, DeleteVCSZoneUser, DROpts }
	static int ContainerOpts{} = { RunInContainer=0, PassCInfo=1 }
	static boolean AEPTimeout = 1
	str Pool
	str BootState = multi-user
	int ShutdownGracePeriod
	boolean RunFsck = 0
	boolean DetachZonePath = 1
	boolean ForceAttach = 1
	boolean DeleteVCSZoneUser = 0
	str DROpts{}
)

type Zpool (
	static str ArgList[] = { PoolName, AltRootPath, ChkZFSMounts, ZoneResName, "ZoneResName:State", DeviceDir, FailMode, ForceOpt, ForceRecoverOpt }
	str PoolName
	str AltRootPath
	boolean ChkZFSMounts = 1
	str ZoneResName
	str DeviceDir[]
	str FailMode = continue
	boolean ForceOpt = 1
	boolean ForceRecoverOpt = 0
)

