Pegasus Enhancement Proposal (PEP)

PEP #: 210

Title: OpenPegasus 2.5 SDK (Software Developer Kit) Packaging Definition

Version: 1.4

Created: 29 October 2004

Authors: Denise Eckstein

Status:  Approved (Ballot 99)

Version History:

Version Date Author Change Description
1.0 29 Oct 2004 Denise Eckstein Initial Submission based on PEP 181.
1.1 11 June 2005 Denise

Eckstein

  • Updated title to include "Software Developer Kit"
  • Removed External Interfaces Changes from this PEP.  Please refer to PEP 209 for the OpenPegasus 2.5 External Interface Definition.
  • Added "ClientOpPerformanceDataHandler.h" to include/Pegasus/Client.
  • Added "CIMOperationType.h" to include/Pegasus/Common
  • Added section 2.4.1 CMPI C Provider Include Files.  Added include files  cmpi_cql.h cmpidt.h cmpift.h cmpimacs.h cmpios.h cmpipl.h to include/Pegasus/Provider/CMPI.
  • Added section 3.1.2 describing CMPI C documentation source files.
  • Fixed various typos identified in review comments on 1.0 version of this document.
  • Removed Futures section.
  • Added Section 4.3.2.5 - C++ Association Provider Sample.
  • Added Section 4.3.3.1 - CMPI C Files and Directories Provider Sample.
  • Added Section 4.2.1.4 - C++ Association Client Sample Section.
  • 1.2 23 June 2005 Denise

    Eckstein

  • Updated per 1.1 revision review comments. All changes were editorial.
  • 1.3 14 July 2005 Denise

    Eckstein

  • Added a Note to section 3.1 "DOC++ Generated Files" stated that the actual list of packaged files is not included in this document.
  • Added Section 3.2 "Developer Documentation".
  • Removed test files from Section 4.3.4.1 Files and Directories Provider (See Bugzilla 3790 for details).
  • 1.4 17
    July
    2005
    Denise

    Eckstein

  • Fixed source location for Makefile to build  Files and Directories Provider.
  • Modified the format of section 3.2 (Developer Documentation) to be more consistent with the other sections.
  • Version Approved (Ballot 99)
  •  


    Abstract: This PEP defines the recommended set of files for inclusion in the OpenPegasus 2.5 SDK.

    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.

    Note 2:  This PEP DOES NOT define the OpenPegasus 2.5 External Interface.  For example, there are include files packaged in the OpenPegasus SDK which include experimental interfaces that are NOT part of the External Interface Definition and subject to change in the next release. Refer to PEP 209 for the OpenPegasus 2.5 External Interface Definition.  


    Definition of the Problem

    The purpose of this PEP is to provide vendors with a recommended set of include files, sample programs and documentation files for inclusion in an OpenPegasus SDK.

    Proposed Solution

    1. Style Guidelines for SDK Files

    2. SDK Include Files

    This section documents the recommended set of include files to be included in the OpenPegasus 2.5 SDK. Files in this section are expected to be rooted in a single directory $(PEGASUS_INCLUDE_DIR.)

    2.1 Client Include Files

    Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Client

    Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Client

    Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Client

    2.2 Common Include Files

    Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Common

    Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Common

    Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Common

    2.3 Consumer Include Files

    Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Consumer

    Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Consumer

    Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Consumer

    2.4 Provider Include Files

    2.4.1 C++ Provider Include Files

    These include files are used to build OpenPegasus 2.5 C++ Providers.

    Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Provider

    Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Provider

    Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Provider

    2.4.2 CMPI C Provider Include Files

    These include files are used to build OpenPegasus 2.5 CMPI C Providers.

    Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Provider/CMPI

    Staging Location: 
            
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Provider/CMPI

    Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Provider/CMPI

    3. Documentation Files

    This section documents the recommended set of documentation files to be included in the OpenPegasus 2.5 SDK.

    3.1 DOC++ Generated Files

    The following files are used by DOC++ to generate documentation that describes the C++ Client, Common, Consumer and Provider Interfaces.  The DOC++ files are rooted in a single directory.

    Note: Because of the number and dynamic nature of the doc++ generated files, the actual list of files packaged in the SDK is not included in this PEP.

    The list of files required to build the API documentation include:

    3.1.1 C++ DOC++

    Source Location: $(PEGASUS_ROOT)/pegasus/doc/SDK

    Generated HTML Staging Location: 
      
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_HTML_DIR)

    Generated HTML Target Location: 
      
    $(PEGASUS_HTML_DIR)

    Makefile
    PageFooter.html
    PageHeader.html
    doc++.conf
    index.html

    Source Location: $(PEGASUS_ROOT)/pegasus/doc/SDK/DefaultC++

    Generated HTML Staging Location: 
      
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_HTML_DIR)/DefaultC++

    Generated HTML Target Location: 
      
    $(PEGASUS_HTML_DIR)/DefaultC++

    3.1.2 C DOC++

    Source Location: $(PEGASUS_ROOT)/pegasus/doc/SDK/CMPI

    Generated HTML Staging Location: 
      
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_HTML_DIR)/CMPI

    Generated HTML Target Location: 
      
    $(PEGASUS_HTML_DIR)/CMPI

    3.2 Developer Documentation

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

    The following documents are included as part of the SDK.

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

    Target Location: $(PEGASUS_DOC_DIR)

    4. Sample Program Files

    This section documents the recommended set of sample programs to be included in the OpenPegasus 2.5 SDK. Files in this section are expected to be rooted in a single directory $(PEGASUS_SAMPLES_DIR).

    The OpenPegasus SDK includes both Client and Provider sample programs.

    The $(PEGASUS_SAMPLES_DIR) directory contains the master makefile and configuration file for building and testing the sample Clients and Providers.

    Target Location: $(PEGASUS_SAMPLES_DIR)

    4.1 mak Directory

    Target Location: $(PEGASUS_SAMPLES_DIR)/mak

    4.2 Client Sample Programs

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients

    4.2.1 C++ Client Sample Programs

    There are three C++ CIM Client examples are package with the OpenPegasus SDK.

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++

    4.2.1.1 EnumInstances Example

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/EnumInstances

    4.2.1.2 InvokeMethod Example

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/InvokeMethod

    4.2.1.3 SendTestIndications Example

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/SendTestIndications

    4.2.1.4 Associations Example

    Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/Associations

    4.3 Provider Sample Programs

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers

    4.3.1 Provider MOF Files (Class Definitions and Registration Instances)

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load

    4.3.2 C++ Provider Examples

    The target destination directory for the C++ Provider sample programs is $(SAMPLE_DESTPATH)/Providers/DefaultC++.

    4.3.2.1 Sample Instance Provider

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/InstanceProvider

    4.3.2.2 Sample Method Provider

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/MethodProvider

    4.3.2.3 Sample Indication Provider

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/IndicationProvider

    4.3.2.4 Sample Association Provider

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/AssociationProvider

    4.3.3 C++ Consumer Examples
    4.3.3.1 Simple Display Consumer

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/SimpleDisplayConsumer

    4.3.4 CMPI C Provider Examples

    The target destination directory for the CMPI C Provider sample programs is $(SAMPLE_DESTPATH)/Providers/CMPI.

    4.3.4.1 Files and Directories Provider

    Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/CMPI/FilesAndDirectories

    5. SDK Staging Process

    The makefile pegasus/mak/SDKMakefile can be used to stage the OpenPegasus SDK.

    This command will create three master SDK directories.

    The makefile pegasus/mak/SDKMakefile can be used to build (compiler and link) the "staged" version of the OpenPegasus SDK samples. This option is designed to allow testing of the sample programs prior to packaging.

    The makefile pegasus/mak/SDKMakefile can  be used to test the "staged" version of the OpenPegasus SDK samples. The cimserver MUST be started prior to running this option.

    To run the SDK samples successfully the root/SampleProvider namespace MUST exist. This namespace is populated as part of the standard OpenPegasus tests. In addition, it can be populated using the Makefile in the samples/Providers/Load directory.

    Both pegasus/mak/SDKMakefile and samples/Providers/Load/Makefile can be used to register and deregister the "staged" SDK sample providers.

    or
  • References

    1. PEP#189 - OpenPegasus 2.4 External Interface Definition.
    2. PEP#209 - OpenPegasus 2.5 External Interface Definition.

    Rationale

    Schedule

    Discussion


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

    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