Pegasus - A Manageability Services Broker for the DMTF CIM/WBEM Standards Author: Mike Brasher, Karl Schopmeyer $Log: README.TXT,v $ Revision 1.1 2001/01/09 16:02:09 karl Initial revision Tagline: Pegasus is an object manager for DMTF CIM objects written in C++ and supported but The Open Group Pegasus is an object manager for DMTF CIM objects It is written in C++ and includes the Object manager, a set of defined interfaces, and SDKs for both client, providers, and services extensions. It is maintained consistent with the DMTF CIM and WBEM specifications except for any exceptions noted in the documentation. This distribution represents a work in progress towards building a Pegasus release. Pegasus is open source and is covered under the following licnese. This version is incomplete and is directed towards evaluators and developers of the Pegasus Architecture. Pegasus is being developed and maintained under the auspices of The Open Group. Pegasus is maintained under the license defined in the doc directory (LICENSE) of this release. This licensing is intended to support as wide a distribution as possible with minimal demands on the users. This distribution represnts a snapshot of the current work. Currently Pegasus is in phase 1 of a multiphase development project. This snapshot is primarily for developers and for evaluation of the project. More information and on this project, access to the CVS, and documentation on Pegasus is available from the OpenGroup WEB site. There are separate files in the release for History of releases - HISTORY What's new for this release - WHATSNEW What's Broken - BUGS In addition, the roadmap for Pegasus and further information on the project is available on The Opengroup Pegasus WEB Site. http://www.opengroup.org/MSB Availability of Pegasus ======================= Pegasus is distributed as open source. Today the distribution is limited because we want to reach a predefined level of development before making the project publically available. The move from limited to open distribution will be a decision of the Pegasus development team and The Open Group and should occur before March 2001. To get on the distribution list for Pegasus today, send an email to m.kirk@opengroup.org or k.schopmeyer@opengroup.org Pegasus Dependencies =========== We have worked to minimize the dependence of Pegasus on other software packages and tools. Currently Pegasus has the following dependencies 1. ACE_Wrappers - The ACE Wrappers package is used for communication and some low level functions within the MSB, the Pegasus client SDK, and the Pegasus Provider SDK. ACE is available from the following site. http://ace.cs.wustl.edu/cvsweb/ace-cvs.cgi/ACE_wrappers/ Currently we are using version 5.1 http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-5.1.tar.gz 2. To simplify the building of Pegasus across multiple platforms we have stnadardized on a set of build tools including: GNUMAKE. We are using GNUAKE 4.79.1 successfully both in Windows and Linux environments. GNUMAKE is available from http://www.gnu.org ATTN: I think we need to make our version available on the TOG site for now. 3. MU.EXE - To minimize the difference between Linux and Windows for GUNMAKE, we have created a utility called MU.exe. The source for this is available with the distribution and the binary is distributed in the bin directory of the the snapshots for now. Installation ============ Pegasus currently compiles and runs under both Linux and Windows NT environments. The installation of Pegasus involves expanding the snapshot distribution files and building the runtime, the test files and test clients, and building the repository. NOTE: Since the compiler integration is not complete today, the class repository is populated from the XML defintions for the complete CIM schema. This process is included in the build process so that at the end of a complete build, the class repository is completely populated from the CIM 2.4 release schema. Building from a Distribution --- General ======================================== Pegasus is buildable and runnable on either Linux or WIndows Platforms today. It uses a common build system for the two platforms based on build files and GUNMAKE. Generally we support four targets in our make system: C:\> make clean C:\> make depend C:\> make C:\> make tests For information on particular installation characteristics, tools, etc. for each platform see the appropriate sections below: Generally the build commands are as follows: 1. There is a Makefile in the Pegasus root. Simply executing make in the Pegasus root directory will make everything. 2. In order to provide a working class repository for Pegasus until the MOF compiler is integrated, There is a utility to load the CIM Schema from XML into the repository. This executes the LoadRepository executable which is defined in pegasus/src/Pegasus/Repository/tests/LoadRepository with the binary in pegasus/bin. This program will load the CIM XML repository definitions into the class repository. 3. To test a fresh release, go to the pegasus root and type "make world". This will clean, build dependencies, build binaries, and then run all tests except the Client/Server tests. 4. To execute the basic test suite that is shipped with pegasus type "make tests" 5. To run the Client/Server tests provided, simply type "make tests" Running "make -s tests" suppresses extraneous output such as the enter/leave directory messages. 6. "Make Clean" removes all object and library files from the structure. The MU Utility ============== In order to provide a consistent build structure across multiple platforms, we developed a small utility to provide a consistent set of small utilities across these platforms. The MU utilityis a simple utility that contains many commands. For example: C:\> mu rm myfile.cpp yourfile.cpp You may type "mu" to get a list of valid commands. Here are some of them: echo, rm, rmdirhier, mkdirhier, copy, pwd, depend The MU utility supports globing (expansion of wildcards) so you can do things like this: C:\> mu rm *.obj *.exe MU is required to build under the Windows environment.MU is available as part of the distribution of Pegasus. Building Pegausu on Linux ========================= 1. Obtain, unpack and build the ACE_Wrappers package for Linux. 2. Define an environment variable called ACE_ROOT that points to the root of the ACE_WRAPPERS distribution. For example IMPORT ACE_ROOT=\local\ACE_Wrappers ATTN: Mike. what is a viable directory for Linux (what do you use) 3. Define an environment variable PEGASUS_ROOT that points to the root of the Pegasus Distribution 4. Append %PEGASUS_ROOT%/bin to your path 5. Unpack the ace distribution. ATTN: Unpack with what since ZIP. 5. Build using the make commands defined in the section on General Build. make world make tests Building Pegasus on NT or Windows 2000 With Visual C++ ======================================================= Today we build Pegasus on Windows NT using a set of make files contained in the source distribution, the Microsoft compilers (tested so far with versions 5 and 6) and the GNUMAKE make utility. The following is the basic set up steps for the 1. Setup the environment variables and path for the Micrososft Visual C compiler. Typically this can be done by running the VCVARS32.BAT file supplied with Microsoft Visual C++. (contained in the same directory as cl.exe). 2. Define an environment variable called ACE_ROOT that points to the root of the ACE_Wrappers distribution. For example: C:\> set ACE_ROOT=c:/ACE_wrappers Now append %ACE_ROOT%/bin to the path like this: C:\> set path=%path%;%ACE_ROOT%/bin 3. Define an environment variable called PEGASUS_ROOT that points to the root of the Pegasus distribution. For example: C:\> set PEGASUS_ROOT=c:/pegasus Now append %PEGASUS_ROOT%/bin to your path like this: set path=%path%;%PEGASUS_ROOT%/bin 4. Unpack and build the ACE_Wrappers distribution for windows. As an example, we created a file called %ACE_ROOT%/ace/config.h containing the following: #include "ace/config-win32.h" and then opened this DSW file in MSVC++ IDE: %ACE_ROOT%/ace/ace.dsw From the build menu we picked "aced.dll". For me it built without complaint. BUG: there is still one open problem that has not been resolved. With the Visucal C++ version 6 compiler, the ace libraries default to acemfc.dll With the version 5 visual C, apparently they default to the names ace.dll or aced.dll (debug verions We will correct this in a future snapshot. 5. Unpack the Pegasus distribution. On Windows systems, PKzip25 or WINZIP can be used. Be certain to use the option that expands the directory tree of the files. This expansionwill create a directory called ./pegasus If you are using pkzip25.exe do this: C:\> pkzip25 -extract -recurse -directories pegasus.zip This will create a directory tree called ./pegasus under the current directory. ATTN: Define for Linux also 6. Change directory to %PEGASUS_ROOT% and type "make world". See the general build section for the full set of make commands. This builds Pegasus and all of its examples. 7. To verify that it built okay, run the tests make tests Development with Pegasus and Pegasus Tools ========================================== ATTN: This section needs to be completed. It should reference the more complete documentation =================== Documentation The documentation is currently in preperation. The preliminary documentation is not provided with this snapshot but is avialable from the OpenGroup Pegasus WEB pages. Participate! ============ We are looking for people who want to join the effort of getting this next release off the ground. Please send me email for details.