Pegasus Enhancement Proposal (PEP)

PEP #: 292

Title: Recommended OpenPegasus 2.7.0 Build and Configuration Options for Selected Platforms

Version: 1.4

Created: 04 February 2007

Authors: Denise Eckstein

Status:  Approved


Abstract: This PEP defines a set of recommended options for building, testing and running OpenPegasus 2.7.0 on a selected set of platforms. In this version of the PEP, platform-specific configuration information have been documented for the platforms described in the "Documented Platforms" section of this PEP.

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.


Definition of the Problem

OpenPegasus supports a large number of build and runtime options. Determining which options to use can be challenging. The purpose of this PEP is to simplify the build, testing and administration of OpenPegasus 2.7.0 by providing a recommended, tested set of options.

 

Documented Platforms

Support for the OpenPegasus build and runtime options described in this document varies by platform.   In this version of the PEP, platform-specific configuration information has been included for the platforms described in the following table.  For all other platforms, please consult the OpenPegasus Platform Advocate for additional information.

Proposed Solution

Security Considerations

  1. To avoid introducing security vulnerabilities, vendors must never ship providers incompatible with the security assumptions used in their deployment. For example, providers designed for a single-user deployment that don't perform authorization must not be shipped with a CIM Server that expects the providers to perform authorization. Note that this authorization burden is considerably lighter if the provider is registered as 'run as requestor' and if the CIM Server enables that feature. See PEP#223 - Security Coding Guidelines for additional details.
  2. Vendors should ensure they configure the CIM Server consistently with the security requirements of their deployment.

Terminology Notes

  1. In this document, the term "Not Set" is used to indicate that the a value for the environment variable has not been defined.  "Set" is used to indicate that the value must be defined, but the actual value of the variable is not checked.

General Notes

  1. Not all functionality described in this document has achieved "Green" status, please refer to the OpenPegasus Project Feature Status page for information on the maturity level of OpenPegasus features.
  2. To encourage testing of new functionality, recommendations for the Development Build may include features that are not yet recommended for Release Builds.

Environment Variable Settings for Building OpenPegasus 2.7.0

Definitions

ICU_INSTALL
ICU_NO_UPPERCASE_ROOT
ICU_ROOT
ICU_ROOT_BUNDLE_LANG
OPENSSL_BIN
OPENSSL_HOME
PEGASUS_CCOVER
PEGASUS_CIM_SCHEMA
PEGASUS_CLASS_CACHE_SIZE
PEGASUS_DEBUG
PEGASUS_DEFAULT_USERCTXT_REQUESTOR
PEGASUS_DEFAULT_ENABLE_OOP
PEGASUS_DEST_LIB_DIR
PEGASUS_DISABLE_CQL
PEGASUS_DISABLE_DEPRECATED_INTERFACES
PEGASUS_DISABLE_INSTANCE_QUALIFIERS
PEGASUS_DISABLE_LOCAL_DOMAIN_SOCKET
PEGASUS_DISABLE_PERFINST
PEGASUS_DISABLE_PRIVILEGED_TESTS
PEGASUS_DISABLE_PROV_USERCTXT
PEGASUS_EMANATE_INCLUDE_DIR
PEGASUS_EMANATE_LIB_DIR
PEGASUS_EMBEDDED_INSTANCE_SUPPORT
PEGASUS_ENABLE_AUDIT_LOGGER
PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER
PEGASUS_ENABLE_COMPRESSED_REPOSITORY
PEGASUS_ENABLE_EXECQUERY
PEGASUS_ENABLE_EMAIL_HANDLER
PEGASUS_ENABLE_IPV6
PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER
PEGASUS_ENABLE_OBJECT_NORMALIZATION
PEGASUS_ENABLE_PRIVILEGE_SEPARATION
PEGASUS_ENABLE_REMOTE_CMPI
PEGASUS_ENABLE_SLP
PEGASUS_ENABLE_SORTED_DIFF
PEGASUS_ENABLE_SYSTEM_LOG_HANDER
PEGASUS_ENABLE_SSLV2
PEGASUS_ENABLE_USERGROUP_AUTHORIZATION
PEGASUS_EXTRA_C_FLAGS
PEGASUS_EXTRA_CXX_FLAGS
PEGASUS_EXTRA_LIBRARY_LINK_FLAGS
PEGASUS_EXTRA_LINK_FLAGS
PEGASUS_EXTRA_PROGRAM_LINK_FLAGS
PEGASUS_HAS_MESSAGES
PEGASUS_HAS_SSL
PEGASUS_HOME
PEGASUS_INDICATIONS_Q_THRESHOLD
PEGASUS_MAX_THREADS_PER_SVC_QUEUE
PEGASUS_ROOT
PEGASUS_NET_SNMP_INCLUDE_DIR
PEGASUS_NET_SNMP_LIB_DIR
PEGASUS_NOASSERTS
PEGASUS_OPENSLP_HOME
PEGASUS_PAM_AUTHENTICATION
PEGASUS_PLATFORM
PEGASUS_REPOSITORY_MODE
PEGASUS_SLP_REG_TIMEOUT
PEGASUS_SNIA_EXTENSIONS
PEGASUS_TEST_ISGROUP_GROUP/PEGASUS_TEST_ISGROUP_USER_SUCCESS/PEGASUS_TEST_ISGROUP_USER_FAILURE
PEGASUS_TEST_IPV6
PEGASUS_TEST_SDK
PEGASUS_TEST_USER_DEFINED
PEGASUS_TEST_USER_ID/PEGASUS_TEST_USER_PASS
PEGASUS_TMP
PEGASUS_USE_DEBUG_BUILD_OPTIONS
PEGASUS_USE_EMANATE
PEGASUS_USE_NET_SNMP
PEGASUS_USE_OPENSLP
PEGASUS_USE_PAM_STANDALONE_PROC
PEGASUS_USE_RELEASE_CONFIG_OPTIONS
PEGASUS_USE_RELEASE_DIRS
PEGASUS_USE_SYSLOGS
PEGASUS_WINDOWS_SDK_HOME

Examples Building a Linux IA32 (#IA64) Development/Debug Version

Building a Linux IA32 (#IA64) Production Release Version

Environment Variable Settings for Running OpenPegasus 2.7.0

Definitions

PEGASUS_HOME
PEGASUS_MSG_HOME

Configuration Properties

Notation

This section describes the notation used to define the configuration properties.

Definitions

authorizedUserGroups
daemon
enableAssociationTraversal
enableAuditLog
enableAuthentication
enableBinaryRepository
enableHttpConnection
enableHttpsConnection
enableIndicationService
enableNamespaceAuthorization
enableNormalization
enableRemotePrivilegedUserAccess
enableSSLExportClientVerification
enableSubscriptionsForNonprivilegedUsers
excludeModulesFromNormalization
exportSSLTrustStore
forceProviderProcesses
home
httpPort
httpsPort
logdir
logLevel
maxProviderProcesses
messageDir
providerDir
repositoryDir
repositoryIsDefaultInstanceProvider
    Description: If true, the Repository functions as the Instance Provider for all classes for which there is not an explicitly registered Provider. This flag is also used to control the behavior of the repository when processing association operators.
    Recommended Default Value (Development Build):  true
    Recommended Default Value (Release Build):  false
    Recommend To Be Fixed/Hidden (Development Build):  No/No
    Recommend To Be Fixed/Hidden (Release Build):  No/Yes
    Dynamic?:  No
    Considerations:  This flag can be used to configure the CIM Server to allow the Repository to be used by CIM Clients and CIM Providers as a dynamic data store. The setting of this flag will significantly affect CIM Server behavior as viewed by the CIM Client.
    The following issues should be considered when setting repositoryIsDefaultInstanceProvider=true:
    The following issues should be considered when setting repositoryIsDefaultInstanceProvider=false: Source Configuration File:  Pegasus/Config/RepositoryPropertyOwner.cpp
shutdownTimeout
slp
socketWriteTimeout
sslCertificateFilePath
sslClientVerificationMode
sslKeyFilePath
sslTrustStore
sslTrustStoreUserName
traceComponents
traceFilePath
traceLevel

Configuration Constants

Definitions

static char CURRENT_CONFIG_FILE [] =
static char PLANNED_CONFIG_FILE [] =
static char CIMSERVER_START_FILE [] =

Configuration Macros

Definitions

PEGASUS_SSLCLIENT_CERTIFICATEFILE
PEGASUS_SSLCLIENT_RANDOMFILE
PEGASUS_SSLSERVER_RANDOMFILE
PEGASUS_LOCAL_AUTH_DIR
PEGASUS_LOCAL_DOMAIN_SOCKET_PATH

Version History

Version Date Author Change Description
1.0 04 Feb 2007 Denise Eckstein Initial Submission based on PEP 277.
1.1 25 Aug 2007 Denise Eckstein
  • The following four flags were removed with Bug 6263:
    • PEGASUS_DISABLE_PROV_USERCTXT_REQUESTOR
    • PEGASUS_DISABLE_PROV_USERCTXT_DESIGNATED
    • PEGASUS_DISABLE_PROV_USERCTXT_PRIVILEGED
    • PEGASUS_DISABLE_PROV_USERCTXT_CIMSERVER
  • Fixed incorrect reference to the file pegasus/readme.compressed_repository.
  • Added variable PEGASUS_ENABLE_PRIVILEGE_SEPARATION (PEP286).
  • Added variable PEGASUS_TEST_SDK (Bug 5613).
  • Updated Consideration Section for variables PEGASUS_NET_SNMP_INCLUDE_DIR, PEGASUS_NET_SNMP_LIB_DIR, PEGASUS_EMANATE_INCLUDE_DIR, and PEGASUS_EMANATE_LIB_DIR to reflect  change described in Bug 6730. Fixed typo in PEGASUS_NET_SNMP_LIB_DIR name.
  • Updated Consideration Section for variables OPENSSL_BIN and OPENSSL_HOME to reflect change described in Bug 6569.  Removed references to OPENSSL_HOME in examples.
  • Added "Documented Platforms" section and updated Abstract to refer to this section.
  • Added variables PEGASUS_ENABLE_IPV6 and PEGASUS_TEST_IPV6  (PEP 291).
  • Removed PEGASUS_ENABLE_USERGROUP_AUTHORIZATION variable from "Development/Debug" example.
  • Changed the "Recommended Default Value (Release Build):" for the configuration option sslClientVerificationMode from "optional" to "disabled". This reflects the current setting for Linux, HP-UX, Linux and zOS.
  • Temporarily added "To Be Done" section.
  • 1.2 12 Sep 2007 Denise Eckstein
  • Updated PEGASUS_CIM_SCHEMA version from CIM29 to CIM2131.
  • Removed sentence "More specifically this feature is not included as part of the OpenPegasus build." from description of PEGASUS_CLASS_CACHE_SIZE.
  • Added variable PEGASUS_ENABLE_AUDIT_LOGGER
  • Added the following to PEGASUS_DISABLE_CQL: "Considerations: The DMTF CIM Query Language Specification is Preliminary and subject to backward incompatible changes."
  • Added variables PEGASUS_EXTRA_LIBRARY_LINK_FLAGS and PEGASUS_EXTRA_PROGRAM_LINK_FLAGS.  Updated PEGASUS_EXTRA_LINK_FLAGS to reference the PEGASUS_EXTRA_LIBRARY_LINK_FLAGS and PEGASUS_EXTRA_PROGRAM_LINK_FLAGS variables.
  • Added variable PEGASUS_TMP.
  • Removed "export PEGASUS_DISABLE_DEPRECATED_INTERFACES=true" from Production Release example.
  • Added description for enableAuditLog.
  • Added the following to logdir: Considerations: This option is not supported if PEGASUS_USE_SYSLOGS is defined.
  • 1.3 29 Sep 2007 Denise Eckstein
  • Added description for ICU_ROOT_BUNDLE_LANG and ICU_NO_UPPERCASE_ROOT.
  • Changed Default and Recommended Values for PEGASUS_DEFAULT_USERCTXT_REQUESTOR from "Not Set" to "False".
  • Added OpenVMS to the list of platform that don't support the "LOCAL_DOMAIN_SOCKET" functionality.
  • Added "General Notes" section.
  • Changed Default and Recommended Values for PEGASUS_DISABLE_PROV_USERCTXT from "Not Set" to "Set for Windows and OpenVMS, Not Set for all other platforms"
  • Changed Default and RecommendedValues for PEGASUS_ENABLE_AUDIT_LOGGER from "Not Set" to "true".
  • Changed Default value for PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER from "Not Set" to "true for Linux and OpenVMS, false for other platforms".
  • Change the Default and Recommended Values for PEGASUS_ENABLE_IPV6 from "true" to "false for Windows, true for all other platforms"
  • Change the Default and Recommended Values for PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER from "Not Set" to "false".  Update the description.
  • Change the Default Value for PEGASUS_ENABLE_PRIVILEGE_SEPARATION from "Not Set" to "false".  Updated the description.
  • Added "or not set" to the Description of PEGASUS_ENABLE_SLP.
  • Changed the Recommended Values for PEGASUS_TEST_IPV6 from "Not Set" to "Set to the value of PEGASUS_ENABLE_IPV6" and "Not Used".  Updated the Description.
  • Changed the Recommended Value (Release Build) for PEGASUS_TEST_SDK and PEGASUS_TEST_USER_DEFINED from "Not Set" to "Not Used".
  • Changed the Recommended Value (Release Build) for PEGASUS_DISABLE_PRIVILEGED_TESTS from "N/A" to "Not Used"
  • Corrected the description of PEGASUS_TEST_USER_DEFINED to reference PEGASUS_TEST_USER_ID/PEGASUS_TEST_USER_PASS rather than "pegtest".  Added sentence that "invalidUser" is assumed to be a invalid user name.
  • Changed the Recommended Value (Release Build) for PEGASUS_USE_NET_SNMP from "Not Set" to "true for Linux, false for all other platforms"
  • Changed the RecommendedValues for PEGASUS_USE_OPENSLP from "Set" to "Not Set".  Added Consideration section.
  • Changed the Recommended Values for PEGASUS_WINDOWS_SDK_HOME from "Not Set" to "No Specific Recommendation".  Fixed typo in Description. Change the value of "Required" from "No" to "Yes, if building on Windows with a compiler version < 1300."
  • 1.4 05 Oct 2007 Denise Eckstein
  • Added description for PEGASUS_DEST_LIB_DIR.
  • Changed Default and Recommended Values for PEGASUS_ENABLE_IPV6 to "true".
  • Fixed typos in enableAssociationTraversal description.
  • Added description for socketWriteTimeout.
  • Approved - Architecture Team Ballot 140

  • Copyright (c) 2004 EMC Corporation; Hewlett-Packard Development Company, L.P.; IBM Corp.; The Open Group; VERITAS Software Corporation
    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: January 20th 2004 by Martin Kirk
    Template version: 1.6