Document title: OpenPegasus 2.10.0 SDK (Software Developer Kit) Packaging Definition     Document details     Comments     Help with document reviews


[ ¤1] Pegasus Enhancement Proposal (PEP)

[ ¤2] PEP #: 352

[ ¤3] Title: OpenPegasus 2.10.0 SDK (Software Developer Kit) Packaging Definition

[ ¤4] Version: 1.0

[ ¤5] Created: 19 January 2010

[ ¤6] Authors: Marek Szermutzky
[ ¤7]

[ ¤8] Status:  Draft

[ ¤9] Version History:

[ ¤10] Version [ ¤11] Date [ ¤12] Author [ ¤13] Change Description
[ ¤14] 1.0 [ ¤15] 17 Dec 2008 [ ¤16] Denise Eckstein [ ¤17]
  • [ ¤18] Initial Submission based on PEP#342 - OpenPegasus 2.9 SDK Packaging Definition.
  • [ ¤19]  


    [ ¤20] Abstract: This PEP defines the recommended set of files for inclusion in this release of the OpenPegasus SDK.

    [ ¤21] 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.

    [ ¤22] Note 2:  This PEP DOES NOT define the OpenPegasus 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 the  "OpenPegasus External Interface Definition" document, ExternalInterface.html, in the pegasus/doc directory in CVS for the definition of the OpenPegasus external interface.  


    [ (venkat_puvvada) Add note 3 above for PEGASUS_FLAVOR option, something like:

    Note 3: Below mentioned SDK installation directories will change if the PEGASUS_FLAVOR option is set. See
    PEP 350 for more details.

    ¤23]
    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.

    [ ¤24] Proposed Solution

    [ ¤25] 1. Style Guidelines for SDK Files

    [ ¤33] 2. SDK Include Files

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

    [ ¤51] 2.1 Client Include Files

    [ ¤52] Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Client

    [ ¤53] Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Client

    [ ¤54] Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Client

    [ ¤59] 2.2 Common Include Files

    [ ¤60] Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Common

    [ ¤61] Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Common

    [ ¤62] Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Common

    [ ¤98] 2.3 Consumer Include Files

    [ ¤99] Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Consumer

    [ ¤100] Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Consumer

    [ ¤101] Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Consumer

    [ ¤104] 2.4 Provider Include Files

    [ ¤105] 2.4.1 C++ Provider Include Files

    [ ¤106] These include files are used to build OpenPegasus  C++ Providers.

    [ ¤107] Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Provider

    [ ¤108] Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Provider

    [ ¤109] Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Provider

    [ ¤119] 2.4.2 CMPI C Provider Include Files

    [ ¤120] These include files are used to build OpenPegasus  CMPI C Providers.

    [ ¤121] Source Location: $(PEGASUS_ROOT)/pegasus/src/Pegasus/Provider/CMPI

    [ ¤122] Staging Location: 
    [ ¤123]         
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_INCLUDE_DIR)/Pegasus/Provider/CMPI

    [ ¤124] Target Location: $(PEGASUS_INCLUDE_DIR)/Pegasus/Provider/CMPI

    [ ¤130] 3. Documentation Files

    [ ¤131] This section documents the recommended set of documentation files to be included in this release of the OpenPegasus SDK.

    [ ¤132] 3.1 DOC++ Generated Files

    [ ¤133] 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.

    [ ¤134]  

    [ ¤151] 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.

    [ ¤152] The list of files required to build the API documentation include:

    [ ¤153] Source Location: $(PEGASUS_ROOT)/pegasus/doc/SDK

    [ ¤154] Generated HTML Staging Location: 
    [ ¤155]   
    $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_HTML_DIR)

    [ ¤156] Generated HTML Target Location: 
    [ ¤157]   
    $(PEGASUS_HTML_DIR)

    [
    
    ¤158] Makefile
    [ ¤159] PageFooter.html
    [ ¤160] PageHeader.html
    [ ¤161] Doxyfile
    [ ¤162] index.html

    [ ¤163] 3.2 Developer Documentation

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

    [ ¤181] The following documents are included as part of the SDK.

    [ ¤182] Staging Location: $(PEGASUS_HOME)/$(PEGASUS_STAGING_DIR)/$(PEGASUS_DOC_DIR)

    [ ¤183] Target Location: $(PEGASUS_DOC_DIR)

    [ ¤188] 4. Sample Program Files

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

    [ ¤206] The following table describes the permissions that should be assigned to the files in the $(PEGASUS_SAMPLES_DIR) directory and subdirectories

    [ ¤220] The following table describes the permissions that should be assigned to the $(PEGASUS_SAMPLES_DIR) subdirectories.

    [ ¤234] The OpenPegasus SDK includes both Client and Provider sample programs.

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

    [ ¤236] Target Location: $(PEGASUS_SAMPLES_DIR)

    [ ¤241] 4.1 mak Directory

    [ ¤242] Target Location: $(PEGASUS_SAMPLES_DIR)/mak

    [ ¤261] 4.2 Client Sample Programs

    [ ¤262] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients

    [ ¤267] 4.2.1 C++ Client Sample Programs

    [ ¤268] There are four C++ CIM Client examples are package with the OpenPegasus SDK.

    [ ¤269] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++

    [ ¤274] 4.2.1.1 EnumInstances Example

    [ ¤275] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/EnumInstances

    [ ¤282] 4.2.1.2 InvokeMethod Example

    [ ¤283] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/InvokeMethod

    [ ¤290] 4.2.1.3 SendTestIndications Example

    [ ¤291] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/SendTestIndications

    [ ¤298] 4.2.1.4 Associations Example

    [ ¤299] Target Location: $(PEGASUS_SAMPLES_DIR)/Clients/DefaultC++/Associations

    [ ¤306] 4.3 Provider Sample Programs

    [ ¤307] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers

    [ ¤312] 4.3.1 Provider MOF Files (Class Definitions and Registration Instances)

    [ ¤313] This release of the OpenPegasus SDK includes MOF files from version 2.17.1 of the  DMTF CIM Schema.

    [ ¤318] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load

    [ ¤343] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF

    [ ¤350] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/Core

    [ ¤361] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/Event

    [ ¤366] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/System

    [ ¤377] 4.3.2 C++ Provider Examples

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

    [ ¤383] 4.3.2.1 Sample Instance Provider

    [ ¤384] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/InstanceProvider
    [ ¤385]

    [ ¤400] 4.3.2.2 Sample Method Provider

    [ ¤401] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/MethodProvider
    [ ¤402]

    [ ¤417] 4.3.2.3 Sample Indication Provider

    [ ¤418] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/IndicationProvider
    [ ¤419]

    [ ¤430] 4.3.2.4 Sample Association Provider

    [ ¤431] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/AssociationProvider
    [ ¤432]

    [ ¤443] 4.3.3 C++ Consumer Examples
    [ ¤444] 4.3.3.1 Simple Display Consumer

    [ ¤445] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/DefaultC++/SimpleDisplayConsumer
    [ ¤446]

    [ ¤457] 4.3.4 CMPI C Provider Examples

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

    [ ¤463] 4.3.4.1 Files and Directories Provider

    [ ¤464] Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/CMPI/FilesAndDirectories
    [ ¤465]

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

    [ ¤490] 5. SDK Staging Process

    [ ¤491] The makefile pegasus/mak/SDKMakefile can be used to stage the OpenPegasus SDK.

    [ ¤492] This command will create three master SDK directories.
    [ ¤493]

    [ ¤496]

    [ ¤497] 6. References

    1. [ ¤498] PEP#189 - OpenPegasus 2.4 External Interface Definition.
    2. [ ¤499] PEP#209 - OpenPegasus 2.5 External Interface Definition.
    3. [ ¤500] PEP#278 - OpenPegasus 2.6 External Interface Definition.
    4. [ ¤501] PEP#293 - OpenPegasus 2.7 External Interface Definition.
    5. [ ¤502] PEP#329 - OpenPegasus 2.8 External Interface Definition.
    6. [ ¤503] PEP#344 - OpenPegasus 2.9 External Interface Definition.

    [ ¤504]


    [ (k_schopmeyer) I believe we should update the copyright
    ¤505]
    Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
    [ ¤506] EMC Corporation; Symantec Corporation; The Open Group.
    [ ¤507]
    [ ¤508] Permission is hereby granted, free of charge, to any person obtaining a copy
    [ ¤509] of this software and associated documentation files (the "Software"), to
    [ ¤510] deal in the Software without restriction, including without limitation the
    [ ¤511] rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
    [ ¤512] sell copies of the Software, and to permit persons to whom the Software is
    [ ¤513] furnished to do so, subject to the following conditions:
    [ ¤514]
    [ ¤515] THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
    [ ¤516] ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
    [ ¤517] "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
    [ ¤518] LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
    [ ¤519] PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
    [ ¤520] HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
    [ ¤521] ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    [ ¤522] WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


    [ ¤523] Template last modified: March 26th 2006 by Martin Kirk
    [ ¤524]
    Template version: 1.11