/*
Title	    Solaris Devices MOF specification 1.0
Description Solaris Device model.
Date        11/03/00
Version     1.0 
Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved.
*/

#pragma Locale ("en_US")

 
[Provider("native:com.sun.wbem.nativeprovider.SolarisNative:libSolarisProcessor.so"),
 Description("The CPU is considered to be a separate card. On most"
 	    " systems the individual CPU is a FRU. In Ultra class"
	    " machines it sits on the UPA bus, whereas in older "
	    "machines the CPU attaches to the MBus.") 
]
class Solaris_Processor:CIM_Processor
{
};

[Description ("Solaris_MediaPresent is an association between a"
               "Solaris_DiskDrive and Solaris_DiskPartition"
               "This will link each partition to the disk drive"
               "where the partion is located.") 
]
class Solaris_MediaPresent : CIM_MediaPresent
{
};

[Provider("com.sun.wbem.solarisprovider.diskdrive.Solaris_DiskDrive"),
 Description ("This mof describes a Solaris_DiskDrive.")
]
class Solaris_DiskDrive : CIM_DiskDrive {
    [MaxLen (256), 
     Description ("A string describing the type of disk.")
    ] 
    string DiskType;

    [MaxLen (256), 
     Description ("A string containing a user defined label for the disk.") 
    ] 
    string DiskLabel;

    [Description ("The number of sectors per cylinder.")] 
    uint32 SectorsPerCylinder;

    [Description ("The number of heads per cylinder.")] 
    uint32 HeadsPerCylinder;

    [Description ("The number of sectors per track.")] 
    uint32 SectorsPerTrack;

    [Description ("The size of a cylinder in bytes.")] 
    uint32 BytesPerCylinder;

    [Description ("The number of cylinders for this disk.")] 
    uint32 PhysicalCylinders;

    [Description ("The number of cylinders available for partitions.")] 
    uint32 DataCylinders;

    [Description ("The number of reserved cylinders.")] 
    uint32 AlternateCylinders;

    [Description ("The number of actual cylinders.")] 
    uint32 ActualCylinders;

    [Description ("Does this disk require fdisk partitions."
         "Solaris i386 machines require a disk to"
         "contain fdisk partitions.") 
    ]
    boolean FdiskRequired;

    [Description ("Does this disk contain fdisk partitions.")] 
    boolean FdiskPresent;

    [Description ("Label the disk with the given string."
         "The string should contain a short label for the"
         "disk of up to 8 characters.") 
    ]
    boolean LabelDisk(
        String label
    );

    [Description ("Create one  Solaris fdisk partition that"
	 "uses the whole disk") ]
    boolean CreateDefaultFdiskPartition();

    [Description ("Create fdisk partitions on this disk")]
    boolean CreateFdiskPartitions(
        uint16 DiskParameters[]
    );

    [Description ("Retrieve the current fdisk partitions for this disk")]
    boolean GetFdiskPartitions();
};

[Provider("com.sun.wbem.solarisprovider.diskpartition.Solaris_DiskPartition"),
 Description ("This mof describes a Solaris_DiskPartition")
]
class Solaris_DiskPartition : CIM_DiskPartition {
    [Description ("The block count for this partition")] 
    uint32 Blocks;

    [Description ("The size in bytes of this partition")] 
    uint32 PartitionSize;

    [Description ("The Starting cylinder for this partition")] 
    uint32 StartCylinder;

    [Description ("The ending cylinder for this partition")] 
    uint32 EndCylinder;

    [Description ("The number of cylinders for this partition")] 
    uint32 TotalCylinders;

    [MaxLen (256), 
     Description ("A string containing the deviceID of the scoping disk.")
    ] 
    string DiskID;

    [Description ("The FLAG for this partition. The Flag describes"
         "how the partition is to be mounted."
         "0x00 Mountable Read Write"
         "0x01 Not Mountable"
         "0x10 Mountable Read Only") 
    ] 
    uint8 Flag;

    [Description ("The TAG for this partition. The Tag describes"
         "the type of partiion"
         "Unassigned   0x00"
         "Boot         0x01"
         "Root         0x02"
         "Swap         0x03"
         "Usr          0x04"
         "Backup       0x05"
         "Stand        0x06"
         "Var          0x07"
         "Home         0x08"
         "Altsctr      0x09"
         "Cache        0x0a") 
    ] 
    uint8 Tag;

    [Description ("Is there an existing file system on this partition")] 
    boolean ValidFileSystem;

    [Description ("Create file system on this partition using the default"
         "parameters. Returns TRUE if successful.") 
    ] 
    boolean CreateFileSystem();

    [Description ("Create partition on this disk. Partitions are created"
         "based on the instance of Solaris_DiskPartition that"
         "are associated with this Solaris_DiskDrive instance.") 
    ]
    boolean CreatePartitions(
        uint16 DiskParameters[]
    );

};





// ===================================================================
//   CpuUtilizationPerformanceMonitor
// ===================================================================
        [Association,
         Provider("com.sun.wbem.solarisprovider.perfmon.Solaris_CpuUtilizationPerformanceMonitor"),
         Description (
         "This association relates a cpu statistical information object to "
         "the cpu device.") ]

class Solaris_CpuUtilizationPerformanceMonitor : CIM_DeviceStatistics
{
        [Override ("Stats"), Weak, Description (
         "The statistical information object that contains the data and "
         "dependencies associated with the cpu device.") ]
   Solaris_CpuUtilizationInformation REF Stats; 

        [ Override ("Element"), Description ("The cpu device.") ]
   Solaris_Processor REF Element;

};



// ===================================================================
//   CpuVminfoPerformanceMonitor
// ===================================================================
        [Association,
         Provider("com.sun.wbem.solarisprovider.perfmon.Solaris_CpuVminfoPerformanceMonitor"),
         Description (   
         "This association relates a cpu statistical information object to "
         "the cpu device.") ]
 
class Solaris_CpuVminfoPerformanceMonitor : CIM_DeviceStatistics
{
        [Override ("Stats"), Weak, Description (
         "The statistical information object that contains the data and "
         "dependencies associated with the cpu device.") ]
   Solaris_CpuVminfo REF Stats; 
 
        [ Override ("Element"), Description ("The cpu device.") ]
   Solaris_Processor REF Element;   
 
};



// ===================================================================
//   CpuSysinfoPerformanceMonitor
// ===================================================================
        [Association,
         Provider("com.sun.wbem.solarisprovider.perfmon.Solaris_CpuSysinfoPerformanceMonitor"),
         Description (   
         "This association relates a cpu statistical information object to "
         "the cpu device.") ]
 
class Solaris_CpuSysinfoPerformanceMonitor : CIM_DeviceStatistics
{
        [Override ("Stats"), Weak, Description (
         "The statistical information object that contains the data and "
         "dependencies associated with the cpu device.") ]
   Solaris_CpuSysinfo REF Stats; 
 
        [ Override ("Element"), Description ("The cpu device.") ]
   Solaris_Processor REF Element;   
 
};
 

// ===================================================================
//   DiskIOPerformanceMonitor
// ===================================================================
        [Association,
         Provider("com.sun.wbem.solarisprovider.perfmon.Solaris_DiskIOPerformanceMonitor"),
         Description (
         "This association relates a disk statistical information object to "
         "the disk device.") ]

class Solaris_DiskIOPerformanceMonitor : CIM_DeviceStatistics
{
        [Override ("Stats"), Weak, Description (
         "The statistical information object that contains the data and "
         "dependencies associated with the disk device.") ]
   Solaris_DiskIOInformation REF Stats;
 
        [ Override ("Element"), Description ("The disk device.") ]
   Solaris_DiskDrive REF Element;
 
};




[Provider("com.sun.wbem.solarisprovider.serialport.Solaris_SerialPort"),
 Description ("This is the MOF file that defines a Solaris serial port.")
]
class Solaris_SerialPort:CIM_SerialController
{
    [read]
    boolean ServiceEnabled;

    [read]
    boolean SettableBaudRate;
    
    [read]
    boolean SettableDataBits;
    
    [read]
    boolean SettableFlowControl;
    
    [read]
    boolean SettableParity;
    
    [read]
    boolean SettableParityCheck;
    
    [read]
    boolean SettableStopBits;

    [read]
    boolean SupportsParityCheck;

    [read]
    boolean SupportsXOnXOff;

    [read]
    boolean SupportsXOnXOffSet;

    [read]
    string PortMonitor;

    [read]
    string ServiceTag;

    [read]
    string Comment;

    boolean DisablePortService();
};


[Provider("com.sun.wbem.solarisprovider.serialport.Solaris_SerialPortConfiguration")] 
class Solaris_SerialPortConfiguration:CIM_Setting
{
    [read,
     write(true)
    ]
    boolean ServiceEnabled;

    boolean PortDeleted;

    [read,
     write(true)
    ]
    string BaudRate;
    
    [read, 
     write(true)
    ]
    string TerminalType;

    [read, 
     write(true)
    ]
    boolean TTYFlag_Init;

    [read,
     write(true)
    ]
    boolean TTYFlag_Bidirectional;

    [read, 
     write(true)
    ]
    boolean TTYFlag_CarrierConnect;

    [read, 
     write(true)
    ]
    boolean SoftwareCarrier;

    [read, 
     write(true)
    ]
    boolean CreateUtmp;

    [read, 
     write(true)
    ]
    string LoginPrompt;

    [read, 
     write(true)
    ]
    string Comment;

    [read, 
     key
    ]
    string ServiceTag;

    [read,
     key
    ]
    string PortName;

    [read]
    string deviceName;

    [read,
     write(true)
    ]
    string PortmonTag;

    [read, 
     write(true)
    ]
    string ServiceProgram;

    [read,
     write(true)
    ]
    string StreamsModules;

    [read, 
     write(true)
    ]
    string Timeout;
};

[Provider ("com.sun.wbem.solarisprovider.serialport.Solaris_SerialPortSetting")]
class Solaris_SerialPortSetting:CIM_ElementSetting
{
    [override("Element")] 
    Solaris_SerialPort REF Element;

    [override("Setting")] 
    Solaris_SerialPortConfiguration REF Setting;
};


[Provider ("com.sun.wbem.solarisprovider.environment.Solaris_Environment")] 
class Solaris_Environment:CIM_SystemResource
{
    [key,
     Override("Name"),
     write(true)
    ]
    string Name;

    [read,
     write(true)
    ]
    string Value;
};

 
[Provider("com.sun.wbem.solarisprovider.printer.Solaris_Printer"),
 Description ("Solaris Print Provider inherited from CIM_Printer")
]

class Solaris_Printer : CIM_Printer
{
    [Description("A setting indicating what printserver is in use, if any")]
    string PrintServer;	
    
    [Description("Setting indicating if printer is local or remote")]
    boolean LocalPrinter;
    
    [Description("A setting indicating if printer is the default printer")]
    boolean DefaultPrinter;
};

[Provider("com.sun.wbem.solarisprovider.printer.Solaris_PrintJob"),
 Description ("Solaris Print Job Provider inherited from CIM_PrintJob")
]
class Solaris_PrintJob : CIM_PrintJob
{

};

[Provider("com.sun.wbem.solarisprovider.printer.Solaris_PrintService"),
 Description ("Solaris Print Service Provider inherited from CIM_Service")
]
class Solaris_PrintService : CIM_PrintService
{

};

[Provider("com.sun.wbem.solarisprovider.printer.Solaris_PrintQueue"),
 Description ("Solaris Print Service Provider inherited from CIM_PrintQueue")
]
class Solaris_PrintQueue : CIM_PrintQueue
{
    [Description("A setting indicating what printserver is in use, if any")] 
    string PrintServer;  

    [Description("Setting indicating if printer is local or remote")] 
    boolean LocalPrinter; 

    [Description("A setting indicating if printer is the default printer")] 
    boolean DefaultPrinter;
};
 
[Association,
 Provider("com.sun.wbem.solarisprovider.printer.Solaris_QueueForPrintService"),
 Description ("This association indicates that a PrintService utilizes a "
	    "particular PrintQueue.")
]
class Solaris_QueueForPrintService : CIM_QueueForPrintService
{
    [Override ("Antecedent"),
     Description ("The PrintQueue that the Service utilizes.")
    ]
    Solaris_PrintQueue REF Antecedent;

    [Override ("Dependent"),
     Description ("The PrintService that puts Jobs on the Queue.")
    ]
    Solaris_PrintService REF Dependent;
};

[Association,
 Provider("com.sun.wbem.solarisprovider.printer.Solaris_OwningPrintQueue")
]
class Solaris_OwningPrintQueue: CIM_OwningPrintQueue
{
};

[Association,
 Provider("com.sun.wbem.solarisprovider.printer.Solaris_PrinterServicingQueue"),
 Description("Solaris Print Service Provider inherited from"
	" CIM_PrinterServicingQueue")
]
class Solaris_PrinterServicingQueue : CIM_PrinterServicingQueue
{
    [Override("Antecedent")]
    Solaris_Printer  REF Antecedent;

    [Override("Dependent")]
    Solaris_PrintQueue REF Dependent;
};

[Provider ("com.sun.wbem.solarisprovider.tz.Solaris_TimeZone")]
class Solaris_TimeZone:CIM_Setting
{
    sint32 Offset;

    sint32 DaylightOffset;

    string DaylightName;

    string DaylightID;

    uint32 DaylightYear;

    [ValueMap {"0", "1", "2", "3", "4", "5", "6", "7",
	"8", "9", "10", "11" },
     Values {"January", "February", "March", "April",
	"May", "June", "July", "August", "September",
	"October", "November", "December" }
    ]
    uint32 DaylightMonth;

    uint32 DaylightDay;

    [ValueMap {"0", "1", "2", "3", "4", "5", "6"  },
     Values {"Sunday", "Monday", "Tuesday", "Wednesday",
             "Thursday", "Friday", "Saturday" }
    ]
    uint32 DaylightDayOfWeek;

    uint32 DaylightHour;

    uint32 DaylightMinute;

    uint32 DaylightSecond;

    uint32 DaylightMillisecond;

    [key]
    string StandardName;

    [Values {"MIT", "HST", "AST", "PST", "PNT", "MST", "CST",
           "EST", "IET", "PRT", "CNT", "AGT", "BET", "CAT", "GMT",
           "ECT", "EET", "ART", "EAT", "MET", "NET", "PLT", "IST",
           "BST", "VST", "CTT", "JST", "ACT", "AET", "SST", "NST" }
    ]
    string StandardID;

    uint32 StandardYear;

    [ValueMap {"0", "1", "2", "3", "4", "5", "6", "7",
                    "8", "9", "10", "11" },
     Values {"January", "February", "March", "April",
                  "May", "June", "July", "August", "September",
                  "October", "November", "December" }
    ]
    uint32 StandardMonth;

    sint32 StandardDay;

    [ValueMap {"0", "1", "2", "3", "4", "5", "6"  },
     Values {"Sunday", "Monday", "Tuesday", "Wednesday",
                  "Thursday", "Friday", "Saturday" }
    ]
    uint32 StandardDayOfWeek;

    uint32 StandardHour;

    uint32 StandardMinute;

    uint32 StandardSecond;

    uint32 StandardMillisecond;
};  

[Association,
 Provider ("com.sun.wbem.solarisprovider.tz.Solaris_SystemTimeZone")
]
class Solaris_SystemTimeZone:Solaris_SystemSetting
{
    [override("Element")]
    Solaris_ComputerSystem REF Element;

    [override("Setting")]
    Solaris_TimeZone REF Setting;
};     

[Provider("com.sun.wbem.solarisprovider.printer.Solaris_PrintSAP"),
 Description ("The ServiceAccessPoint for a printing Service.") 
]
class Solaris_PrintSAP : CIM_PrintSAP
{

};

[Provider("com.sun.wbem.solarisprovider.ether.Solaris_EthernetAdapter"),
 Description ("The Solaris Ethernet Adapter provider.") 
]
class Solaris_EthernetAdapter : CIM_EthernetAdapter
{
};

[Provider ("com.sun.wbem.solarisprovider.keyboard.Solaris_Keyboard"), 
 Description ("Solaris_Keyboard Provider inherited from CIM_Keyboard.")
] 
class Solaris_Keyboard:CIM_Keyboard
{
};


[Provider ("com.sun.wbem.solarisprovider.sound.Solaris_SoundDevice"), 
 Description ("Solaris_SoundDevice Provider inherited from CIM_LogicalDevice.")
]
class Solaris_SoundDevice:CIM_LogicalDevice
{

    [Description("a short identifying string")]
    string DeviceName;

    [Description("identifies the current version of the device")]
    string Version;

    [Description("identifies the specific configuration of the audio stream")]
    string Configuration;
        
    [Description("identifies the manufacturer  of the audio device")]
    string Manufacturer;
};

[Provider ("com.sun.wbem.solarisprovider.logsvc.Solaris_MessageLog"), 
 Description ("Solaris_MessageLog - subclass of CIM_MessageLog.")
]
class Solaris_MessageLog : CIM_MessageLog
{
    [read]
    string Type;

    [read]
    string Version;

    [Description("Method to transfer a list of log records.")]
    sint32 ListRecordsInLog(
	[IN] string filter, 
	[OUT] string data[],
	[OUT] string logtype
    );

    [Description("Method to get the size of the log"),
     Units("Bytes")
    ]
    sint64 GetLogSize(
    	[OUT] uint64 size
    );

    [Description("Method to get the syslog switch setting "
    		 "the switch is set to either on or off")
    ]
    sint32 GetSyslogSwitch(
    	[OUT] string switch
    );

    [Description("Method to get the directory where the log resides")]
    sint32 GetLogDirectory(
    	[OUT] string directory
    );
};

[Description ("Solaris_MessageLogRecord - subclass of CIM_LogRecord.")]
class Solaris_MessageLogRecord : CIM_LogRecord
{
};

[Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_LogEntry"), 
 Description("Solaris_LogEntry - subclass of Solaris_MessageLogRecord.")
]
class Solaris_LogEntry : Solaris_MessageLogRecord
{
    [read, 
     write, 
     Description("Category of the record - valid values are Application, "
		"System and Security."),
     ValueMap {"-1", "0", "1", "2"},
     Values {"Invalid", "Application", "System", "Security"}
    ]
    sint32 Category = -1;

    [read, 
     write, 
     Description("Severity of the log - Error, Warning and Informational."),
     ValueMap {"-1", "0", "1", "2"},
     Values {"Invalid", "Error", "Warning", "Informational"}
    ]
    sint32 Severity = -1;

    [read, 
     write, 
     Description("Name of the application that generated this log record.")
    ]
    string Source = "Unknown";

    [read,
     write, 
     Description("Name of the user using the application that generated"
		"the log.")
    ]
    string UserName = "Unknown";

    [read,
     write, 
     Description("Name of the machine the cimom's client is running on.")
    ]
    string ClientMachineName = "Unknown";

    [read,
     write, 
     Description("Name of the machine the cimom is running on.")
    ]
    string ServerMachineName = "Unknown";

    [read, 
     write, 
     Description("A short description of the contents of the log.")
    ]
    string SummaryMessage = "Unknown";

    [read, 
     write, 
     Description("A detailed description of the contents of the log.")
    ]
    string DetailedMessage = "Unknown";

    [read, 
     write, 
     Description("Any additional data.")
    ]
    string RecordData = "Unknown";

    [read, 
     write, 
     Description("Indicates if the record was written to syslog(1M) as well.")
    ]
    boolean SyslogFlag = false;
};

[Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_SyslogRecord"), 
 Description("Solaris_SyslogRecord - subclass of Solaris_MessageLogRecord.")
]
class Solaris_SyslogRecord : Solaris_MessageLogRecord
{
    string RecordData;
};

[Association, 
 Aggregation,
 Provider ("com.sun.wbem.solarisprovider.logsvc.Solaris_RecordInLog"), 
 Description ("RecordInLog describes the aggregation or location of Log " 
		"entries within a MessageLog.")
]
class Solaris_RecordInLog : CIM_RecordInLog
{
    [Key, 
     Aggregate, 
     Min (1),
     Max (1),
     Description ("The Message Log."),
     override("MessageLog")
    ]
    Solaris_MessageLog REF MessageLog;
    
    [Key, 
     Weak, 
     Description ("The Log entry contained within the MessageLog."),
     override("LogRecord")
    ]
    Solaris_MessageLogRecord REF LogRecord;
};

[Association, Aggregation,
 Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_LogInDataFile"), 
 Description("LogInDataFile describes a log stored as a data file.")
]
class Solaris_LogInDataFile : CIM_LogInDataFile
{
    [Key, 
     Aggregate, 
     Min (1), 
     Max (1),
     Description ("The Data File."),
     override("Antecedent")
    ]
    Solaris_DataFile REF File;
    
    [Key, 
     Weak, 
     Description ("The Log contained in the Data File."),
     override("Dependent")
    ]
    Solaris_MessageLog REF MessageLog;
};

    [Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_LogServiceProperties")
    ]
class Solaris_LogServiceProperties : CIM_Setting
{
    [key, 
     read, 
     write, 
     Description("Inconsequential key.")
    ]
    string PropSettingName;

    [Description("The physical directory location of the log file")]
    string Directory;

    [Description("The size the log file can grow to before it is backed"
		 "up or overwritten.")
    ]
    string FileSize;

    [Description("The maximum number of log files allowed to exist at any"
		 "given point in time.")
    ]
    string NumFiles;

    [Description("The system log switch - can be turned on or off to"
		 "start or stop logs from being written to syslog(1M)")
    ]
    string SyslogSwitch;

    [Description("Property that specifies which class is going to supply "
		 "the native implementation of the DataFile provider.")
    ]
    string DataFileImpl;
};

class Solaris_LogServiceSetting : CIM_ElementSetting
{
    [override("Element")] 
    Solaris_LogService REF Element;

    [override("Setting")] 
    Solaris_LogServiceProperties REF Setting;
};

    [Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_MessageLogSetting")
    ]
class Solaris_MessageLogSetting : CIM_ElementSetting
{
    [override("Element")] 
    Solaris_MessageLog REF MessageLog;

    [override("Setting")] 
    Solaris_LogServiceProperties REF Properties;
};
