Contents
SUSE® Linux Enterprise Server (SLES) provides a collection of open standards based tools for the unified management of disparate computing systems and environments. Our enterprise solutions implement the standards proposed by the Distributed Management Task Force. The following paragraphs describe their basic components.
Distributed Management Task Force, Inc (DMTF) is the industry organization which leads the development of management standards for enterprise and Internet environments. Their goal is to unify management standards and initiatives, and to enable more integrated, cost effective and interoperable management solutions. DMTF standards provide common system management components for control and communication. Their solutions are independent of platforms and technologies. Web Based Enterprise Management and Common Information Model are one of their key technologies.
Web Based Enterprise Management (WBEM) is a set of management and Internet standard technologies. WBEM is developed to unify the management of enterprise computing environments. It provides the ability for the industry to deliver a well-integrated collection of management tools using Web technologies. WBEM consists of the following standards:
A data model: the Common Information Model (CIM) standard
An encoding specification: CIM-XML Encoding Specification
A transport mechanism: CIM operations over HTTP
Common Information Model is a conceptual information model that describes system management. It is not bound to a particular implementation and enables the interchange of management information between management systems, networks, services and applications. There are two parts to CIM: the CIM Specification and the CIM Schema:
The CIM Specification describes the language, naming and meta schema. The meta schema is a formal definition of the model. It defines the terms used to express the model and their usage and semantics. The elements of the meta schema are classes, properties, and methods. The meta schema also supports indications and associations as types of classes, and references as types of properties.
The CIM Schema provides the actual model descriptions. It supplies a set of classes with properties and associations that provide a well understood conceptual framework within which it is possible to organize the available information about the managed environment.
The Common Information Model Object Manager (CIMOM) is a CIM object manager or, more specifically, an application that manages objects according to the CIM standard. CIMOM manages communication between CIMOM providers and a CIM client, where the administrator manages the system.
CIMOM providers are software performing specific tasks within the CIMOM that are requested by client applications. Each provider instruments one or more aspects of the CIMOM's schema. These providers interact directly with the hardware.
Standards Based Linux Instrumentation for Manageability (SBLIM) is a collection of tools designed to support Web-Based Enterprise Management (WBEM). SUSE® Linux Enterprise Server uses the open source CIMOM (or CIM server) from the SBLIM project called Small Footprint CIM Broker .
Small Footprint CIM Broker is a CIM server intended for use in resource-limited or embedded environments. It is designed to be modular and lightweight at the same time. Its based on open standards and it supports CMPI providers, CIM-XML encoding, and Managed Object Format (MOF). It is highly configurable and performs stability even if the provider crashes. It is also easily accessible as it supports various transport protocols, such as HTTP, HTTPS, Unix domain sockets, Service Location Protocol (SLP), and Java Database Connectivity (JDBC).
To set up the Small Footprint CIM Broker (SFCB) environment, make sure the
pattern in YaST is selected during SUSE Linux Enterprise Server installation. Alternatively, select it as a component to install on a server that is already running. Make sure the following packages are installed on your system:Contains the Common Information Model (CIM). CIM is a model for describing overall management information in a network or enterprise environments. CIM consists of a specification and a schema. The specification defines the details for integration with other management models. The schema provides the actual model descriptions.
Contains an adapter to write and run CMPI-type CIM providers in Python.
Contains base system CIM providers.
Contains power management providers based on DSP1027.
Contains a Python module for making CIM operation calls through the WBEM protocol to query and update managed objects.
Contains a utility allowing CMPI provider packages to register with whatever CIMOM happens to be present on the system.
Contains Small Footprint CIM Broker. It is a CIM server conforming to the CIM Operations over HTTP protocol. It is robust, with low resource consumption and, therefore, specifically suited for embedded and resource constrained environments. SFCB supports providers written against the Common Manageability Programming Interface (CMPI).
Contains Small Footprint CIM Client library runtime libraries.
Contains WBEM command line interface. It is a standalone command line WBEM client especially suited for basic systems management tasks.
Contains providers to instrument the volumes and snapshots on the Linux filesystem. These are based on SNIA's SMI-S volume management profile and Copy Services profile respectively.
SUSE® Linux Enterprise Server software repository includes additional CIM providers
that are not found in the Web-Based Enterprise Management installation
pattern. You can easily get their list and installation status by
searching the pattern sblim-cmpi-
in the YaST
software installation module. These providers cover various tasks of
system management, such as dhcp, NFS, or kernel parameters setting. It
is useful to install those providers which you are going to use with
SFCB.
CIM server sfcbd daemon is installed together with Web-Based Enterprise Management software and is started by default at system startup. The following table explains how to start, stop and check status for sfcbd.
Table 30.1. Commands for Managing sfcbd¶
Task |
Linux Command |
---|---|
Start sfcbd |
Enter rcsfcb |
Stop sfcbd |
Enter rcsfcb |
Check sfcbd status |
Enter rcsfcb |
The default setup of SFCB is relatively secure. However, check that the access to SFCB components is as secure as required for your organization.
Secure Socket Layers (SSL) transports require a certificate for secure communication to occur. When SFCB is installed, it has a self-signed certificate generated.
You can replace the path to the default certificate with a path to a
commercial or self-signed one by changing the
sslCertificateFilePath:
setting in
path_filename
/etc/sfcb/sfcb.cfg
. The file must be in PEM
format.
The default generated server certificate is in the following location:
/etc/sfcb/server.pem
![]() | Paths to SSL Certificates |
---|---|
The default generated certificate files
|
If you want to generate a new certificate, enter the following command
as root
in the command line:
tux@mercury:~> sh /usr/share/sfcb/genSslCert.sh Generating SSL certificates in . Generating a 2048 bit RSA private key ...................................................................+++ .+++ writing new private key to '/var/tmp/sfcb.0Bjt69/key.pem' -----
By default, the script generates certificates
client.pem
, file.pem
and
server.pem
in the current working directory. If
you want the script to generate the certificates in
/etc/sfcb
directory, you need to append it to the
command. If these files already exist, a warning message is displayed
and the old certificates are not overwritten.
tux@mercury:~> sh /usr/share/sfcb/genSslCert.sh /etc/sfcb Generating SSL certificates in . WARNING: server.pem SSL Certificate file already exists. old file will be kept intact. WARNING: client.pem SSL Certificate trust store already exists. old file will be kept intact.
You must remove the old certificates from the file system and run the command again.
If you want to change the way SFCB uses certificates, see Section 30.2.3.3, “Authentication”.
By default, SFCB is configured to accept all communications through the secure port 5989. The following paragraphs explain the communication port setup and recommended configuration.
The secure port that SFCB communications use via HTTPS services. This is the default. With this setting, all communications between the CIMOM and client applications are encrypted when sent over the Internet between servers and workstations. Users must authenticate with the client application to reach SFCB server. We recommend that you keep this setting. In order for the SFCB CIMOM to communicate with the necessary applications, this port must be open on routers and firewalls if they are present between the client application and the nodes being monitored.
The insecure port that SFCB communications use via HTTP services. This setting is disabled by default. With this setting, all communications between the CIMOM and client applications are open for review when sent over the Internet between servers and workstations by anyone, without any authentication. We recommend that you use this setting only when attempting to debug a problem with the CIMOM. As soon as the problem is resolved, disable the non-secure port option back. In order for the SFCB CIMOM to communicate with the necessary applications that require non-secure access, this port must be open in routers and firewalls between the client application and the nodes being monitored.
If you want to change the default port assignments, see Section 30.2.3.2, “Ports”.
SFCB supports HTTP basic authentication and authentication based on
client certificates (HTTP over SSL connections). Basic HTTP
authentication is enabled by specifying doBasicAuth
=true
in the SFCB configuration file (
/etc/sfcb/sfcb.cfg
by default). SUSE® Linux Enterprise Server
installation of SFCB supports Pluggable Authentication Modules (PAM)
approach; therefore the local root user can authenticate to the SFCB
CIMOM with local root user credentials.
If the clientCertificate
configuration property is
set to accept
or
require
, the SFCB HTTP adapter will request
a certificate from clients when connecting via HTTP over SSL (HTTPS).
If require
is specified, the client
must provide a valid certificate
(according to the client trust store specified via
sslClientTrustStore
). If the client fails to
do so, the connection will be rejected by the CIM server.
The setting clientCertificate
=accept
may not be obvious. It is very
useful if both basic and client certificate authentication are allowed.
If the client is able to provide a valid certificate, HTTPS connection
will be established and the basic authentication procedure will not be
executed. If this function cannot verify the certificate, the HTTP
basic authentication will take place instead.
SFCB is a lightweight implementation of the CIM server, but it is also highly configurable. Several options can control its behavior. Basically, you can control the SFCB server in three ways:
by setting appropriate environment variables
by using command line options
by changing its configuration file
Several environment variables directly affect the behavior of SFCB. You
need to restart the SFCB daemon by rcsfcb
restart
for these changes to take effect.
SFCB_PAUSE_PROVIDER
Specifies the provider name. The SFCB server pauses after the provider is loaded for the first time. You can then attach a runtime debugger to the provider's process for debugging purposes.
SFCB_PAUSE_CODEC
Specifies the name of the SFCB codec. The SFCB server pauses after the codec is loaded for the first time. You can then attach a runtime debugger to the process.
SFCB_TRACE
Specifies the level of debug messages for SFCB. Valid values are 0 (no debug messages), or 1 (key debug messages) to 4 (all debug messages). Default is 1.
SFCB_TRACE_FILE
By default, SFCB outputs its debug messages to standard error output (STDERR). Setting this variable causes the debug messages to be written to a specified file instead.
SBLIM_TRACE
Specifies the level of debug messages for SBLIM providers. Valid values are 0 (no debug messages), or 1 (key debug messages) to 4 (all debug messages).
SBLIM_TRACE_FILE
By default, SBLIM provider outputs its trace messages to STDERR. Setting this variable causes the trace messages to be written to a specified file instead.
sfcbd, the SFCB daemon, has several command line options that switch particular runtime features on or off. Enter these options when SFCB daemon starts.
-c, --config-file
=FILE
When SFCB daemon starts, it reads its configuration from
/etc/sfcb/sfcb.cfg
by default. With this option,
you can specify an alternative configuration file.
-d, --daemon
Forces sfcbd and its child processes to run in the background.
-s, --collect-stats
Turns on runtime statistics collecting. Various sfcbd runtime
statistics will be written to the sfcbStat
file
in the current working directory. By default, no statistics are
collected.
-l, --syslog-level
=LOGLEVEL
Specifies the level of verbosity for syslog.
LOGLEVEL
can be one of LOG_INFO,
LOG_DEBUG, or LOG_ERR, which is the default.
-t, --trace-components
=NUM
Activates component-level tracing messages, where
NUM
is an OR-ed bitmask integer that
defines which component to trace. After you specify -t
?
, it lists all the components and their associated integer
bitmask:
tux@mercury:~> sfcbd -t ? --- Traceable Components: Int Hex --- providerMgr: 1 0x0000001 --- providerDrv: 2 0x0000002 --- cimxmlProc: 4 0x0000004 --- httpDaemon: 8 0x0000008 --- upCalls: 16 0x0000010 --- encCalls: 32 0x0000020 --- ProviderInstMgr: 64 0x0000040 --- providerAssocMgr: 128 0x0000080 --- providers: 256 0x0000100 --- indProvider: 512 0x0000200 --- internalProvider: 1024 0x0000400 --- objectImpl: 2048 0x0000800 --- xmlIn: 4096 0x0001000 --- xmlOut: 8192 0x0002000 --- sockets: 16384 0x0004000 --- memoryMgr: 32768 0x0008000 --- msgQueue: 65536 0x0010000 --- xmlParsing: 131072 0x0020000 --- responseTiming: 262144 0x0040000 --- dbpdaemon: 524288 0x0080000 --- slp: 1048576 0x0100000
A useful value that reveals the internal functions of sfcbd but does
not generate too many messages, is -t
2019
.
SFCB reads its runtime configuration from configuration file
/etc/sfcb/sfcb.cfg
after starting up. This behavior
can be overridden using -c
option at start-up.
The configuration file contains option
:
value
pairs, one per line. When making
changes to this file, you can use any text editor that saves the file in
a format that is native to the environment you are using.
Any setting that has the options commented out with a number sign (#) uses the default setting.
The following options are recognized:
Specifies the local port value that sfcbd should listen to receive HTTP
(insecure) requests from CIM clients. Default is
5988
.
httpPort:
port_number
Specifies whether SFCB should accept HTTP client connections. Default
is false
.
enableHttp:
option
Option |
Description |
---|---|
true |
Enables HTTP connections. |
false |
Disables HTTP connections. |
Specifies the maximum number of simultaneous HTTP client connections
before new incoming HTTP requests are blocked. Default is
8
.
httpProcs:
max_number_of_connections
Specifies the local port value where sfcbd listens for HTTPS requests
from CIM clients. Default is 5989
.
httpsPort:
port_number
Specifies if SFCB will accept HTTPS client connections. Default is
true
.
enableHttps:
option
Option |
Description |
---|---|
true |
Enables HTTPS connections. |
false |
Disables HTTPS connections. |
Specifies the maximum number of simultaneous HTTPS client connections
before new incoming HTTPS requests are blocked. Default is
8
.
httpsProcs:
max_number_of_connections
Specifies if SFCB will provide the interop
namespace for indication support. Default is true
.
enableInterOp:
option
Option |
Description |
---|---|
true |
Enables interop namespace. |
false |
Disables interop namespace. |
Specifies the maximum number of simultaneous provider processes. After
this point, if a new incoming request requires loading a new provider,
then one of the existing providers will first be automatically
unloaded. Default is 32
.
provProcs:
max_number_of_procs
Switches basic authentication on or off based on the client user
identifier before it accepts the request. Default value is
true
which means that basic client authentication is
performed.
doBasicAuth:
option
Option |
Description |
---|---|
true |
Enables basic authentication. |
false |
Disables basic authentication. |
Specifies the local library name. The SFCB server loads the library to
authenticate the client user identifier. Default is
sfcBasicPAMAuthentication
.
provProcs:
max_number_of_procs
This option switches the use of HTTP/HTTPS “chunking” on
or off. If switched on, the server will return large volumes of
response data to the client in smaller “chunks” , rather
than to buffer the data and send it back all in one chunk. Default is
true
.
useChunking:
option
Option |
Description |
---|---|
true |
Enables HTTP/HTTPS data chunking. |
false |
Disables HTTP/HTTPS data chunking. |
Specifies the maximum time in seconds that SFCB HTTP process waits
between two requests on one connection before it terminates. Setting it
to 0
disables HTTP keep-alive. Default is
0
.
keepaliveTimeout:
secs
Specifies the maximum number of consecutive requests on one connection.
Setting it to 0
disables HTTP keep-alive. Default
value is 10
.
keepaliveMaxRequest:
number_of_connections
Specifies the registration directory, which contains the provider
registration data, the staging area, and the static repository. Default
is /var/lib/sfcb/registration
.
registrationDir:
dir
Specifies a space-separated list of directories where SFCB is searching
for provider libraries. Default is /usr/lib64 /usr/lib64
/usr/lib64/cmpi
.
providerDirs:
dir
Specifies the interval in seconds at which the provider manager is
checking for idle providers. Default is 30
.
providerSampleInterval:
secs
Specifies the interval in seconds before an idle provider gets unloaded
by the provider manager. Default is 60
.
providerTimeoutInterval:
secs
If the provider registration file does not specify any other group, and
the option is set to true
, all providers in
the same shared library are executed in the same process.
providerAutoGroup:
option
Option |
Description |
---|---|
true |
Enables grouping of providers. |
false |
Disables grouping of providers. |
Specifies the name of the file that contains the server certificate.
The file must be in PEM (Privacy Enhanced Mail, RFC 1421 and RFC 1424)
format. This file is only required if enableHttps
is
set to true
. Default is
/etc/sfcb/server.pem
.
sslCertificateFilePath:
path
Specifies the name of the file that contains the private key for the
server certificate. The file must be in PEM format and may not be
protected by passphrase. This file is only required if
enableHttps
is set to true
.
Default is /etc/sfcb/file.pem
.
sslKeyFilePath:
path
Specifies the name of the file that contains either the CA or
self-signed certificates of the clients. This file must be in PEM
format and is only required if sslClientCertificate
is set to accept
or require
.
Default is /etc/sfcb/client.pem
.
sslClientTrustStore:
path
Specifies the way SFCB handles client certificate based authentication.
If set to ignore
, it will not request a certificate
from the client. If set to accept
it will request a
certificate from the client but will not fail if the client does not
present one. If set to require
, it will refuse the
client connection if the client does not present a certificate. Default
value is ignore
.
sslClientCertificate:
option
Option |
Description |
---|---|
ignore |
Disables requesting a client certificate. |
accept |
Disables requesting a client certificate. Will not fail if no certificate is present. |
require |
Refuses the client connection without a valid certificate. |
Specifies the name of the local library to request for the user
authentication based on client certificate. This is only requested if
sslClientCertificate
is not set to
ignore
. Default value is
sfcCertificateAuthentication
.
certificateAuthLib:
file
Specifies the trace level for SFCB. You can override it by setting
environment variable SFCB_TRACE_LEVEL
. Default value
is 0
.
traceLevel:
num_level
Specifies the trace mask for SFCB. you can override it by the command
line option --trace-components
. Default value is
0
.
traceMask:
mask
Specifies the trace file for SFCB. You can override it by setting
environment variable SFCB_TRACE_FILE
. Default value
is stderr
(standard error output).
traceFile:
output
This chapter covers more advanced topics related to SFCB usage. To understand them, you need to have basic knowledge of the Linux file system and experience with the Linux command line. This chapter includes the following tasks:
Installing CMPI providers
Testing SFCB
Using wbemcli CIM client
To install a CMPI provider, you need to make sure that its shared
library is copied into one of the directories specified by
providerDirs
configuration option, see
Section 30.3.3.15, “providerDirs” . The provider must also
be properly registered using sfcbstage and
sfcbrepos commands.
The provider package is usually prepared for SFCB, so that its installation takes care of the proper registration. Most SBLIM providers are prepared for SFCB.
Class repository is a place where SFCB stores
information about CIM classes. It usually consists of a directory tree
comprised of namespace components. Typical CIM namespaces are
root/cimv2
or root/interop
, which
respectively translate to the class repository directory path on the
filesystem
/var/lib/sfcb/registration/repository/root/cimv2
and
/var/lib/sfcb/registration/repository/root/interop
Each namespace directory contains the file
classSchemas
. The file has a compiled binary
representation of all the CIM classes registered under that namespace.
It also contains necessary information about their CIM superclasses.
In addition, each namespace directory may contain a file
qualifiers
which contains all qualifiers for the
namespace. When sfcbd restarts, the class provider will scan the
directory /var/lib/sfcb/registration/repository/
and all its subdirectories to determine the registered namespaces. Then
classSchemas
files are decoded and the class
hierarchy for each namespace is built.
SFCB cannot make live CIM class manipulations. You need to add, change
or remove classes offline and restart SFCB service with rcsfcb
restart
to register the changes.
To store providers class and registration information, SFCB uses a
place called staging area. On SUSE® Linux Enterprise Server systems, it
is the directory structure under
/var/lib/sfcb/stage/
.
To add a new provider, you need to:
Copy the provider class definition files to the
./mofs
subdirectory of staging area directory
(/var/lib/sfcb/stage/mofs
).
Copy a registration file which contains the name of the class or
classes and type of provider, and the name of the executable library
file into the ./regs
subdirectory.
There are two default “mof” (class definition) files in
the staging directory: indication.mof
and
interop.mof
. MOF files under the root stage
directory /var/lib/sfcb/stage/mofs
will be copied
into each namespace after running sfcbrepos
command. The interop.mof
will only be compiled
into the interop namespace.
The directory layout may look like the following example:
tux@mercury:~> ls /var/lib/sfcb/stage default.reg mofs regs
tux@mercury:~> ls /var/lib/sfcb/stage/mofs indication.mof root
tux@mercury:~> ls /var/lib/sfcb/stage/mofs/root cimv2 interop suse virt
tux@mercury:~> ls -1 /var/lib/sfcb/stage/mofs/root/cimv2 | less Linux_ABIParameter.mof Linux_BaseIndication.mof Linux_Base.mof Linux_DHCPElementConformsToProfile.mof Linux_DHCPEntity.mof [..] OMC_StorageSettingWithHints.mof OMC_StorageVolumeDevice.mof OMC_StorageVolume.mof OMC_StorageVolumeStorageSynchronized.mof OMC_SystemStorageCapabilities.mof
tux@mercury:~> ls -1 /var/lib/sfcb/stage/mofs/root/interop ComputerSystem.mof ElementConformsToProfile.mof HostSystem.mof interop.mof Linux_DHCPElementConformsToProfile.mof [..] OMC_SMIElementSoftwareIdentity.mof OMC_SMISubProfileRequiresProfile.mof OMC_SMIVolumeManagementSoftware.mof ReferencedProfile.mof RegisteredProfile.mof
tux@mercury:~> ls -1 /var/lib/sfcb/stage/regs AllocationCapabilities.reg Linux_ABIParameter.reg Linux_BaseIndication.reg Linux_DHCPGlobal.reg Linux_DHCPRegisteredProfile.reg [..] OMC_Base.sfcb.reg OMC_CopyServices.sfcb.reg OMC_PowerManagement.sfcb.reg OMC_Server.sfcb.reg RegisteredProfile.reg
tux@mercury:~> cat /var/lib/sfcb/stage/regs/Linux_DHCPRegisteredProfile.reg [Linux_DHCPRegisteredProfile] provider: Linux_DHCPRegisteredProfileProvider location: cmpiLinux_DHCPRegisteredProfile type: instance namespace: root/interop # [Linux_DHCPElementConformsToProfile] provider: Linux_DHCPElementConformsToProfileProvider location: cmpiLinux_DHCPElementConformsToProfile type: instance association namespace: root/cimv2 # [Linux_DHCPElementConformsToProfile] provider: Linux_DHCPElementConformsToProfileProvider location: cmpiLinux_DHCPElementConformsToProfile type: instance association namespace: root/interop #
SFCB uses a custom provider registration file for each provider.
![]() | SBLIM providers registration files |
---|---|
All SBLIM providers on the SBLIM Web site already include a registration file that is used to generate the .reg file for SFCB. |
The format of SFCB registration file is:
[<class-name>] provider: <provide-name> location: <library-name> type: [instance] [association] [method] [indication] group: <group-name> unload: never namespace: <namespace-for-class> ...
where:
<class-name>
The CIM class name (required)
<provider-name>
The CMPI provider name (required)
<location-name>
The name of the provider library (required)
type
The type of the provider (required). This can be any combination of:
instance
, association
,
method
or indication
.
<group-name>
Multiple providers can be grouped together and run under a single process to further minimize runtime resources. All providers registered under the same <group-name> will be executed under the same process. By default each provider will be run as a separate process.
unload
Specifies the unload policy for the provider. Currently the only
supported option is never
, which specifies that the
provider will not be monitored for idle times and will never be
unloaded. By default each provider will be unloaded when its idle
times exceed the value specified in the configuration file.
namespace
List of namespaces for which this provider can be executed. This is
required, although for most providers this will be
root/cimv2
.
Once all the class definitions and provider registration files are
stored in the staging area, you need to rebuild the SFCB class
repository with the command sfcbrepos
-f
.
You can add, change or remove classes this way. After rebuilding the
class repository, restart SFCB with command rcsfcb
restart
.
Alternatively, the SFCB package contains a utility that will copy provider class mof files and registration files to the correct locations in the staging area.
sfcbstage -r
[provider.reg] [class1.mof] [class2.mof] ...
After running this command you still need to rebuild the class repository and restart SFCB service.
The SFCB package includes two testing scripts: wbemcat and xmltest.
wbemcat sends raw CIM-XML data via HTTP protocol to the specified SFCB host (localhost by default) listening on port 5988. Then it displays the returned results. The following file contains the CIM-XML representation of a standard EnumerateClasses request:
<?xml version="1.0" encoding="utf-8"?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLEREQ> <IMETHODCALL NAME="EnumerateClasses"> <LOCALNAMESPACEPATH> <NAMESPACE NAME="root"/> <NAMESPACE NAME="cimv2"/> </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="ClassName"> <CLASSNAME NAME=""/> </IPARAMVALUE> <IPARAMVALUE NAME="DeepInheritance"> <VALUE>TRUE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"> <VALUE>FALSE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"> <VALUE>FALSE</VALUE> </IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"> <VALUE>TRUE</VALUE> </IPARAMVALUE> </IMETHODCALL> <?xml version="1.0" encoding="utf-8"?> 1743 <CIM CIMVERSION="2.0" DTDVERSION="2.0"> 1744 <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> 1745 <SIMPLEREQ> 1746 <IMETHODCALL NAME="EnumerateClasses"> 1747 <LOCALNAMESPACEPATH> 1748 <NAMESPACE NAME="root"/> 1749 <NAMESPACE NAME="cimv2"/> 1750 </LOCALNAMESPACEPATH> 1751 <IPARAMVALUE NAME="ClassName"> 1752 <CLASSNAME NAME=""/> 1753 </IPARAMVALUE> 1754 <IPARAMVALUE NAME="DeepInheritance"> 1755 <VALUE>TRUE</VALUE> 1756 </IPARAMVALUE> 1757 <IPARAMVALUE NAME="LocalOnly"> 1758 <VALUE>FALSE</VALUE> 1759 </IPARAMVALUE> 1760 <IPARAMVALUE NAME="IncludeQualifiers"> 1761 <VALUE>FALSE</VALUE> 1762 </IPARAMVALUE> 1763 <IPARAMVALUE NAME="IncludeClassOrigin"> 1764 <VALUE>TRUE</VALUE> 1765 </IPARAMVALUE> 1766 </IMETHODCALL> 1767 </SIMPLEREQ> 1768 </MESSAGE> 1769 </CIM></SIMPLEREQ> </MESSAGE> </CIM>
Sending this request to SFCB CIMOM returns a list of all supported
classes for which there is a registered provider. Suppose you save the
file as cim_xml_test.xml
.
tux@mercury:~> wbemcat cim_xml_test.xml | less HTTP/1.1 200 OK Content-Type: application/xml; charset="utf-8" Content-Length: 337565 Cache-Control: no-cache CIMOperation: MethodResponse <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="EnumerateClasses"> [..] <CLASS NAME="Linux_DHCPParamsForEntity" SUPERCLASS="CIM_Component"> <PROPERTY.REFERENCE NAME="GroupComponent" REFERENCECLASS="Linux_DHCPEntity"> </PROPERTY.REFERENCE> <PROPERTY.REFERENCE NAME="PartComponent" REFERENCECLASS="Linux_DHCPParams"> </PROPERTY.REFERENCE> </CLASS> </IRETURNVALUE> </IMETHODRESPONSE> </SIMPLERSP> </MESSAGE> </CIM>
The classes listed will vary depending on what providers are installed on your system.
The second script xmltest is also used to send a raw CIM-XML test file to the SFCB CIMOM. It then compares the returned results against a previously saved “OK” result file. If there does not yet exist a corresponding “OK” file, it will be created for later use:
tux@mercury:~> xmltest cim_xml_test.xml Running test cim_xml_test.xml ... OK Saving response as cim_xml_test.OK tux@mercury:~> xmltest cim_xml_test.xml Running test cim_xml_test.xml ... Passed
In addition to wbemcat and xmltest, the SBLIM project includes a more advanced command line CIM client wbemcli. The client is used to send CIM requests to SFCB server and display returned results. It is independent of CIMOM library and can be used with all WBEM compliant implementations.
Fro example, if you need to list all the classes implemented by SBLIM providers registered to your SFCB, send the “EnumerateClasses” (ec) request to SFCB:
tux@mercury:~> wbemcli -dx ec http://localhost/root/cimv2 To server: <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"><SIMPLEREQ><IMETHODCALL \ NAME="EnumerateClasses"><LOCALNAMESPACEPATH><NAMESPACE NAME="root"> \ </NAMESPACE><NAMESPACE NAME="cimv2"></NAMESPACE> \ </LOCALNAMESPACEPATH> <IPARAMVALUE NAME="DeepInheritance"><VALUE>TRUE</VALUE> \ </IPARAMVALUE> <IPARAMVALUE NAME="LocalOnly"><VALUE>FALSE</VALUE></IPARAMVALUE> <IPARAMVALUE NAME="IncludeQualifiers"><VALUE>FALSE</VALUE> \ </IPARAMVALUE> <IPARAMVALUE NAME="IncludeClassOrigin"><VALUE>TRUE</VALUE> \ </IPARAMVALUE> </IMETHODCALL></SIMPLEREQ> </MESSAGE></CIM> From server: Content-Type: application/xml; charset="utf-8" From server: Content-Length: 337565 From server: Cache-Control: no-cache From server: CIMOperation: MethodResponse From server: <?xml version="1.0" encoding="utf-8" ?> <CIM CIMVERSION="2.0" DTDVERSION="2.0"> <MESSAGE ID="4711" PROTOCOLVERSION="1.0"> <SIMPLERSP> <IMETHODRESPONSE NAME="EnumerateClasses"> <IRETURNVALUE> <CLASS NAME="CIM_ResourcePool" SUPERCLASS="CIM_LogicalElement"> <PROPERTY NAME="Generation" TYPE="uint64"> </PROPERTY> <PROPERTY NAME="ElementName" TYPE="string"> </PROPERTY> <PROPERTY NAME="Description" TYPE="string"> </PROPERTY> <PROPERTY NAME="Caption" TYPE="string"> </PROPERTY> <PROPERTY NAME="InstallDate" TYPE="datetime"> </PROPERTY> [..] <CLASS NAME="Linux_ReiserFileSystem" SUPERCLASS="CIM_UnixLocalFileSystem"> <PROPERTY NAME="FSReservedCapacity" TYPE="uint64"> </PROPERTY> <PROPERTY NAME="TotalInodes" TYPE="uint64"> </PROPERTY> <PROPERTY NAME="FreeInodes" TYPE="uint64"> </PROPERTY> <PROPERTY NAME="ResizeIncrement" TYPE="uint64"> <VALUE>0</VALUE> </PROPERTY> <PROPERTY NAME="IsFixedSize" TYPE="uint16"> <VALUE>0</VALUE> </PROPERTY> [..]
The -dx
option shows you the actual XML send to SFCB by
wbemcli as well as the actual XML received. In the
above example, the first of many returned classes was
CIM_ResourcePool
followed by
Linux_ReiserFileSystem
. Similar entries will appear
for all of the other registered classes.
If you omit the -dx
option, wbemcli
will display only a compact representation of the returned data:
tux@mercury:~> wbemcli ec http://localhost/root/cimv2 localhost:5988/root/cimv2:CIM_ResourcePool Generation=,ElementName=, \ Description=,Caption=,InstallDate=,Name=,OperationalStatus=, \ StatusDescriptions=,Status=,HealthState=,PrimaryStatus=, \ DetailedStatus=,OperatingStatus=,CommunicationStatus=,InstanceID=, \ PoolID=,Primordial=,Capacity=,Reserved=,ResourceType=, \ OtherResourceType=,ResourceSubType=, \AllocationUnits= localhost:5988/root/cimv2:Linux_ReiserFileSystem FSReservedCapacity=, \ TotalInodes=,FreeInodes=,ResizeIncrement=,IsFixedSize=,NumberOfFiles=, \ OtherPersistenceType=,PersistenceType=,FileSystemType=,ClusterSize=, \ MaxFileNameLength=,CodeSet=,CasePreserved=,CaseSensitive=, \ CompressionMethod=,EncryptionMethod=,ReadOnly=,AvailableSpace=, \ FileSystemSize=,BlockSize=,Root=,Name=,CreationClassName=,CSName=, \ CSCreationClassName=,Generation=,ElementName=,Description=,Caption=, \ InstanceID=,InstallDate=,OperationalStatus=,StatusDescriptions=, \ Status=,HealthState=,PrimaryStatus=,DetailedStatus=,OperatingStatus= \ ,CommunicationStatus=,EnabledState=,OtherEnabledState=,RequestedState= \ ,EnabledDefault=,TimeOfLastStateChange=,AvailableRequestedStates=, \ TransitioningToState=,PercentageSpaceUse= [..]
For more details about WBEM and SFCB, see the following sources:
Distributed Management Task Force Web site
Web-Based Enterprise Management (WBEM) Web site
Common Information Model (CIM) Web site
Standards Based Linux Instrumentation (SBLIM) Web site
Small Footprint CIM Broker (SFCB) Web site
SBLIM providers packages