1 karl 1.1.2.1 Title: the OpenPegasus memory-resident repository
2 Date: 1 November 2007
3 Refernece: PEP 307
4
5 Overview
6
7 The memory-resident repository is designed to be used primarily by embedded
8 systems. It has the following characteristics.
9
10 1. The class repository is read-only and must be built and installed as part
11 of the server startup. There is no capability to add, modify, delete classes
12 or qualifiers once the OpenPegasus server has been built.
13
14 2. The instance repository is maintained in core and is fully read/write. The
15 persistence of the instance repository is maintained through a set of callbacks
16 that the system creator must create to save and restore the instance repository.
17
18 How to build the memory-resident class repository
19
20 The repository is built using the Pegasus compiler cimmofl. Note that in the
21 memory-resident repository there is no capability to modify the class repository
22 karl 1.1.2.1 subsequent to building the system so the complete class repository must be
23 compiled prior to building the system.
24
25 To build the memory-resident repository, first determine the CIM namespaces to be
26 used and the classes that will be included in each namespace.
27
28 The complete set of classes and qualifiers for a single namespace must be compiled
29 with the OpenPegasus cimmofl compiler in a single call using the -m option on the
30 compiler to generate the C++ source output that represents the classes/qualifiers
31 to be compiled into the namespace.
32
33 Typically this means building a single mof file that represents the include of all
34 of classes and qualifiers for the target namespace. The following is an example
35 of such a mof file, the root_PG_Internal-namespace.mof file
36
37 #pragma include("CIM2131/Core_Qualifiers.mof")
38 #pragma include("Pegasus/Internal/VER20/PG_InternalSchema20.mof")
39
40 The c++ source for that namespace is built with cimmofl using the -m option.
41
42 Within a Makefile the repository compile this can be defined as:
43 karl 1.1.2.1
44 SCHEMAS=$(PEGASUS_ROOT)/Schemas
45 CIMMOFL=cimmofl -d -W -m
46
47 repository:
48 @ $(CIMMOFL) root/PG_Internal -I $(SCHEMAS) root_PG_Internal_namespace.mof
49
50 -m - generates memory-resident repository source files for the class and
51 qualifier definitions.
52 -d - TBD
53 -W - Bypass the warning that you are using the cimmofl compiler
54
55 This builds all of the classes and qualifiers for the root/PG_Internal namespace
56 and outputs the result to the file root_PG_Internal_namespace.h and .cpp files
57 for installation into the embedded system.
58
59 The input mof is contained in root_PG_Interlan_namespace.mof. It is the
60 responsibility of the developer to encapsulate all of the mof required for this
61 namespace into the single input file.
62
63 NOTE: There is a working example of this build mechanism for VxWorks in the
64 karl 1.1.2.1 directory
65
66 pegasus/vxworks/cimserver
67
68
69
70
|