1 karl 1.1 Pegasus - A Manageability Services Broker for the DMTF CIM/WBEM Standards
2
3
4 Author: Mike Brasher, Karl Schopmeyer
5
6 HISTORY_BEGIN
7 $Log$
8
9 Tagline: Pegasus is an object manager for DMTF CIM objects written in C++
10 and supported but The Open Group
11
12 HISTORY_END
13
14
15 Pegasus is an object manager for DMTF CIM objects It is written in C++ and
16 includes the Object manager, a set of defined interfaces, and SDKs for both
17 client, providers, and services extensions. It is maintained consistent with
18 the DMTF CIM and WBEM specifications except for any exceptions noted in the
19 documentation.
20
21 This distribution represents a work in progress towards building a Pegasus
22 karl 1.1 release. Pegasus is open source and is covered under the following licnese.
23 This version is incomplete and is directed towards evaluators and developers
24 of the Pegasus Architecture.
25
26 Pegasus is being developed and maintained under the auspices of The Open
27 Group. Pegasus is maintained under the license defined in the doc directory
28 (LICENSE) of this release. This licensing is intended to support as wide a
29 distribution as possible with minimal demands on the users.
30
31 This distribution represnts a snapshot of the current work. Currently Pegasus
32 is in phase 1 of a multiphase development project. This snapshot is primarily
33 for developers and for evaluation of the project.
34
35 More information and on this project, access to the CVS, and documentation on
36 Pegasus is available from the OpenGroup WEB site.
37
38 There are separate files in the release for
39
40 History of releases - HISTORY
41 What's new for this release - WHATSNEW
42 What's Broken - BUGS
43 karl 1.1
44 In addition, the roadmap for Pegasus and further information on the project is
45 available on The Opengroup Pegasus WEB Site.
46
47 http://www.opengroup.org/MSB
48
49 Availability of Pegasus
50 =======================
51
52 Pegasus is distributed as open source. Today the distribution is limited
53 because we want to reach a predefined level of development before making the
54 project publically available. The move from limited to open distribution will
55 be a decision of the Pegasus development team and The Open Group and should
56 occur before March 2001.
57
58 To get on the distribution list for Pegasus today, send an email to
59
60 m.kirk@opengroup.org
61 or
62 k.schopmeyer@opengroup.org
63
64 karl 1.1 Pegasus Major Components
65 ========================
66 The major components of Pegasus are:
67
68 Pegasus Server - WBEM/CIM CIM_Server with interfaces for providers and Clients
69
70 Pegasus Repository - Today Pegasus provides a defined class repository interface and a simple
71 file based class repository. Future will include the object repository
72
73 Pegasus Client SDK - Tools for building Pegasus clients based on the Pegasus C++ interfaces
74 and using the WBEM HTTP/XML protocols or directly interfacing with Pegasus
75
76 Pegasus Test Clients - Simple test clients being developed as part of the Pegasus development
77 process
78
79 Pegasus HTML Test Client - To aid some testing we created a test client for Pegasus that uses
80 a WEB server (ex. Apache) with a set of CGI modules and HTML to allow the entry of Pegasus
81 operations from a WEB browser as forms and the recept of the response as WEB pages. This has
82 proven useful as a test tool and can be used for a wide variety of demonstrations.
83
84 Pegasus Providers - Future (Version 1.0)
85 karl 1.1
86 Pegasus Service Extensions - Future (version 1.0)
87
88 Pegasus MOF Compiler - Future (Version 0.9)
89
90 Pegasus Dependencies
91 ===========
92
93 We have worked to minimize the dependence of Pegasus on other software
94 packages and tools. Currently Pegasus has the following dependencies
95
96 1. ACE_Wrappers communication package - The ACE Wrappers package is used for communication and
97 some low level functions within the MSB, the Pegasus client SDK, and the Pegasus Provider SDK.
98 ACE is available from the following site.
99
100
101 http://ace.cs.wustl.edu/cvsweb/ace-cvs.cgi/ACE_wrappers/
102
103 Currently we are using version 5.1 of ACE_Wrappers both in Linux and Windows
104
105 http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-5.1.tar.gz
106 karl 1.1
107 COMMENTS: Pegasus only uses limited facilities from ACE. However, today we demand the
108 installation of the complete ACE library. One of the action items for the future is
109 to provide a more limited ACE library and possibly even to provide an environment
110 independent of ACE. This will depend on the demands of the users.
111
112 2. To simplify the building of Pegasus across multiple platforms we have
113 stnadardized on a set of build tools including: GNUMAKE. We are using GNUAKE
114 4.79.1 successfully both in Windows and Linux environments.
115
116 GNUMAKE is available from
117
118 http://www.gnu.org
119
120 ATTN: I think we need to make our version available on the TOG site.
121
122 COMMENT: Unless other users of Pegasus demand it, we will NOT create any build environment
123 for Pegasus that does not require GNUMAKE (ex Visual C++). We are open to other developers who
124 want to contribute other build structures for particular environments.
125
126
127 karl 1.1 3. MU.EXE - To minimize the difference between Linux and Windows for GUNMAKE,
128 we have created a utility called MU.exe. The source for this is available
129 with the distribution and the binary is distributed in the bin directory of
130 the the snapshots for now.
131
132 The Pegasus Directory Structure
133 ===============================
134
135 Pegasus is distributed as a complete directory structure that should be installed either
136 from one of the snapshots or from CVS.
137
138 This structure is generally as follows
139 Pegasus - Root directory
140 bin
141 build Destination for all intermediate files from build
142 bin Destination for executable and DLL modules from Pegasus build
143 lib
144 obj
145 cgi-bin Source and make for the Pegasus WEB Based Test client software
146 doc Miscelaneous Pegasus Documents. Includes the DMTF XML for CIM 2.4
147 html HTML files for the Browser test client.
148 karl 1.1 mak General make files (used by the root make and other makes)
149 src All Pegasus Source Files
150 ACEExamples Test directrory with examples of the use of ACE (developers)
151 Pegasus
152 CGI CGI files for the WEB test client
153 CGIClient
154 Client Pegasus Client SDK and Test client using the SDK
155 depends
156 tests
157 Common Pegasus Common Functions (C++ source and headers
158 tests Test programs for the common functions
159 Protocol Pegasus Client HTTP/XML Protocol Modules
160 depends
161 Repository Pegasus Repository Interfaces and Simple Repository
162 tests Tests for Repository Functions
163 Server Pegasus Server Modules
164 depends
165 tests
166
167 Utils
168 manual Pegasus User/developer manual source modules
169 karl 1.1 HTML Output from the Pegasus Manual compilartion.
170
171 In the near future we will add directories for:
172
173 Service Extensions
174 Providers
175
176
177 Installation
178 ============
179
180 Pegasus today is provided only as a source distribution. You download compile and use it.
181 Pegasus currently compiles and runs under both Linux and Windows NT environments.
182
183 The installation of Pegasus involves expanding the snapshot distribution files, building the
184 runtime, the test files and test clients, and building the repository.
185
186 NOTE: Since the compiler integration is not complete today, the class repository is populated
187 from the XML defintions for the complete CIM schema. This process is included in the build
188 process so that at the end of a complete build, the class repository is completely populated
189 from the CIM 2.4 release schema.
190 karl 1.1
191
192 Building from a Distribution --- General
193 ========================================
194
195 Pegasus is buildable and runnable on either Linux or WIndows Platforms today.
196 It uses a common build system for the two platforms based on build files and
197 GUNMAKE.
198
199 Generally we support four targets in our make system:
200
201
202 C:\> make clean
203 C:\> make depend
204 C:\> make
205 C:\> make tests
206
207 The Pegasus Client server tests are executed separately from the above because they require
208 the initiation of separate process for the Pegasus server and Pegasus client. These tests can
209 be executed as follows:
210
211 karl 1.1 ATTN: Add the procedure for Client/Server Test start here.
212
213
214 For information on particular installation characteristics, tools, etc. for each platform see
215 the appropriate sections below:
216
217 Generally the build commands are as follows:
218
219 1. There is a Makefile in the Pegasus root. Simply executing make in the Pegasus
220 root directory will make everything.
221
222 2. In order to provide a working class repository for Pegasus until the MOF compiler
223 is integrated, There is a utility to load the CIM Schema from XML into the repository.
224 This executes the LoadRepository executable which is defined in
225
226 pegasus/src/Pegasus/Repository/tests/LoadRepository
227
228 with the binary in pegasus/bin. This program will load the CIM XML repository
229 definitions into the class repository.
230
231 3. To test a fresh release, go to the pegasus root and type
232 karl 1.1
233 "make world".
234
235
236 This will clean, build dependencies, build binaries, and then run all
237 tests except the Client/Server tests.
238
239 4. To execute the basic test suite that is shipped with pegasus type
240
241 "make tests"
242
243 5. To run the Client/Server tests provided, simply type
244
245 "make tests"
246
247 Running "make -s tests" suppresses extraneous output such as the
248 enter/leave directory messages.
249
250 6. "Make Clean" removes all object and library files from the
251 structure.
252
253 karl 1.1 Build Variables
254 ===============
255
256 The build system depends on the following environment variables
257
258 PEGASUS_ACE_ROOT - required (points to ACE_wrappers directory). This must be set
259 before you initiate make
260
261 PEGASUS_BUILD - optional (points to build directory; defaults to build
262 directory under root of pegasus distribution). This must be set before you iniiate
263 make
264
265 PEGASUS_OS_TYPE - optional. The is currently set to windows. If you build on Linux
266 you must change this before initiating make.
267
268 COMMENTS: In the future, we will probably automate this more. However, setting these
269 variables today is manual.
270
271
272 The MU Utility
273 ==============
274 karl 1.1
275 In order to provide a consistent build structure across multiple platforms, we developed a
276 small utility to provide a consistent set of small utilities across these platforms. The MU
277 utilityis a simple utility that contains many commands. For example:
278
279
280 C:\> mu rm myfile.cpp yourfile.cpp
281
282
283 You may type "mu" to get a list of valid commands. Here are some
284 of them:
285
286
287 echo, rm, rmdirhier, mkdirhier, copy, pwd, depend
288
289
290 The MU utility supports globing (expansion of wildcards) so
291 you can do things like this:
292
293
294 C:\> mu rm *.obj *.exe
295 karl 1.1
296 MU is required to build under the Windows environment.MU is available as part of the
297 distribution of Pegasus.
298
299 Building Pegausu on Linux
300 =========================
301
302 1. Obtain, unpack and build the ACE_Wrappers package for Linux.
303
304 2. Define an environment variable called ACE_ROOT that points to the root of the ACE_WRAPPERS
305 distribution. For example
306
307 IMPORT ACE_ROOT=\local\ACE_Wrappers
308
309 ATTN: Mike. what is a viable directory for Linux (what do you use)
310
311 3. Define an environment variable PEGASUS_ROOT that points to the
312 root of the Pegasus Distribution
313
314 4. Append %PEGASUS_ROOT%/bin to your path
315
316 karl 1.1 5. Unpack the ace distribution.
317
318 ATTN: Unpack with what since ZIP.
319
320 5. Build using the make commands defined in the section on General Build.
321
322 make world
323 make tests
324
325 Building Pegasus on NT or Windows 2000 With Visual C++
326 =======================================================
327
328 Today we build Pegasus on Windows NT using a set of make files contained
329 in the source distribution, the Microsoft compilers (tested so far with
330 versions 5 and 6) and the GNUMAKE make utility. The following is the basic
331 set up steps for the
332
333
334 1. Setup the environment variables and path for the Micrososft Visual C compiler.
335 Typically this can be done by running the VCVARS32.BAT file supplied with Microsoft Visual
336 C++. (contained in the same directory as cl.exe).
337 karl 1.1
338 2. Define an environment variable called ACE_ROOT that points to the
339 root of the ACE_Wrappers distribution. For example:
340
341 C:\> set PEGASUS_ACE_ROOT=c:/ACE_wrappers
342
343 Now append %ACE_ROOT%/bin to the path like this:
344
345 C:\> set path=%path%;%PEGASUS_ACE_ROOT%/bin
346
347 3. Define an environment variable called PEGASUS_ROOT that points to
348 the root of the Pegasus distribution. For example:
349
350 C:\> set PEGASUS_ROOT=c:/pegasus
351
352 Now append %PEGASUS_ROOT%/bin to your path like this:
353
354 set path=%path%;%PEGASUS_ROOT%/bin
355
356 4. Unpack and build the ACE_Wrappers distribution for windows.
357
358 karl 1.1 As an example, we created a file called %ACE_ROOT%/ace/config.h
359 containing the following:
360
361 #include "ace/config-win32.h"
362
363 and then opened this DSW file in MSVC++ IDE:
364
365 %ACE_ROOT%/ace/ace.dsw
366
367 From the build menu we picked "aced.dll". For me it built without complaint.
368
369 BUG: there is still one open problem that has not been resolved. With
370 the Visucal C++ version 6 compiler, the ace libraries default to
371
372 acemfc.dll
373
374 With the version 5 visual C, apparently they default to the names
375
376 ace.dll
377 or
378 aced.dll (debug verions
379 karl 1.1
380 We will correct this in a future snapshot.
381
382
383 5. Unpack the Pegasus distribution. On Windows systems, PKzip25 or WINZIP can be used.
384 Be certain to use the option that expands the directory tree of the files. This expansionwill
385 create a directory called ./pegasus
386
387 If you are using pkzip25.exe do this:
388 C:\> pkzip25 -extract -recurse -directories pegasus.zip
389
390 This will create a directory tree called ./pegasus under the
391 current directory.
392
393 ATTN: Define for Linux also
394
395 6. Change directory to %PEGASUS_ROOT% and type "make world". See the general build section
396 for the full set of make commands.
397
398 This builds Pegasus and all of its examples.
399
400 karl 1.1 7. To verify that it built okay, run the tests
401
402 make tests
403
404 Installing the Pegasus HTML Test Client
405 =======================================
406
407 This is a separate test tool that allows Pegasus requests to be initiated from any WEB browser
408 and that uses a WEB browser, CGI scritps and HTML pages for the formating and connections. It
409 requires a WEB server, etc. The instructions for setting up this environment are maintained
410 in a separate readme in the CGI directory.
411
412 Development with Pegasus and Pegasus Tools
413 ==========================================
414
415 ATTN: This section needs to be completed. It should reference the more
416 complete documentation
417
418 ===================
419 Documentation
420
421 karl 1.1 The documentation is currently in preperation. The preliminary documentation is not provided
422 with this snapshot but is avialable from the OpenGroup Pegasus WEB pages. The current
423 documentation is maintained both as a manual created under the tool DOC++ in the
424 subdirectory manual/html and as other miscelaneous documentation in the doc directory.
425
426 Note that the Pegasus WEB site at The Open Group will be the source of most documentation in
427 the future and today is the source of most discussion and design documentation.
428
429 Participate!
430 ============
431 We are looking for people who want to join the effort of getting this
432 next release off the ground. Please send me email for details.
433
434
435
436
437
438
439
440
441
442 karl 1.1
443
444
|