/*
Title      	Solaris Core MOF Specification 
Description	Solaris Core 
Date        	05/09/2000
Version     	1.1
(c) Copyright 2000, Sun Microsystems, Inc. 
*/


#pragma Locale ("en_US")


    [Provider("com.sun.wbem.solarisprovider.computersystem.Solaris_ComputerSystem")]
class Solaris_ComputerSystem:CIM_UnitaryComputerSystem
{
    [Description("Time in which system must be idle in order for"
		 "system to shutdown.")
    ]
    string AutoShutdownIdleTime;

    [Description("Time in which the system starts monitoring the"
	         "idle time for possible power shutdown")
    ]
    string AutoShutdownStartTime;

    [Description("Time in which the system stops monitoring the"
    	         "idle time for possible power shutdown")
    ]
    string AutoShutdownStopTime;

    [Description("This is the task performed if the idle time"
	         "AND time period conditions are met.")
    ]
    string AutoShutdownBehavior;
	
    [Description("This method sets the system power mgt properties.")]
    sint32 setPowerMgtData(
	[IN, 
	 MinValue(0), 
	 MaxValue(1440)
	] 
	sint32 idletime, 

        [IN, 
	 MinValue(0), 
  	 MaxValue(23)
  	] 
	sint32 starttimehour, 

        [IN, 
	 MinValue(0), 
	 MaxValue(59)
	] 
	sint32 starttimemin, 
	
        [IN, 
	 MinValue(0), 
	 MaxValue(23)
	] 
	sint32 stoptimehour, 

        [IN, 
	 MinValue(0), 
	 MaxValue(59)
	] 
	sint32 stoptimemin, 

        [IN, 
	 MinValue(1), 
	 MaxValue(5), 
         ValueMap {"1", "2", "3", "4", "5"},
         Values {"shutdown", "noshutdown","autowakeup", "default", 
                 "unconfigured"}
        ] 
	sint32 behavior
    );	
};

	[Provider ("com.sun.wbem.solarisprovider.logsvc.Solaris_LogRecord")]
class Solaris_LogRecord 
{
    [read, 
     key, 
     Description("A Record identifier - along with a hashCode and a"
	         "fileName uniquely describe a log record instance."
		 "This field is generated by the logging service.")
    ]
    sint64 RecordID;

    [read, 
     key, 
     Description("Additional Record identifier generated by the"
	         "logging service.")
    ]
    sint32 RecordHashCode;

    [read, 
     key, 
     Description("Logical name of the file where the record exists.")
    ]
    string Filename;

    [read, 
     Description("Date and time at which the record was written.")
    ]
    datetime RecordDate; 

    [read, 
     write, 
     Description("Category of the record - valid values are Application, "
	         "System and Security.")
    ]
    sint32 category = -1;

    [read, 
     write, 
     Description("Severity of the log - Error, Warning and Informational.")
    ]
    sint32 severity = -1;

    [read, 
     write, 
     Description("Name of the application that generated this log record.")
    ]
    string AppName = "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 data = "Unknown";

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

    [Description("Method to transfer bulk data.")]
    sint32 bulkData([IN] string filter, [OUT] string data[]);
	
};

    [Provider("com.sun.wbem.solarisprovider.logsvc.Solaris_LogService")]
class Solaris_LogService : CIM_Service
{

    [Description("Method to clear a log file.")]
    sint32 clearLog([IN] string fileName);

    [Description("Method to determine the number of records a log file has.")]
    sint64 getNumRecords([IN] string fileName, [OUT] sint64 numRec);

    [Description("Method to list the names of all the log files"
                 " on this system.")
    ]
    sint32 listLogFiles([OUT]string logFiles[]);

    [Description("Method to query the name the log file currently in use.")]
    sint32 getCurrentLogFileName([OUT] string fileName);

    [Description("Method to query the number of log files allowed on "
		 "this system.")
    ]
    sint32 getNumLogFiles([OUT] sint32 numFiles);

    [Description("Method to query the allowed limit in terms of size for"
		 "a log file .")
    ]
    sint64 getLogFileSize([OUT] sint64 fileSize);

    [Description("Method to check if the system log switch is turned on"
  		 " or off")
    ]
    sint32 getSyslogSwitch([OUT] string switch); 

    [Description("Method to check the physical file name prefix of the log"
		 " file")
    ]
    sint32 getLogStorageName([OUT] string fileName); 

    [Description("Method to check the physical directory location of the"
		 " log file")
    ]
    sint32 getLogFileDir([OUT] string dirName); 
};


    [Association, 
     Abstract
    ]
class Solaris_SystemSetting : CIM_ElementSetting
{
    [override("Element")] 
    Solaris_ComputerSystem REF Element;

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

    [Provider ("com.sun.wbem.solarisprovider.productregistry.Solaris_Product")]
class Solaris_Product : CIM_Product
{
	// InstanceNumber ought to be a key, so, just concatenate it
	// to the version number internally.

	uint32 InstanceNumber;
	string DisplayedName;
	string InstalledLocation;
	string UninstalledLocation; 

	// Info about any component this might be dependent on
	String ParentID;

	string BackwardCompatible[];

	string Keys[];
	string Values[];
};


    [Association, 
     Provider ("com.sun.wbem.solarisprovider.productregistry.Solaris_ProductProductDependency")
    ]
class Solaris_ProductProductDependency : CIM_ProductProductDependency
{
    [override("RequiredProduct")]
    Solaris_Product REF RequiredProduct;

    [override("DependentProduct")]
    Solaris_Product REF DependentProduct;
};

    [Association, 
     Provider("com.sun.wbem.solarisprovider.productregistry.Solaris_ProductParentChild")
    ]
class Solaris_ProductParentChild : CIM_ProductParentChild
{
    [override("Parent")]
    Solaris_Product REF ParentProduct;

    [override("Child")]
    Solaris_Product REF ChildProduct;
};

