1 karl 1.1 Pegasus - A Manageability Services Broker for the DMTF CIM/WBEM Standards
2
|
3 mike 1.3 Author: Mike Brasher, Karl Schopmeyer
4
|
5 karl 1.4 ------------------------------------------------------------------------------
6 --
7
8 $Log: readme.txt,v $
|
9 karl 1.5 Revision 1.4 2001/01/26 20:20:36 karl
10 Clean up Readme with MB comments
11
|
12 karl 1.4 Revision 1.3 2001/01/22 15:09:29 mike
13 Reworking indentation and breaking width of lines below 80 columns (not
14 finished). Also
15 inserted comments and suggestions following "MEB:" annotations.
|
16 karl 1.1
17
|
18 karl 1.2 Revision 1.1 2001/01/15 04:26:04 karl
19 added Readme
20
|
21 karl 1.4 ------------------------------------------------------------------------------
22 --
|
23 karl 1.1
24 Tagline: Pegasus is an object manager for DMTF CIM objects written in C++
|
25 karl 1.5 and supported by The Open Group
|
26 karl 1.4
|
27 karl 1.5 Pegasus is an open-source object manager for DMTF CIM objects. It is written
28 in C++ and includes the Object manager, a set of defined interfaces, and SDKs
29 for both client, providers, and services extensions. It is maintained
30 consistent with the DMTF CIM and WBEM specifications except for any exceptions
31 noted in the documentation.
|
32 karl 1.1
33 This distribution represents a work in progress towards building a Pegasus
|
34 mike 1.3 release. Pegasus is open source and is covered under the following license.
|
35 karl 1.1 This version is incomplete and is directed towards evaluators and developers
36 of the Pegasus Architecture.
37
38 Pegasus is being developed and maintained under the auspices of The Open
39 Group. Pegasus is maintained under the license defined in the doc directory
40 (LICENSE) of this release. This licensing is intended to support as wide a
41 distribution as possible with minimal demands on the users.
42
43 This distribution represnts a snapshot of the current work. Currently Pegasus
44 is in phase 1 of a multiphase development project. This snapshot is primarily
45 for developers and for evaluation of the project.
46
|
47 mike 1.3 More information on this project, access to the CVS, and documentation on
48 Pegasus are available from the OpenGroup WEB site.
|
49 karl 1.1
50 There are separate files in the release for
51
52 History of releases - HISTORY
53 What's new for this release - WHATSNEW
54 What's Broken - BUGS
55
56 In addition, the roadmap for Pegasus and further information on the project is
57 available on The Opengroup Pegasus WEB Site.
58
59 http://www.opengroup.org/MSB
60
61 Availability of Pegasus
62 =======================
63
64 Pegasus is distributed as open source. Today the distribution is limited
65 because we want to reach a predefined level of development before making the
66 project publically available. The move from limited to open distribution will
67 be a decision of the Pegasus development team and The Open Group and should
68 occur before March 2001.
69
70 karl 1.1 To get on the distribution list for Pegasus today, send an email to
71
72 m.kirk@opengroup.org
|
73 mike 1.3
|
74 karl 1.1 or
|
75 mike 1.3
|
76 karl 1.1 k.schopmeyer@opengroup.org
77
78 Pegasus Major Components
79 ========================
|
80 mike 1.3
|
81 karl 1.1 The major components of Pegasus are:
82
|
83 mike 1.3 Pegasus Server - WBEM/CIM Server with interfaces for providers and clients
|
84 karl 1.1
|
85 karl 1.5 Pegasus Repositories - Today Pegasus provides a defined class repository
86 interface and a simple file based class repository. It also includes
87 an instance repository. Note that these repository were created for
88 functionality, not efficieny. It is expected that they will be replaced
89 with other implementations of the respository function as the need arrses.
|
90 mike 1.3
|
91 karl 1.4 Pegasus Client SDK - Tools for building Pegasus clients based on the Pegasus
92 C++ interfaces and using the WBEM HTTP/XML protocols or directly
|
93 mike 1.3 interfacing with Pegasus.
94
|
95 karl 1.4 Pegasus Test Clients - Simple test clients being developed as part of the
|
96 mike 1.3 Pegasus development process
97
|
98 karl 1.4 Pegasus HTML Test Client - To aid in testing we created a test client for
99 Pegasus that uses a WEB server (ex. Apache) with a set of CGI modules and
100 HTML to allow the entry of Pegasus operations from a WEB browser as forms
101 and the recept of the response as WEB pages. This has proven useful as a
|
102 mike 1.3 test tool and can be used for a wide variety of demonstrations.
|
103 karl 1.1
|
104 karl 1.5 Pegasus Provider SDK - Tools for build Pegasus clients based on the Pegasus
105 C++ interfaces.
106
107 Pegasus Providers - A sampling of key providers to make the environment
108 complete as well as test providers and demonstration providers for the
109 Pegasus.
|
110 karl 1.1
111 Pegasus Service Extensions - Future (version 1.0)
112
|
113 karl 1.5 Pegasus MOF Compiler - FA standalone compiler for MOF files that can be used
114 to install MOF into the Pegasus schema repository and also to check syntax
|
115 karl 1.1
116 Pegasus Dependencies
|
117 mike 1.3 ====================
|
118 karl 1.1
119 We have worked to minimize the dependence of Pegasus on other software
120 packages and tools. Currently Pegasus has the following dependencies
121
|
122 karl 1.4 1. ACE_Wrappers communication package - The ACE Wrappers package is used for
123 communication and some low level functions within the MSB, the Pegasus client
|
124 mike 1.3 SDK, and the Pegasus Provider SDK. ACE is available from the following site.
|
125 karl 1.1
|
126 mike 1.3 http://ace.cs.wustl.edu/cvsweb/ace-cvs.cgi/ACE_wrappers/
|
127 karl 1.1
|
128 mike 1.3 Currently we are using version 5.1 of ACE_Wrappers both in Linux and Windows.
|
129 karl 1.1
130 http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-5.1.tar.gz
131
|
132 karl 1.5 COMMENTS: Pegasus only uses limited facilities from ACE. We actively
133 discourage the Pegasus team from using other functions of ACE. We expect to
134 eliminate our dependence on ACE as the only TCP tool in the near future.
135 However, today we
|
136 karl 1.4 demand the installation of the complete ACE library. One of the action items
137 for the future is to provide a more limited ACE library and possibly even to
|
138 karl 1.5 provide an environment independent of ACE.
|
139 karl 1.1
140 2. To simplify the building of Pegasus across multiple platforms we have
|
141 mike 1.3 standardized on a set of build tools including: GNUMAKE. We are using GNUAKE
|
142 karl 1.1 4.79.1 successfully both in Windows and Linux environments.
143
144 GNUMAKE is available from
145
146 http://www.gnu.org
147
148 ATTN: I think we need to make our version available on the TOG site.
149
|
150 karl 1.4 COMMENT: Unless other users of Pegasus demand it, we will NOT create any build
151 environment for Pegasus that does not require GNUMAKE (e.g., Visual C++). We
152 are open to other developers who want to contribute other build structures for
|
153 mike 1.3 particular environments.
|
154 karl 1.1
155
156 3. MU.EXE - To minimize the difference between Linux and Windows for GUNMAKE,
|
157 karl 1.4 we have created a utility called MU.exe. This utility is required for Pegasus
158 make with Windows environment. It is provided as an alternative to requiring a
159 number of UNIX utilities (SH, RM, etc.) on the windows platform and
160 effectively provides the functions of these utilities that GNUMAKE needs.
|
161 karl 1.5 MU is not required on UNIX or LINUX platforms.
|
162 karl 1.4
163 NOTE: The binary for MU.EXE is not distributed in the Pegasus bin directory.
164 You must build it separately. MU source code is part of the distribution
165 in the directory src/utils/MU with its own make file. You must compile MU
166 before you initiate the Pegausu make.
|
167 mike 1.3
|
168 karl 1.4 NOTE: We will make a copy of the binary available on the MSB WEB site to
169 eliminate the requirement to build this utility.
|
170 mike 1.3
|
171 karl 1.5 4. FLEX and BISON - These tools were used to develop the compiler, anybody
172 intending to recompile the compiler from scratch will be required to have
173 these tools.
174
175 5. DOC++ - The Pegasus documentation is taken from a combination of text files
176 and the Pegasus header files themselves. This documentation is formatted with
177 DOC++ and GAWK. These tools are required if the documentation is to be
178 recreated but we expect that only the core team will be recreating
179 documentaiton.
180
|
181 mike 1.3
|
182 karl 1.1 The Pegasus Directory Structure
183 ===============================
184
|
185 karl 1.4 Pegasus is distributed as a complete directory structure that should be
|
186 mike 1.3 installed either from one of the snapshots or from CVS.
|
187 karl 1.1
188 This structure is generally as follows
|
189 mike 1.3
|
190 karl 1.4 Pegasus Pegasus Root directory
|
191 karl 1.5
192
193 build Default destination for runtime if PEGASUS_HOME
194 is not specified. Does not exist if PEGASUS_HOME
195 is specified
196
197
198 cgi Source for the Pegasus WEB Based Test client
199 cgi-bin CGI Directories for WEB demonstration.
200 This directory is normally empty but can
201 be populated from the runtime with the make
202 from cgi.
203 htdocs HTML Pages for Pegasus WEB emonstration
204 doc Miscellaneous Pegasus Documents.
|
205 karl 1.4 DevManual Source and build files for developes manual
206 mak General make files (used by other makes)
|
207 karl 1.1 src All Pegasus Source Files
|
208 karl 1.4 ACEExample Test directrory with examples of the use of ACE
209 Clients Source for various test clients and client SDK
210 CGICLIENT Pegasus test client that uses a WEB browser
|
211 karl 1.1 Pegasus
|
212 karl 1.4 Client Pegasus Client API Tests
|
213 karl 1.1 depends
214 tests
215 Common Pegasus Common Functions (C++ source and headers
216 tests Test programs for the common functions
217 Protocol Pegasus Client HTTP/XML Protocol Modules
218 depends
|
219 karl 1.4 Provider Pegasus Provider interface functions
220 Repository Pegasus Repository Interfaces and Simple
|
221 karl 1.5 Repository
|
222 karl 1.1 tests Tests for Repository Functions
223 Server Pegasus Server Modules
|
224 karl 1.5 Providers Pegasus test and required providers
225
|
226 karl 1.1 Utils
|
227 karl 1.5
228 Runtime Directories
229 $PEGASUS_HOME$ Home directory for runtime. All compiler, linker
230 documentation creation, etc. is put here.
231 bin Destination for executable and DLL modules from
232 Pegasus build
233 Manual HTML output of the Pegasus Manual
234 lib Destination for Pegasus LIB modules
235 obj Destination for object modules
236 Repository This Directory containes the created repository
237
|
238 karl 1.1
239 In the near future we will add directories for:
240
241 Service Extensions
|
242 karl 1.5 Servers - Today the server executable is built from /server/test.
|
243 karl 1.1
244 Installation
245 ============
246
|
247 karl 1.4 Pegasus today is provided only as a source distribution. You download compile
248 and use it. Pegasus currently compiles and runs under both Linux and Windows
249 NT environments.
250
251 The installation of Pegasus involves expanding the snapshot distribution
252 files, building the runtime, the test files and test clients, and building the
253 repository.
254
255 NOTE: Since the compiler integration is not complete today, the class
256 repository is populated from the XML defintions for the complete CIM schema.
257 This process is included in the build process so that at the end of a complete
258 build, the class repository is completely populated from the CIM 2.4 release
259 schema.
|
260 karl 1.1
261
262 Building from a Distribution --- General
263 ========================================
264
265 Pegasus is buildable and runnable on either Linux or WIndows Platforms today.
|
266 karl 1.5 It uses a common build system for the two platforms based on build files in
267 each directory, a recursive build strucutre to execute the multiple makes and
|
268 karl 1.1 GUNMAKE.
269
|
270 karl 1.5 Generally we support the followingtargets in our make system:
|
271 karl 1.1
272
|
273 karl 1.5 C:\> make clean - Clean out all objects, libs, and executables
274 C:\> make depend - Create the dependencies
|
275 karl 1.1 C:\> make
|
276 karl 1.5 C:\> make tests - Execute all tests except client server tests
277 C:\> make rebuild - Clean and rebuild including the respository
278 C:\> make world
|
279 karl 1.1
|
280 karl 1.4 The Pegasus Client server tests are executed separately from the above because
281 they require the initiation of separate process for the Pegasus server and
282 Pegasus client. These tests can be executed as follows:
|
283 karl 1.1
284 ATTN: Add the procedure for Client/Server Test start here.
285
286
|
287 karl 1.4 For information on particular installation characteristics, tools, etc. for
288 each platform see
|
289 karl 1.1 the appropriate sections below:
290
291 Generally the build commands are as follows:
292
|
293 karl 1.4 1. There is a Makefile in the Pegasus root. Simply executing make in the
|
294 karl 1.5 Pegasus root directory will make everything. Make rebuild will clean and
295 rebuild everything.
|
296 karl 1.1
|
297 karl 1.4 2. In order to provide a working class repository for Pegasus until the
298 MOF compiler is integrated, There is a utility to load the CIM Schema from
299 XML into the repository. This executes the LoadRepository executable which
300 is defined in
|
301 karl 1.1
|
302 karl 1.4 pegasus/src/Pegasus/Repository/tests/LoadRepository
|
303 karl 1.1
|
304 karl 1.4 with the binary in pegasus/bin. This program will load the CIM XML
305 repository definitions into the class repository.
|
306 karl 1.1
|
307 karl 1.4 3. To test a fresh release, go to the pegasus root and type
|
308 karl 1.1
309 "make world".
310
311
|
312 karl 1.4 This will clean, build dependencies, build binaries, and then run all
313 tests except the Client/Server tests.
|
314 karl 1.1
|
315 karl 1.4 4. To execute the basic test suite that is shipped with pegasus type
|
316 karl 1.1
317 "make tests"
318
|
319 karl 1.5 5. To run the integral unit code tests provided, simply type
|
320 karl 1.1
321 "make tests"
322
|
323 karl 1.4 Running "make -s tests" suppresses extraneous output such as the
324 enter/leave directory messages.
|
325 karl 1.1
|
326 karl 1.4 6. "Make Clean" removes all object and library files from the structure.
|
327 karl 1.1
328 Build Variables
329 ===============
330
|
331 karl 1.5 The build system depends on the following environment variables build set.
332 These variables must be set as part of the installation of the Pegasus source
333 tree before you can compile or run Pegasus.
|
334 karl 1.1
|
335 karl 1.4 PEGASUS_ACE_ROOT - required (points to ACE_wrappers directory). This must
336 be set before you initiate make
|
337 karl 1.1
|
338 karl 1.4 PEGASUS_OS_TYPE - optional. The is currently set to windows. If you build
|
339 karl 1.5 on any platform except windows you must change this before initiating
340 make.
|
341 karl 1.1
|
342 karl 1.5 PEGASUS_ROOT - Root directory of the Pegasus tree.
343 PEGASUS_HOME - Home directory for all of the Pegasus runtime elements.
344 If this does not exist, $PEGASUS_ROOT$/build is assumed.
|
345 karl 1.4
346 COMMENTS: In the future, we will probably automate this more. However,
347 setting these variables today is manual.
|
348 karl 1.1
349
350 The MU Utility
351 ==============
352
|
353 karl 1.4 In order to provide a consistent build structure across multiple platforms, we
354 developed a small utility to provide a consistent set of small utilities
355 across these platforms. The MU utilityis a simple utility that contains many
356 commands. For example:
|
357 karl 1.1
358
359 C:\> mu rm myfile.cpp yourfile.cpp
360
361
362 You may type "mu" to get a list of valid commands. Here are some
363 of them:
364
365
|
366 karl 1.2 rm, rmdirhier, mkdirhier, echo, touch, pwd, copy, move, compare depend
|
367 karl 1.1
368
369 The MU utility supports globing (expansion of wildcards) so
370 you can do things like this:
371
372
373 C:\> mu rm *.obj *.exe
374
|
375 karl 1.4 MU is required to build under the Windows environment.MU is available as part
376 of the distribution of Pegasus.
|
377 karl 1.1
378 Building Pegausu on Linux
379 =========================
380
|
381 karl 1.5 1. Obtain, unpack and build the ACE_Wrappers package for Linux.
382
383 2. Define an environment variable called ACE_ROOT that points to the
384 root of the ACE_WRAPPERS distribution. For example
|
385 karl 1.1
|
386 karl 1.5 IMPORT PEGASUS_ACE_ROOT=\local\ACE_Wrappers
|
387 karl 1.1
|
388 karl 1.5 ATTN: Mike. what is a viable directory for Linux (what do you use)
|
389 karl 1.1
|
390 karl 1.5 3. Define an environment variable PEGASUS_ROOT that points to the
391 root of the Pegasus Distribution
|
392 karl 1.1
393
|
394 karl 1.5 4. Define the environment variable PEGASUS_HOME where you want the
395 runtime elements (executables, objects, libraries, etc.) to go.
396 5. Unpack the ace distribution.
|
397 karl 1.1
398
|
399 karl 1.5 6. Append %PEGASUS_ROOT%/bin to your path
|
400 karl 1.1
|
401 karl 1.5 7. From the %PEGASUS_ROOT% directory build using the make commands
402 defined in the section on General Build.
|
403 karl 1.1
|
404 karl 1.5 make world
405 make tests
|
406 karl 1.1
|
407 karl 1.5 Building Pegasus on NT or Windows 2000 With Microsoft Visual C++
408 ================================================================
|
409 karl 1.1
410 Today we build Pegasus on Windows NT using a set of make files contained
411 in the source distribution, the Microsoft compilers (tested so far with
412 versions 5 and 6) and the GNUMAKE make utility. The following is the basic
413 set up steps for the
414
415
|
416 karl 1.4 1. Setup the environment variables and path for the Micrososft Visual C
|
417 karl 1.5 compiler. Typically this can be done by running the VCVARS32.BAT file
418 supplied with Microsoft Visual C++. (contained in the same directory
419 as cl.exe).
|
420 karl 1.1
421 2. Define an environment variable called ACE_ROOT that points to the
|
422 karl 1.5 root of the ACE_Wrappers distribution. For example:
|
423 karl 1.1
|
424 karl 1.5 C:\> set PEGASUS_ACE_ROOT=c:/ACE_wrappers
|
425 karl 1.1
|
426 karl 1.5 Now append %ACE_ROOT%/bin to the path like this:
|
427 karl 1.1
|
428 karl 1.5 C:\> set path=%path%;%PEGASUS_ACE_ROOT%/bin
|
429 karl 1.1
430 3. Define an environment variable called PEGASUS_ROOT that points to
|
431 karl 1.5 the root of the Pegasus distribution. For example:
|
432 karl 1.1
|
433 karl 1.5 C:\> set PEGASUS_ROOT=c:/pegasus
|
434 karl 1.1
435
|
436 karl 1.5 4. Setup the PEGASUS_HOME environment variable
437 set PEGASUS_HOME=c:/PegasusRun
|
438 karl 1.1
|
439 karl 1.5 Now append %PEGASUS_HOME%/bin to your path like this:
|
440 karl 1.1
|
441 karl 1.5 set path=%path%;%PEGASUS_HOME%/bin
|
442 karl 1.1
|
443 karl 1.5 5. Unpack and build the ACE_Wrappers distribution for windows.
|
444 karl 1.1
|
445 karl 1.5 As an example, we created a file called %ACE_ROOT%/ace/config.h
446 containing the following:
|
447 karl 1.1
|
448 karl 1.5 #include "ace/config-win32.h"
|
449 karl 1.1
|
450 karl 1.5 and then opened this DSW file in MSVC++ IDE:
|
451 karl 1.1
|
452 karl 1.5 %ACE_ROOT%/ace/ace.dsw
|
453 karl 1.1
|
454 karl 1.5 From the build menu we picked "ace.dll". For me it built without
455 complaint.
|
456 karl 1.1
|
457 karl 1.5 The ACE package can be built in several configurations:
|
458 karl 1.1
|
459 karl 1.5 ace.dll - The basic package without debugging
460 aced.dll - debugging added to the basic package
461 acemfc.dll - ACE with Microsoft MFC support
462 acemfcd.dll - The ACE MFC version with debugging.
|
463 karl 1.1
|
464 karl 1.5 ace.dll is used for the server build acemfc is used for the client
465 builds.
|
466 karl 1.1
|
467 karl 1.5 NOTE: In the near future we will be building debugging options into
468 Pegasus and at that time the aced and acemfcd libraries will also be
469 required.
|
470 karl 1.1
|
471 karl 1.5 Each library can be built separately from Microsoft Visual C++.
|
472 karl 1.1
|
473 karl 1.5 6. Unpack the Pegasus distribution. On Windows systems, PKzip25 or
474 WINZIP can be used. Be certain to use the option that expands the
475 directory tree of the files. This expansion will create a directory
476 called ./pegasus
|
477 karl 1.1
|
478 karl 1.5 If you are using pkzip25.exe do this:
479 C:\> pkzip25 -extract -recurse -directories pegasus.zip
|
480 karl 1.1
|
481 karl 1.5 This will create a directory tree called ./pegasus under the
482 current directory.
|
483 karl 1.1
484
|
485 karl 1.5 7. Change directory to %PEGASUS_ROOT% and type "make world". See the
486 general build section for the full set of make commands.
|
487 karl 1.1
|
488 karl 1.5 This builds Pegasus and all of its examples.
489
490 7. To verify that it built okay, run the tests
491
492 make tests
|
493 karl 1.1
494 Installing the Pegasus HTML Test Client
495 =======================================
496
|
497 karl 1.4 This is a separate test tool that allows Pegasus requests to be initiated from
498 any WEB browser and that uses a WEB browser, CGI scritps and HTML pages for
499 the formating and connections. It requires a WEB server, etc. The
500 instructions for setting up this environment are maintained in a separate
501 readme in the CGI directory.
|
502 karl 1.1
503 Development with Pegasus and Pegasus Tools
504 ==========================================
505
506 ATTN: This section needs to be completed. It should reference the more
507 complete documentation
508
509 ===================
510 Documentation
511
|
512 karl 1.4 The documentation is currently in preperation. The preliminary documentation
513 is not provided with this snapshot but is avialable from the OpenGroup Pegasus
514 WEB pages. The current documentation is maintained both as a manual created
|
515 karl 1.5 under the tool DOC++ in the runtime subdirectory manual/html and as other
516 miscelaneous documentation in the doc directory.
|
517 karl 1.4
518 Note that the Pegasus WEB site at The Open Group will be the source of most
519 documentation in the future and today is the source of most discussion and
520 design documentation.
|
521 karl 1.1
522 Participate!
523 ============
|
524 karl 1.4 We are looking for people who want to join the Pegasus work group and
525 contribute to effort of getting this Pegasus off the ground. Please send
526 email for details to k.schopmeyer@opengroup.org or m.kirk@opengroup.org or
527 m.brasher@opengroup.org
|
528 karl 1.5
529
|
530 karl 1.4
531
532
|
533 karl 1.1
534
535
536
537
538
539
540
541
542
543
544
|