Pegasus Enhancement Proposal (PEP)

PEP #: 341

Title: OpenPegasus 2.9.0 Packaging Definition for Selected Platforms

Version: 1.1

Created: 10 December 2008

Authors: Denise Eckstein

Status: Approved

Version History:

Version Date Author Change Description
1.0 10 Dec 2008 Denise Eckstein
  • Initial Submission - based on  PEP#331 - OpenPegasus 2.8.0 Runtime Packaging Definition
  • Where possible, removed references to version number.
  • Added definition for PEGASUS_CORE_DIR.
  • libCMPIProviderManager.$(LIB_SUFFIX) and libCMPIProviderManager.$(LIB_SUFFIX).$(VER_SUFFIX) have moved from $(PEGASUS_DEST_LIB_DIR) to $(PEGASUS_PROVIDER_MANAGER_LIB_DIR)
  • On Linux, the permissions for the OpenPegasus administrative commands in /usr/sbin are set to 755.  Fixed table in "OpenPegasus Administrative Commands" section.
  • Added the following note to the "References" section: "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."
  • On Linux, the permissions on files in $(PEGASUS_DOC_DIR) are -r--r--r--.  Fixed table in  "User Documentation" section.  Added OpenPegasusNOTICE.txt row to table in "User Documentation" section.
  • 1.1 17 Dec 2008 Denise Eckstein
  • Fixed a couple of typos.
  • Approved - Architecture Team Ballot 161
  •  


    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 PEP defines the recommended set of files for inclusion in this release of OpenPegasus.  In this version of the PEP, platform-specific options have been documented for the following platforms: TBD.

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


    This PEP defines the recommended set of files for inclusion in this release of OpenPegasus.

    Definition of the Problem

    The purpose of this PEP 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.

     

    Proposed Solution

    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.

     

     

     

    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
     
    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
      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