OpenPegasus Packaging Definition for Selected Platforms

Table of Contents
Abstract
Definition of the Problem
Proposed Solution
OpenPegasus Directory Structure
OpenPegasus Packaged Files
Library Files
Library-level Versioning Strategy
OpenPegasus Libraries
OpenPegasus Provider Managers
OpenPegasus Provider Libraries
Executables Files
OpenPegasus Administrative Commands
OpenPegasus Administrative Scripts
OpenPegasus User Commands
Documentation Files
Unix Style Man Pages
Data Files
Static Data Files
Variable Data Files
OpenPegasus Configuration Files
PAM Configuration Files
OpenPegasus Build and Install Steps
Step 1: Create OpenPegasus Directory Structure
Step 2: Copy OpenPegasus Files
Step 3: Create OpenPegasus Host-Specific Files
Step 4: Create OpenPegasus Repository
Step 5: Update System Files

Abstract: This document defines the recommended set of files for inclusion in this release of OpenPegasus.  In this version of the document, platform-specific options have been documented for the following platforms: Linux, HP-UX and Open VMS.

Note 1: The recommendations defined in this document are not intended to document the feature set included in any vendor's OpenPegasus-based product.  Rather, the purpose of this document is to provide input to vendors when making product decisions.


The purpose of this document is to provide vendors with a recommended set of configuration files, libraries, programs and documentation files for inclusion in an OpenPegasus Release.  Please refer to PEP 204 for instructions on creating OpenPegasus Linux binary and source RPMS.

OpenPegasus Configure

Please consult the "Recommended OpenPegasus Build and Configuration Options for Selected Platforms" document, BuildAndReleaseOptions.html , in the pegasus/doc directory in CVS for the recommended environment and configuration settings for building OpenPegasus. 

OpenPegasus  Directory Structure

This section describes the recommended OpenPegasus runtime directory structure.  In addition, it describes the recommended directory permissions. 

There are three classes of OpenPegasus runtime directories:

  1. FIXED LOCATION. Directory locations that are used by the CIM Server and fixed at build time.  A rebuild is required to change a FIXED LOCATION directory.  The runtime directory structure MUST be consistent with the build time definition of FIXED LOCATION directories.  Refer to PEP 308 for recommended default values.
  2. CONFIGURABLE LOCATION. Directory locations that are used by the CIM Server and configurable using the cimconfig command.  All CONFIGURABLE LOCATION directories are assigned a default value for the directory location. The runtime directory structure WILL assume the default value. Refer to PEP 308 for recommended default values.
  3. INSTALLATION DEFINED LOCATION. Directory locations that are NOT used by the CIM Server but exist as part of the CIM Server runtime environment. A default location will be defined and used for the directory location.

     The following default installation directories will change if the PEGASUS_FLAVOR option is set. See PEP#350  for more details.

 

 

Although not included in this release, the following directories are planned for future release.
 

 

 OpenPegasus  Packaged Files

Library Files

Library-level Versioning Strategy

Support for forward-compatibility is a fundamental design principle for the OpenPegasus project. Our expectation is that well-behaved OpenPegasus Providers or Clients will continue to work with a minor version upgrade of OpenPegasus.  However, in the future, we do anticipate that there will be a need to release changes that do not support forward-compatibility.  This would happen in situations where the cost (i.e., development effort, performance, resource utilization) of supporting compatibility has become prohibitive. To minimize the impact of major version upgrades, OpenPegasus has been designed to allow multiple versions of a library to coexist in the same runtime environment. This way, new programs will be allowed to take advantage of the new features and old programs will continue to run.

To allow multiple versions of a library, OpenPegasus recommends the use of library-level versioning strategy.  With this strategy, a library file is created with a version suffix, $(VER_SUFFIX) (e.g., .1).  This version suffix is changed only when the new version of the library will not support CIM Providers and/or CIM Clients developed using early versions of the library (i.e., SDK).  It is important to note that the library version suffix is NOT the same as the product version. 

In addition to the library file, a symbolic link, that points to the latest version of the library, is created using the standard library suffix for the target operating system, $(LIB_SUFFIX) (e.g., .so).   CIM Client and Provider developers would use this link to ensure that they are  linking with the most recent version of the library.  When building a CIM Client or CIM Provider, developers should use include the appropriate link option (e.g., -h on Linux) to ensure that the specific version of the library used to build the product will be loaded during runtime.

The following table describes the OpenPegasus library versions and suffixes.

OpenPegasus  Libraries

This section documents the recommended set of library files to be included with this release of OpenPegasus. Files in this section are expected to be rooted in a single directory $(PEGASUS_DEST_LIB_DIR).

Source Location: $(PEGASUS_HOME)/lib

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_DEST_LIB_DIR) directory.

 

The following files should be included in the $(PEGASUS_DEST_LIB_DIR) directory.

In addition, the following links should be included in the $(PEGASUS_DEST_LIB_DIR) directory.
        
          libCIMxmlIndicationHandler.$(LIB_SUFFIX) -> libCIMxmlIndicationHandler.$(LIB_SUFFIX).$(VER_SUFFIX)
          libDefaultProviderManager.$(LIB_SUFFIX) -> libDefaultProviderManager.$(LIB_SUFFIX).$(VER_SUFFIX)
          libpegclient.$(LIB_SUFFIX) -> libpegclient.$(LIB_SUFFIX).$(VER_SUFFIX)
          libpegcommon.$(LIB_SUFFIX) -> libpegcommon.$(LIB_SUFFIX).$(VER_SUFFIX)
          libpegprovider.$(LIB_SUFFIX) -> libpegprovider.$(LIB_SUFFIX).$(VER_SUFFIX)
          libsnmpIndicationHandler.$(LIB_SUFFIX) -> libsnmpIndicationHandler.$(LIB_SUFFIX).$(VER_SUFFIX)

 

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus libraries and links.

OpenPegasus Provider Managers

This section documents the dynamically loaded provider managers packaged with OpenPegasus.  Files in this section are expected to be rooted in a single directory $(PEGASUS_PROVIDER_MANAGER_LIB_DIR).

Source Location: $(PEGASUS_HOME)/lib

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_PROVIDER_MANAGER_LIB_DIR) directory.

 

The following files should be included in the $(PEGASUS_PROVIDER_MANAGER_LIB_DIR) directory.

In addition, the following links should be included in the $(PEGASUS_DEST_LIB_DIR) directory.
       
          libCMPIProviderManager.$(LIB_SUFFIX) -> libCMPIProviderManager.$(LIB_SUFFIX).$(VER_SUFFIX)

OpenPegasus Provider Libraries

This section documents the Providers packaged with OpenPegasus. Files in this section are expected to be rooted in a single directory $(PEGASUS_PROVIDER_LIB_DIR).  Note that the $(PEGASUS_PROVIDER_LIB_DIR) directory MUST be included as one of the values of the providerDir configuration parameter.   Note that this directory may contain symbolic links to the actual files, there is no requirement for the actual library file to be placed in this directory.

Packaged Providers

Operating System Provider
Computer System Provider
Process Provider
IP Provider
Additionally on HP-UX, following are the packaged Providers
DNS Provider
NTP Provider
NIS Provider
 
The following table describes the permissions that should be assigned to the links or files in the $(PEGASUS_PROVIDER_LIB_DIR) directory.

 

The following files should be included in the $(PEGASUS_PROVIDER_LIB_DIR) directory.

 
libComputerSystemProvider.$(LIB_SUFFIX).$(VER_SUFFIX)
libOSProvider.$(LIB_SUFFIX).$(VER_SUFFIX)
libProcessProvider.$(LIB_SUFFIX).(VER_SUFFIX)


 

Provider Library Versioning

The CIM Server will use the $(LIB_SUFFIX) when attempting to dynamically load a Provider.  This allows Provider developers to use a resource-specific  library versioning strategy. Providers are not required to use this same version suffix as the OpenPegasus libraries.

The following links should be included in the $(PEGASUS_PROVIDER_LIB_DIR) directory.

The following table describes the recommended install, upgrade and remove behavior for the packaged Provider libraries and links.

Executable Files

The following table describes the OpenPegasus executable suffixes.

OpenPegasus Administrative Commands

This section documents the maintenance or administrative commands included with this release of OpenPegasus. Files in this section are expected to be rooted in a single directory $(PEGASUS_SBIN_DIR).

Source Location: $(PEGASUS_HOME)/sbin

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_SBIN_DIR) directory.

 

The following files should be included in the $(PEGASUS_SBIN_DIR) directory.

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus commands.

OpenPegasus Administrative Scripts

This section documents the scripts included with this release of OpenPegasus. Files in this section are expected to be rooted in a single directory $(PEGASUS_SCRIPTS_DIR).

Source Location: pegasus/rpm/tog-specfiles

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_SCRIPTS_DIR) directory.

 

The following files should be included in the $(PEGASUS_SCRIPTS_DIR) directory.

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus commands.

OpenPegasus User Commands

This section documents the user commands included with this release of OpenPegasus. Files in this section are expected to be rooted in a single directory $(PEGASUS_BIN_DIR).

Source Location: $(PEGASUS_HOME)/bin

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_BIN_DIR) directory.

 

The following files should be included in the $(PEGASUS_BIN_DIR) directory.

 

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus commands.


Documentation Files

Unix Style Man Pages

This section describes the packaging for Operating Systems that support Unix style man pages. Files in this section are expected to be rooted in a single directory $(PEGASUS_MAN_DIR).

Source Location: $(ROOT)/rpm/manLinux/man1.Z/
                             $(ROOT)/rpm/manLinux/man8.Z

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_MAN_DIR) subdirectories.

 

The following man pages should be included in the $(PEGASUS_MAN_DIR)/man1 directory.

 

The following man pages should be included in the $(PEGASUS_MAN_DIR)/man8 directory.

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus man pages.

User Documentation

Files in this section are expected to be rooted in a single directory $(PEGASUS_DOC_DIR).

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_DOC_DIR) directory.



The following documents are included with OpenPegasus.

Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_DOC_DIR)

Target Location: $(PEGASUS_DOC_DIR)


The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus documentation files.


Data Files

This section describes the OpenPegasus data files.

There are three classes of OpenPegasus data files:

  1. FIXED LOCATION. Absolute names that are used by the CIM Server and fixed at build time.  A rebuild is required to change the file name.  The runtime file structure MUST be consistent with the build time definition of the FIXED LOCATION files. Refer to PEP 308 for recommended default values.
  2. CONFIGURABLE LOCATION. Absolute file names that are used by the CIM Server and configurable using the cimconfig command.  All CONFIGURABLE LOCATION files are assigned a default value for the absolute file name. The runtime file structure WILL assume the default value. Refer to PEP 308 for recommended default values.
  3. INSTALLATION DEFINED LOCATION. Files that are NOT used by the CIM Server but exist as part of the CIM Server runtime environment. Default absolute file names will be defined for these directories.

 

Static Data Files

This section describes OpenPegasus data files that do not change during normal operation.

Schema Files

The following table describes the permissions that should be assigned to the $(PEGASUS_MOF_DIR) directory.

Document Designation
Configuration Option
Operating System Location Directory
Owner
Group
Permissions
$(PEGASUS_MOF_DIR)
 
Linux /usr/share/Pegasus/mof root/pegasus drwxr-xr-x
HP-UX /opt/wbem/mof bin/bin dr-xr-xr-x
OpenVMS /opt/wbem/mof system S:wred,O:re,G:re,W:e

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_MOF_DIR) subdirectories.

 
Operating System Packaged or Generated? File
Owner/Group Permissions
Linux Packaged root/pegasus -rw-r--r--
HP-UX Packaged bin/bin -r--r--r--
OpenVMS Packaged system S:wred,O:r,G:r,W:r

 

The following OpenPegasus specific mof files are packaged in the directory $(PEGASUS_MOF_DIR)/Pegasus.  Note: The class definitions defined in the pegasus/Schemas/Pegasus/Internal/VER20 mof files are for internal use only and subject to change.  Please consult the OpenPegasus External Interface Definition document, ExternalInterface.html, in the pegasus/doc directory in CVS for a list of the mof files included in the OpenPegasus external definition.

Source Location: pegasus/Schemas/Pegasus/Internal/VER20
    PG_Authorization20.mof
    PG_ConfigSetting20.mof
    PG_InternalSchema20.mof
    PG_ShutdownService20.mof

    PG_SSLCertificate20.mof
    PG_SSLCertificateRevocationList20.mof
    PG_User20.mof

Source Location: pegasus/Schemas/Pegasus/InterOp/VER20
    PG_Events20.mof
    PG_InterOpSchema20.mof
    PG_ProviderModule20.mof


Source Location: pegasus/Schemas/Pegasus/ManagedSystem/VER20

    PG_ComputerSystem20.mof
    PG_ComputerSystem20R.mof
    PG_ManagedSystemSchema20.mof
    PG_ManagedSystemSchema20R.mof
    PG_OperatingSystem20.mof
    PG_OperatingSystem20R.mof
    PG_UnixProcess20.mof
    PG_UnixProcess20R.mof



The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus mof files.


Variable Data Files

This section describes OpenPegasus data files that change during normal operation. Files in this section are expected to be rooted in a single directory $(PEGASUS_VARDATA_DIR).

The following table describes the permissions that should be assigned to the files in the $(PEGASUS_VARDATA_DIR) directory.

Document Designation
Configuration Option
Packaged or Generated? Operating System Location Directory
Owner
Group
Permissions
$(PEGASUS_CIMSERVER_START_LOCK_FILE) Generated Linux /var/run/tog-pegasus/
cimserver_start.lock
root/root

 cimsvr cimsvr (PS)

-rw-------
HP-UX


OpenVMS


$(PEGASUS_CURRENT
_CONFIG_FILE)
Generated Linux $(PEGASUS_VARDATA_DIR)/
cimserver_current.conf
root/root -rw-r--r--
HP-UX /var/opt/wbem/pegasus/
cimserver_current.conf
root/root rw-r--r--
OpenVMS /var/opt/wbem/pegasus/
cimserver_current.conf
system S:wred,O:wr,G:r,W:r
$(PEGASUS_PLANNED
_CONFIG_FILE)
 
Packaged Linux $(PEGASUS_VARDATA_DIR)/

cimserver_planned.conf

root/root -rw-r--r--
HP-UX /var/opt/wbem/

cimserver_planned.conf

root/root rw-r--r--
OpenVMS /var/opt/wbem/

cimserver_planned.conf

system S:wred,O:wr,G:r,W:r
$(PEGASUS_PID_FILE) Generated Linux /var/run/tog-pegasus/cimserver.pid root/root

cimsvr/cimsvr (PS)

-rw-------
HP-UX /etc/opt/wbem/
cimserver_start.conf
root/root rw-r--r--
OpenVMS /var/opt/wbem/
cimserver_start.conf
system S:wred,O:wr,G:r,W:r
$(PEGASUS_LOCAL_AUTH_DIR) Generated Linux /$(PEGASUS_VARDATA_DIR)/cache/localauth root/pegasus drwxr-xr-x
HP-UX /var/opt/wbem/localauth bin/bin dr-xr-xr-x
OpenVMS /var/opt/wbem/localauth system S:wred,O:re,G:re,W:e
$(PEGASUS_LOCAL_DOMAIN
_SOCKET_DIR)
Generated Linux /var/run/tog-pegasus/socket root/pegasus

cimsvr/cimsvr (PS)

drwxr-xr-t
HP-UX /var/opt/wbem/socket/ bin/bin dr-xr-xr-t
       
$(PEGASUS_CIMSERVER
_RANDOMFILE)

Note: This file is only required on platforms that do not support /dev/(u)random.
Generated Linux N/A N/A N/A
HP-UX      
OpenVMS /var/opt/wbem/ssl.rnd system S:wred,O:r,G:r,W:
$(PEGASUS_TRACE_DIR) Generated Linux $(PEGASUS_VARDATA_DIR)/cache/trace root/pegasus drwxrwxrwt
  HP-UX /var/opt/wbem/trace
cimsrvr/cimsrvr
drwxrwxrwt
  OpenVMS    
$(PEGASUS_CORE_DIR) Generated Linux $(PEGASUS_VARDATA_DIR)/cache/trace root/pegasus drwxrwxrwt
  HP-UX


  OpenVMS    

 

$(PEGASUS_PLANNED_CONFIG_FILE)

The $(PEGASUS_PLANNED_CONFIG_FILE) file is not intended to be user editable. The cimconfig utility should be used to modify this file.  Default settings for configuration options are defined in the source and can vary by vendor, Operating System and release.   In order to differentiate between "customer-defined" values and "default-settings", default-settings are not stored in this file.  With the exception of the following comment, initial version of the $(PEGASUS_PLANNED_CONFIG_FILE) file is empty.

The following table describes the upgrade strategy for the PEGASUS_PLANNED_CONFIG_FILE.


The following generated data files and directories are removed on upgrade and erase: $(PEGASUS_PLANNED_CONFIG_FILE), $(PEGASUS_PID_FILE), $(PEGASUS_LOCAL_AUTH_DIR), $(PEGASUS_LOCAL_DOMAIN_SOCKET_DIR) and $(PEGASUS_TRACE_DIR).
OpenPegasus Configuration Files

This section describes OpenPegasus configuration files. Files in this section are expected to be rooted in a single directory $(PEGASUS_CONFIG_DIR).


The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus ssl.cnf file.

OpenSSL PEM Files

This section describes the OpenSSL PEM files. Files in this section are expected to be rooted in a single directory $(PEGASUS_PEM_DIR).

File Name

see PEP 308

Packaged or Generated? File Name Operating System File
Owner/Group Permissions
sslKeyFilePath
$(PEGASUS_SSL_KEY_FILE)

Generated

file.pem Linux root/root -r--------
  HP-UX bin/bin -r--------
  OpenVMS system S:wred,O:r,G:,W
sslTrustStore
$(PEGASUS_SSL_TRUSTSTORE)
Empty File client.pem Linux root/root -r--r--r--
  HP-UX root/sys -r--------
  OpenVMS system S:wred,O:r,G:,W:
sslCertificateFilePath

$(PEGASUS_SSL_CERT_FILE)

Generated

server.pem Linux root/root -r--r--r--
  HP-UX root/sys -r--------
  OpenVMS system S:wred,O:r,G:,W:

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus *.pem files.

PAM Configuration Files

This section describes OpenPegasus configuration files.


The following table describes the upgrade strategy for the PAM configuration files.

Repository Data Files

This section describes the installation of the Repository Data Files. Files in this section are expected to be rooted in a single directory $(PEGASUS_REPOSITORY_DIR).

The following table describes the recommended install, upgrade and remove behavior for the OpenPegasus Repository data files.

OpenPegasus  Build & Installs Steps

For supported Operating Systems, pegasus/Makefile.Release can be used to perform the steps necessary to build and place the necessary OpenPegasus release files in a staging directory, PEGASUS_STAGING_DIR. 

For successful operation, Makefile.Release is dependent on the existence of an operating system dependent file  that defines the setting of key environment variables.  Two sample files have been placed in the pegasus directory: env_var_HPUX.status and env_var_Linux.status.

Use of this utility has been tested on the following platforms.

References

Note: Starting with the OpenPegasus 2.9.0 release, the OpenPegasus Build and Configuration Options document is available in OpenPegasus CVS Repository, pegasus/doc/BuildAndReleaseOptions.html.

  1. PEP#174 - Recommended OpenPegasus 2.4 Build and Configuration Options
  2. PEP#200 - Recommended OpenPegasus 2.5 Build and Configuration Options
  3. PEP#237 - Recommended OpenPegasus 2.5.1 Build and Configuration Options
  4. PEP#277 - Recommended OpenPegasus 2.6.0 Build and Configuration Options for Selected Platforms
  5. PEP#292 - Recommended OpenPegasus 2.7.0 Build and Configuration Options for Selected Platforms
  6. PEP#308 - Recommended OpenPegasus 2.8.0 Build and Configuration Options for Selected Platforms

Rationale

Schedule

Discussion


Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
EMC Corporation; Symantec Corporation; The Open Group.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
"AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Template last modified: March 26th 2006 by Martin Kirk
Template version: 1.11