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
·
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.
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).
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 |
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 |
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).
·
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.
·
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.
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.