PEP

OpenPegasus SDK (Software Developer Kit) Packaging Definition

Abstract: This document defines the recommended set of files for inclusion in this release of the OpenPegasus SDK.

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.

Note 2: This DOCUMENt 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.

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

### 1. Style Guidelines for SDK Files

- All experimental interfaces should be (a) enclosed within the PEGASUS_USE_EXPERIMENTAL_INTERACES "ifdef" and (b) labeled as an "Experimental Interface" within the DOC++ captured comment. E.g.,

          #ifdef PEGASUS_USE_EXPERIMENTAL_INTERFACES

          /** Experimental Interface

          Initialize from a plain C-String that allows UTF-8:
          @param str Specifies the name of the String instance.
          @param utfFlag Specifies the name of the character constructor.
          */
          String(const char* str, const char* utfFlag);

          #endif

- Developer names should not be included in SDK packaged files.

### 2. SDK Include Files

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

Operating System | $(PEGASUS_INCLUDE_DIR) | Directory
--- | --- | ---
Owner Group | Permissions
Linux | /usr/include | root/root | drwxr-xr-x
HP-UX | /opt/wbem/include |  |

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

CIMClientException.h
CIMClient.h

ClientOpPerformanceDataHandler.h
Linkage.h

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

AcceptLanguagesList.h
Array.h
ArrayInter.h
CIMClass.h
CIMDateTime.h
CIMFlavor.h
CIMIndication.h
CIMInstance.h
CIMMethod.h
CIMName.h
CIMObject.h
CIMObjectPath.h
CIMOperationType.h
CIMParamValue.h
CIMParameter.h
CIMProperty.h
CIMPropertyList.h
CIMQualifier.h
CIMQualifierDecl.h
CIMScope.h
CIMStatusCode.h
CIMType.h
CIMValue.h
Char16.h
Config.h
ContentLanguagesList.h
Exception.h
LanguageTag.h
Linkage.h
OperationContext.h
Platform_$(PEGASUS_PLATFORM).h
ResponseHandler.h
SSLContext.h
String.h

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

CIMIndicationConsumer.h
Linkage.h

#### 2.4 Provider Include Files

##### 2.4.1 C++ Provider Include Files

These include files are used to build OpenPegasus 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

CIMAssociationProvider.h
CIMIndicationConsumerProvider.h
CIMIndicationProvider.h
CIMInstanceProvider.h
CIMMethodProvider.h
CIMOMHandle.h
CIMProvider.h
Linkage.h
ProviderException.h

##### 2.4.2 CMPI C Provider Include Files

These include files are used to build OpenPegasus 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

cmpidt.h
cmpift.h
cmpimacs.h
cmpios.h
cmpipl.h

### 3. Documentation Files

This section documents the recommended set of documentation files to be included in this release of the OpenPegasus 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.

Operating System | $(PEGASUS_HTML_DIR) | Directory
--- | --- | ---
Owner Group | Permissions
Linux | /usr/share/Pegasus/html | root/pegasus | drwxr-xr-x
HP-UX | /opt/wbem/html |  |

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

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

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
>     Doxyfile
>     index.html

#### 3.2 Developer Documentation

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

Operating System | $(PEGASUS_DOC_DIR) | Directory
--- | --- | ---
Owner Group | Permissions
Linux | /usr/share/doc/tog-pegasus-2.11 | root/pegasus | drwxr-xr-x
HP-UX | /opt/wbem/doc |  |

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)

File Name | Source Location
--- | ---
SecurityGuidelinesForDevelopers.html | pegasus/doc

### 4. Sample Program Files

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

Operating System | $(PEGASUS_SAMPLES_DIR) | Directory
--- | --- | ---
Owner Group | Permissions
Linux | /usr/share/Pegasus/samples | root/pegasus | drwxr-xr-x
HP-UX | /opt/wbem/samples |  |

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

Operating System | File
--- | ---
Owner/Group | Permissions
Linux | root/pegasus | -rw-r--r--
HP-UX | bin/bin |
OpenVMS | system |

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

Operating System | File
--- | ---
Owner/Group | Permissions
Linux | root/pegasus | drwxr-xr-x
HP-UX | bin/bin |
OpenVMS | system |

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)

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples

#### 4.1 mak Directory

Target Location: $(PEGASUS_SAMPLES_DIR)/mak

File Name | Source Location
--- | ---
SDKEnvVar.mak | This file is generated.
build.mak | pegasus/src/SDK/samples/mak
common.mak | pegasus/src/SDK/samples/mak
config.mak | pegasus/src/SDK/samples/mak
library.mak | pegasus/src/SDK/samples/mak
program.mak | pegasus/src/SDK/samples/mak
recurse.mak | pegasus/src/SDK/samples/mak
$(PEGASUS_PLATFORM).mak | pegasus/src/SDK/samples/mak

#### 4.2 Client Sample Programs

Target Location: $(PEGASUS_SAMPLES_DIR)/Clients

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Clients

##### 4.2.1 C++ Client Sample Programs

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

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

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Clients/DefaultC++

###### 4.2.1.1 EnumInstances Example

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

File Name | Source Location
--- | ---
EnumInstances.cpp | pegasus/src/SDK/samples/Clients/DefaultC++/EnumInstances
Makefile | pegasus/src/SDK/samples/Clients/DefaultC++/EnumInstances

###### 4.2.1.2 InvokeMethod Example

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

File Name | Source Location
--- | ---
InvokeMethod.cpp | pegasus/src/SDK/samples/Clients/DefaultC++/InvokeMethod
Makefile | pegasus/src/SDK/samples/Clients/DefaultC++/InvokeMethod

###### 4.2.1.3 SendTestIndications Example

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

File Name | Source Location
--- | ---
SendTestIndications.cpp | pegasus/src/SDK/samples/Clients/DefaultC++/SendTestIndications
Makefile | pegasus/src/SDK/samples/Clients/DefaultC++/SendTestIndications

###### 4.2.1.4 Associations Example

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

File Name | Source Location
--- | ---
AssociationTestClient.cpp | pegasus/src/SDK/samples/Clients/DefaultC++/Associations
Makefile | pegasus/src/SDK/samples/Clients/DefaultC++/Associations

#### 4.3 Provider Sample Programs

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers

##### 4.3.1 Provider MOF Files (Class Definitions and Registration Instances)

This release of the OpenPegasus SDK includes MOF files from version 2.41 of the DMTF CIM Schema.

Variable | Value
--- | ---
PEGASUS_CIM_SCHEMA | 228

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers/Load
IndicationProviderR.mof | pegasus/src/SDK/samples/Providers/Load
InstanceProviderR.mof | pegasus/src/SDK/samples/Providers/Load
MethodProviderR.mof | pegasus/src/SDK/samples/Providers/Load
SimpleDisplayConsumerR.mof | pegasus/src/SDK/samples/Providers/Load
SampleProviderSchema.mof | pegasus/src/SDK/samples/Providers/Load
AssociationProvider.mof | pegasus/src/SDK/samples/Providers/Load
AssociationProviderR.mof | pegasus/src/SDK/samples/Providers/Load
CWS_FilesAndDir.mof | pegasus/src/SDK/samples/Providers/Load
CWS_FilesAndDirR.mof | pegasus/src/SDK/samples/Providers/Load
SDK_CIM_Schema.mof | pegasus/src/SDK/samples/Providers/Load

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF

File Name | Source Location
--- | ---
qualifiers.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF
qualifiers_optional.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/Core

File Name | Source Location
--- | ---
CIM_Component.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/Core
CIM_LogicalElement.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/Core
CIM_ManagedElement.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/Core
CIM_ManagedSystemElement.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/Core

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/Event

File Name | Source Location
--- | ---
CIM_Indication.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/Event

Target Location: $(PEGASUS_SAMPLES_DIR)/Providers/Load/$(PEGASUS_CIM_SCHEMA)/DMTF/System

File Name | Source Location
--- | ---
CIM_DataFile.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/System
CIM_DirectoryContainsFile.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/System
CIM_Directory.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/System
CIM_LogicalFile.mof | pegasus/Schemas/$(PEGASUS_CIM_SCHEMA)/DMTF/System

##### 4.3.2 C++ Provider Examples

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

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++

###### 4.3.2.1 Sample Instance Provider

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

File Name | Source Location
--- | ---
EnumerateInstancesrspgood.xml | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider
EnumerateInstances.xml | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider
InstanceProvider.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider
InstanceProvider.h | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider
InstanceProviderMain.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++/InstanceProvider

###### 4.3.2.2 Sample Method Provider

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

File Name | Source Location
--- | ---
InvokeMethodrspgood.xml | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider
InvokeMethod.xml | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider
MethodProviderMain.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider
MethodProvider.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider
MethodProvider.h | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++/MethodProvider

###### 4.3.2.3 Sample Indication Provider

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

File Name | Source Location
--- | ---
IndicationProvider.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/IndicationProvider
IndicationProvider.h | pegasus/src/SDK/samples/Providers/DefaultC++/IndicationProvider
IndicationProviderMain.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/IndicationProvider
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++/IndicationProvider

###### 4.3.2.4 Sample Association Provider

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

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++/AssociationProvider
AssociationProvider.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/AssociationProvider
AssociationProvider.h | pegasus/src/SDK/samples/Providers/DefaultC++/AssociationProvider
AssociationProviderMain.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/AssociationProvider

##### 4.3.3 C++ Consumer Examples

###### 4.3.3.1 Simple Display Consumer

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

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers/DefaultC++/SimpleDisplayConsumer
SimpleDisplayConsumer.cpp | pegasus/src/SDK/samples/Providers/DefaultC++/SimpleDisplayConsumer
SimpleDisplayConsumer.h | pegasus/src/SDK/samples/Providers/DefaultC++/SimpleDisplayConsumer
SimpleDisplayConsumerMain.cpp | pegasus/src/SDK/samples/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.

File Name | Source Location
--- | ---
Makefile | pegasus/src/SDK/samples/Providers/CMPI

###### 4.3.4.1 Files and Directories Provider

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

File Name | Source Location
--- | ---
CWS_Directory.c | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories
CWS_DirectoryContainsFile.c | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories
CWS_FileUtils.c | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories
CWS_FileUtils.h | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories
CWS_PlainFile.c | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories
Makefile | pegasus/src/SDK/samples/Providers/CMPI/FilesAndDirectories

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

File Name | Source Location
--- | ---
cwssimdata.c | pegasus/src/SDK/samples/Providers/CMPI/CWS_Util
cwsutil.c | pegasus/src/SDK/samples/Providers/CMPI/CWS_Util
cwsutil.h | pegasus/src/SDK/samples/Providers/CMPI/CWS_Util
Makefile | pegasus/src/SDK/samples/Providers/CMPI/CWS_Util

## 5. SDK Staging Process

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

$(MAKE) -f pegasus/mak/SDKMakefile stageSDK

This command will create three master SDK directories.

$(PEGASUS_HOME)/stageSDK/include
$(PEGASUS_HOME)/stageSDK/samples
$(PEGASUS_HOME)/stageSDK/html

## 6. References

1. PEP#189 - OpenPegasus 2.4 External Interface Definition.
2. PEP#209 - OpenPegasus 2.5 External Interface Definition.
3. PEP#278 - OpenPegasus 2.6 External Interface Definition.
4. PEP#293 - OpenPegasus 2.7 External Interface Definition.
5. PEP#329 - OpenPegasus 2.8 External Interface Definition.
6. PEP#344 - OpenPegasus 2.9 External Interface Definition.

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