WBEM Provider Data Sheet

Operating System Provider

This data sheet provides information about the Operating System WBEM provider (implemented using the Pegasus C++ API).

This provider supports the CIM_OperatingSystem class, as well as a PG_OperatingSystem subclass that adds the properties SystemUpTime and OperatingSystemCapability.  The intended audience of this document is software professionals who will design, implement, enhance, and/or support client applications that will use this provider.

This data sheet is maintained in open source and is updated frequently.  This version was last updated 17-May-2002.  See the Pegasus open source site (http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/), location pegasus/src/Providers/ManagedSystem/OperatingSystem/doc/OSProvider.htm, for the most recent version.


Keywords:  (Pegasus C++ API, Operating System, Linux, HP-UX, Debian, Managed System Identity, CIM_OperatingSystem, PG_OperatingSystem)

Table Of Contents

1.      Provider Overview (Description, Requirements, Release History, Supported Managed Resources, Special Requirements & Dependencies)

2.      Setting Up This Provider (Installing, Configuring)

3.      Using This Provider (Schema Supported, Indications Generated, Associations Provided)

4.      Links To More Information (Additional Provider Documentation, WBEM Information, Managed Resource Information, Client Information, Support Contacts, Migration and Co-existence Information, Possible Provider Enhancements)

5.      Limitations, Known Defects, and Performance Considerations


1. Provider Overview

·         Description
This provider is for use by clients as part of a basic understanding of the identity of the Managed System on which this provider is running (typically a server or appliance).  This Operating System provider implements a CIM_OperatingSystem and a PG_OperatingSystem subclass of CIM_OperatingSystem (adding the properties of SystemUpTime and OperatingSystemCapability).  SystemUpTime is a convenience property. It provides direct access to this value, versus having clients/providers calculate the value from LastBootUpTime and the LocalDateTime.  OperatingSystemCapability exposes if the OS itself is 32-bit or 64-bit capable.

·         Requirements
The Operating System Provider is implemented and tested on HP-UX, Debian Linux, and Windows (although with varying property implementations for each).   The Linux mechanism for getting maximum number of processes will only work on Linux kernels 2.4.* or later.  The HP-UX mechanism for determining the capability of the OS will work on versions 11.0 and 11.11.

·         Release History
22-Apr-2002 - Added Linux-specific code paths from Linux_OperatingSystem provider. Added support for additional properties for HP-UX and Windows, including Caption, Description, Status for both and LicensedUsers for HP-UX.

19-Mar-2002 - submittal of generic OS provider with HP-UX specific code paths and - Windows paths to return OS version, type, bootup time, time, timezone, and memory information.

26-Feb-2002 - initial release of provider for Linux_OperatingSystem, submitted to Pegasus open source community.

·         Supported Managed Resources
Managed systems (servers, appliances, desktops) running HP-UX 11.0 and 11.11, Linux, and Windows.

·         Special Requirements & Dependencies
The Linux mechanism for getting maximum number of processes will only work on Linux kernels 2.4.* or later.


2. Setting Up This Provider

·        Installing This Provider

This generic Operating System provider is available from the Pegasus open source site(http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/) with the following CVS tree locations:

o       Makefile, headers, and source:  pegasus/src/Providers/ManagedSystem/OperatingSystem/

o       Schema MOF file:  pegasus/Schemas/pegasus/ManagedSystem/VER20/PG_OperatingSystem20.mof

o       Provider registration MOF file: pegasus/Schemas/pegasus/ManagedSystem/VER20/PG_OperatingSystem20R.mof

·         The provider executable is "libOSProvider.sl", called "OSProvider" in the registration MOF (to differentiate it from the Pegasus OS provider in the Generic directory, else provider registration results in confusion).  Provider is registered to support the /root/cimv2 namespace as an instance provider and method provider.  There are no special installation instructions; will be installed by default in most Pegasus-based product releases. The OS security mechanisms will be used to authorize invocation of methods such as shutdown and reboot (must be root) when they are enabled.

·         Configuring This Provider
This provider does not accept specific configuration adjustments (beyond standard WBEM support).


3. Using This Provider

Schema supported by this provider

This provider supports the CIM_OperatingSystem and PG_OperatingSystem classes.  Tables 1 through 4 describe the properties and methods supported by the provider.

Table 1 describes the properties of the CIM_OperatingSystem class.  It has three columns.  The first is the property name (including type and units), the second is the property inheritance (indicating which class or superclass defines the property), and the third is the property’s value and data source.  Each row describes a property. 

Table 1: CIM_OperatingSystem Properties

 Property Name

 Property Inheritance

Property Value
(& data source)

string Caption

Inherited from CIM_ManagedElement

HP-UX, Linux, Windows: Returns "The current Operating System"

string Description

Inherited from CIM_ManagedElement

HP-UX, Linux, Windows: Returns "This instance reflects the Operating System on which the CIMOM is executing (as distinguished from instances of other installed operating systems that could be run)."

datetime InstallDate

Inherited from CIM_ManagedSystemElement

HP-UX, Linux, Windows: Not implemented

string Status

Inherited from CIM_ManagedSystemElement

HP-UX, Linux, Windows: Returns "Unknown" (although if the OS is running enough for CIMOM to function, may consider "OK", but would need to distinguish it from "Degraded" or "Stopping")

string CSCreationClassName  [Key]

Local to CIM_OperatingSystem

HP-UX, Linux, Windows: Returns “CIM_UnitaryComputerSystem”

string CSName [Key]

Local to CIM_OperatingSystem

HP-UX, Linux: Returns the system name (fully qualified if possible).  Gets the fully qualified system name from the gethostbyname() system call, or if that fails, uses the hostname obtained from the gethostname() system call.

Windows: Not implemented

string CreationClassName [Key]

Local to CIM_OperatingSystem

HP-UX, Linux, Windows: Returns  “CIM_OperatingSystem”

(even for PG_OS, since actually the same instance, thus the same keys, just additional properties)

string Name [Key]

Inherited from CIM_ManagedSystemElement

(and made one of 4 keys of CIM_OperatingSystem)

HP-UX, Linux: the name of this system, from the sysname field of the uname() system call.

Windows: Not implemented.

uint16 OSType

Local to CIM_OperatingSystem

HP-UX: 8

Linux: 36

Windows: appropriate value for Windows OS type.

string OtherTypeDescription

Local to CIM_OperatingSystem

HP-UX, Windows: Not implemented

Linux: the LINUX vendor name and release  (from /etc/ files)

string Version

Local to CIM_OperatingSystem

HP-UX: the release info from the uname() system call (for example, B.11.20)

Linux: the release and version info from the uname() system call

Windows: major and minor version and build number

datetime LastBootUpTime

Local to CIM_OperatingSystem

HP-UX: boot_time field from pstat() system call (local time with GMT offset)

Linux: info from /proc/uptime file

Windows: Not implemented

datetime LocalDateTime

Local to CIM_OperatingSystem

HP-UX, Linux: info from time() system call (local time with GMT offset)

Windows: GetLocalTime system call

NOTE: could change all to use CIMOM local time call

sint16 CurrentTimeZone

Local to CIM_OperatingSystem

HP-UX, Linux: Info from time() system call gmtoff

Windows: GetTimeZoneInformation system call

uint32 NumberOfLicensedUsers

Local to CIM_OperatingSystem

HP-UX: number of licensed users from interpreting the version string of the uname() system call (0 if unlimited or 128 or 256)

Linux: Return 0 (since unlimited)

Windows: Not implemented

uint32 NumberOfUsers

Local to CIM_OperatingSystem

HP-UX, Linux: The number of ut_users from getutent calls

Windows: Not implemented

uint32 NumberOfProcesses

Local to CIM_OperatingSystem

HP-UX: The number of active processes from the pstat() system call.

Linux: The number of process entries in the /proc directory (tell by entry name characters)

Windows: Not implemented

uint32 MaxNumberOfProcesses

Local to CIM_OperatingSystem

HP-UX: max_proc from the pstat() system call

Linux: info from the /proc/sys/kernel/threads-max file (which only works on kernels 2.4.* or later)

Windows: Not implemented

uint64 TotalSwapSpaceSize

(in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: The sum of KB available across all swap from the swapinfo -q command

Linux: Returns 0 (Linux has no swap space, only paging space)

Windows: Not implemented

uint64 TotalVirtualMemorySize

(in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: The sum of KB available across all swap from the swapinfo -q command (same as SwapSize)

Linux: Info from the /proc/meminfo file (SwapTotal)

Windows: GlobalMemoryStatus system call

uint64 FreeVirtualMemory

(in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: The sum of KB free across all swap from the swapinfo -at command

Linux: Info from the /proc/meminfo file (SwapFree)

Windows: Info from the GlobalMemoryStatus system call

uint64 FreePhysicalMemory

(in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: Info from the pstat() system call (psd_free)

Linux: Info from the /proc/meminfo  file (MemFree)

Windows: Info from the GlobalMemoryStatus system call

uint64 TotalVisibleMemorySize

(in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: Info from the pstat() system call; physical memory adjusted for page size

Linux: Not implemented

Windows: Info from the GlobalMemoryStatus system call

uint64 SizeStoredInPagingFiles (in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: Returns 0 (no paging files)

Linux: Not implemented

Windows: Info from the GlobalMemoryStatus system call

uint64 FreeSpaceInPagingFiles (in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: Returns 0 (no paging files)

Linux: Not implemented

Windows: Info from the GlobalMemoryStatus system call

uint64 MaxProcessMemorySize (in KiloBytes)

Local to CIM_OperatingSystem

HP-UX: The sum of the data, text, and stack sizes retrieved via the kmtune command

Linux: Info from the /proc/sys/vm/overcommit_memoryt file

Windows: Info from the GetSystemInfo system call

boolean Distributed

Local to CIM_OperatingSystem

HP-UX, Linux: Returns FALSE

Windows: Not implemented

uint32 MaxProcessesPerUser

Local to CIM_OperatingSystem

HP-UX, Linux: Returns _SC_CHILD_MAX value from sysconf() system call

Windows: Not implemented


Table 2 describes the properties of the PG_OperatingSystem class.  It has three columns.  The first is the property name (including type and units), the second is the property inheritance (indicating which class or superclass defines the property), and the third is the property’s value or data source.  Each row describes a property.

Table 2: PG_OperatingSystem Properties

Property Name

 Property Inheritance

Property Value
(& data source)

The PG_OperatingSystem class inherits properties of superclass CIM_OperatingSystem (as described in Table 1 and not repeated here).

uint64 SystemUpTime

(in seconds)

Local to PG_OperatingSystem

HP-UX: Calculated from current time and BootUpTime.

Windows: Not implemented.

string OperatingSystemCapability

Local to PG_OperatingSystem

Defined as a String (vs. enum) for maximum flexibility across OS capability representations.

HP-UX: Returns "32 bit" or "64 bit"  (number of bits used by the kernel for pointers).

Windows: Not implemented.


Tables 3 and 4 describe the intrinsic methods and extrinsic methods for CIM_OperatingSystem and inherited by PG_OperatingSystem; there are no local methods within PG_OperatingSystem.  The GetInstance operation is supported on both classes (returning only CIM_ properties for CIM_OperatingSystem).  Enumerate operations only return instances on the PG_ subclass (as the CIMOM will invoke subclass providers on enumerations).  The Provider currently registers as an Instance Provider and a Method Provider.

Table 3 describes the intrinsic methods supported by this provider.  It has three columns.  The first is the method name, the second is a description of the provider’s actions based on invoking that method, and the third is a list of any exceptions that could result from invoking the method.  Each row describes a method.

Table 3: Intrinsic Methods for CIM_OperatingSystem and PG_OperatingSystem

  Method Name

 Description

Exceptions Thrown

EnumerateInstances

Returns all instances of class (expect one unless include installed OSs) with all properties

None

EnumerateInstanceNames

Returns all instances of class (expect one unless include installed OSs) with key properties

None

GetInstance

Returns the requested instance (with all properties).

CIM_ERR_INVALID_PARAMETER

(if wrong class, wrong number of keys, or wrong keys)

CIM_ERR_NOT_FOUND (from CIMOM) if no instance

ModifyInstance

 

 

 

 

 

Returns Not Supported

CIM_ERR_NOT_SUPPORTED

DeleteInstance

Returns Not Supported

CIM_ERR_NOT_SUPPORTED

Initialize

Does nothing

None

Terminate

Does nothing

None

CreateInstance

Returns Not Supported

CIM_ERR_NOT_SUPPORTED


Table 4 describes the extrinsic methods supported by this provider.  It has three columns.  The first is the method name, the second is a description of the provider’s actions based on invoking that method, and the third is a list of any exceptions that could result from invoking the method.  Each row describes a method.

Table 4: Extrinsic Methods for CIM_OperatingSystem

 Method Name

 Description

Exceptions thrown

Reboot

 

HP-UX and Linux: invokes OS reboot command from /sbin, /usr/sbin, or /usr/local/sbin

Could add more cleanup before actual command execution.

HP-UX, Linux: currently disabled (NotSupported)

Windows: Not implemented

Shutdown

 

HP-UX: invokes shutdown command from /sbin, /usr/sbin, or /usr/local/sbin

Linux: invokes OS poweroff command from /sbin, /usr/sbin, or /usr/local/sbin

Could add more cleanup before actual command execution.

HP-UX, Linux: currently disabled (NotSupported)

Windows: Not implemented

 

·         Indications generated by this provider
This provider does not currently generate any indications.

·         Associations provided by this provider
This provider does not currently support any associations (but logical extensions would be the RunningOS and InstalledOS associations to a ComputerSystem).


4. Links To More Information

·         Additional Provider Documentation
There is currently no additional documentation for this provider beyond this information and that in the Pegasus source tree (listed in Installing This Provider).

See also the man pages for information on the various commands and system calls noted in the descriptions above.

·         WBEM information
For a CIM tutorial, go to http://dmtf.org/education/cimtutorial.php.
For information about the Pegasus WBEM infrastructure, see http://www.opengroup.org/pegasus.
For information about WBEMsource, see http://www.wbemsource.org.

·         Managed Resource Documentation
Information regarding each operating system can be found in the man pages and manuals of that operating system.

·         Client Information
None.

·         Support Contacts
None.

·         Migration and Co-existence Information
None.

·         Possible provider enhancements
There are a number of enhancements that could be made to this provider.
(1) All properties are currently read-only.  Could add support to change appropriate values (probably via modifyInstance).  Support for createInstance and deleteInstance seems undesirable for running OS instance (but may be helpful for installed OSs). 
(2) Need to enable shutdown and reboot operations when have appropriate security support, and perhaps some additional cleanup before executing the commands.
(3) The provider currently doesn’t check Flags when invoked by CIMOM.
(4) The provider currently doesn’t check Property List when invoked by CIMOM. Some properties are more expensive to gather (for example, number of users) and could be skipped if not requested.
(5) Support for RunningOS and InstalledOS associations would be good (although RunningOS is implicit with the first instance implemented). 
(6) OS Status is currently always returned as Unknown.  If the OS is running enough for the WBEM infrastructure to function, a state of “OK” might be appropriate, but “Degraded” and “Stopping” could also apply and would need to be identified and distinguished.


5. Limitations, Known Defects, and Performance Considerations

Linux-specific mechanism for getting maximum number of processes will only work on Linux kernels 2.4.* or later.

The Reboot and Shutdown methods have been disabled for HP-UX and Linux; can be enabled in the future.


Top of Page


URL: http://cvs.opengroup.org/cgi-bin/cvsweb.cgi/pegasus/src/Providers/ManagedSystem/OperatingSystem/doc/OSProvider.htm
Last updated: 17-May-2002
This provider documentation was developed based on the WBEMsource provider documentation template available at http://www.wbemsource.org/wbem-doctemp.