summaryrefslogtreecommitdiffstats
path: root/README.html
blob: 736f3685ad13785f1f54b5854f96d2628b5ebaf6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="Content-Language" content="en-us">
  <meta name="GENERATOR" content="Microsoft FrontPage 6.0">
  <meta name="ProgId" content="FrontPage.Editor.Document">
  <meta http-equiv="Content-Type"
 content="text/html; charset=windows-1252">
  <title>OpenPegasus README</title>
  <link rel="stylesheet"
 href="http://www.opengroup.org/stylesheets/info1+margins.css">
  <style>
<!--
table.MsoNormalTable
{mso-style-parent:"";
font-size:10.0pt;
font-family:"Times New Roman"}
-->
  </style>
</head>
<body>
<hr>
<p><b>Abstract:</b>&nbsp; Installation, build,
and operation information on
the OpenPegasus . Note that if this readme
conflicts with the documentation in the release notes or interface
definition documents for a particular release, those documents should
be considered authoritative. This is a simplified
overview to act as an
introduction to OpenPegasus.</p>
<hr>
<p align="center"><b><font size="5">OpenPegasus
- A Manageability
Services Broker for the DMTF CIM/WBEM Standards
</font></b></p>
<p align="left"><b>Tagline:</b> OpenPegasus is
an object manager for
DMTF CIM objects written in C++
and hosted by The Open Group </p>
<a href="#Overview">OpenPegasus Overview</a>
<blockquote style="margin-top: 0pt; margin-bottom: 0pt;"> <a
 href="#avail_of_peg">Availability</a><br>
  <a href="#peg_sup_plat">Supported Platforms</a><br>
  <a href="#peg_dep">Dependencies</a><br>
  <a href="#cmnd">Commands</a><br>
  <a href="#docs">Documentation</a><br>
  <a href="#part">How to Participate</a><br>
</blockquote>
<a href="#inst_peg">Installing OpenPegasus</a>
<blockquote style="margin-top: 0pt; margin-bottom: 0pt;"><a
 href="#download">Download or Checkout</a><br>
  <a href="#vfy_req_sw">Verify Dependencies</a><br>
  <a href="#set_envt_var">Set the Environment Variables</a><br>
  <a href="#bld_peg">Build the Executables</a><br>
  <a href="#pop_peg_rep">Populate the Repository</a><br>
  <a href="#reg_prov">Register Providers</a><br>
  <a href="#note_bld_peg_lnx">Notes
about Building on Linux</a><br>
  <a href="#bld_peg_win">Notes about Building
on Windows</a><br>
  <blockquote style="margin-top: 0pt; margin-bottom: 0pt;">
    <a href="#mu_utility">The MU Utility</a><br>
  </blockquote>
  <a href="#note_bld_peg_ssl">Notes about
Building with SSL</a><br>
</blockquote>
<a href="#test">Testing an OpenPegasus installation</a><br>
<blockquote style="margin-top: 0pt; margin-bottom: 0pt;"> <a
 href="#test_icu">Testing with ICU enabled</a><br>
</blockquote>
<hr>
<h1><a name="Overview">OpenPegasus Overview</a>
</h1>
<div style="margin-left: 40px;"><b>OpenPegasus </b>(also
referred to
as <b>Pegasus</b>) is an open-source CIM Server for DMTF
CIM objects.
It is
written
in C++ and includes the Object manager (CIMOM), a set of defined
interfaces, an implementation of the CIM Operations over HTTP
operations
and their cimxml HTTP encodings, and Interface libraries
for both clients and providers. It is maintained
to be compliant with
the DMTF CIM and WBEM specifications with
exceptions
noted in the documentation.<br>
<br>
<span class="norm"></span>OpenPegasus includes
components for: <br>
</div>
<blockquote>
  <ol style="margin-left: 40px;">
    <li>A DMTF compliant CIM Server that processes CIM
operations, CIM
Indications, and
includes class and instance repositories and interfaces for creating
CIM
Providers and CIM Clients.</li>
    <li>Provider interfaces so that providers may be build in
multiple
languages (i.e.
C++, C, Java).</li>
    <li>A number of CIM Providers.</li>
    <li>A MOF compiler.</li>
    <li>A number of CIM Clients to provide usage examples, CIM
Server
test functions,
and administrative
functions.</li>
    <li>More complete information on the exact functions
and their functional state is available from the Release Notes
(pegasus/ReleaseNotes.htm) and the OpenPegasus <a
 href="http://www.openpegasus.org/page.tpl?CALLER=index.tpl&amp;ggid=799">Feature
Status Page</a>.</li>
  </ol>
</blockquote>
<div style="margin-left: 40px;">OpenPegasus is open source
and is
covered under the MIT open-source
license.
</div>
<p style="margin-left: 40px;">OpenPegasus is being
developed and
maintained under the auspices of
The
Open
Group.&nbsp; OpenPegasus is maintained under the license defined in
the
doc
directory of this release.&nbsp; The specific file is: <font
 style="color: rgb(0, 0, 0);">pegasus/doc/license.txt</font>.&nbsp;
This licensing is intended to support as
wide a
distribution as possible with minimal demands on the users.
</p>
<p style="margin-left: 40px;">More information on this
project, access
to the CVS, and
documentation<span style="color: rgb(255, 0, 0);"><span
 style="text-decoration: line-through;"></span></span>
is available
from the Ope<span style="color: rgb(255, 0, 0);"><span
 style="text-decoration: line-through;"></span></span>nPegasus
web
site.
</p>
<p style="margin-left: 40px;">&nbsp;&nbsp;&nbsp;
<a target="blank" href="http://www.openpegasus.org/">http://www.openpegasus.org</a><br>
</p>
<p style="margin-left: 40px;">Note
that all references in this readme to files in the OpenPegasus source
tree are of the form pegasus/..., where "pegasus" is the top-level
directory and also the name of the OpenPegasus module in the Pegasus
CVS
repository. There are also&nbsp; other CVS modules for the
OpenPegasus Java client (pegasus-JavaCIMClient)
and for unsupported components and utilities for Pegasus that may be
checked out
separately.&nbsp; You can use
<a href="http://cvs.opengroup.org/cgi-bin/viewcvs.cgi/">viewCVS</a>
to view the
Pegasus CVS tree<br>
</p>
<h2><a name="avail_of_peg">Availability</a></h2>
<div style="margin-left: 40px;">OpenPegasus is distributed
as open
source under the MIT open-source
license. The distribution is available via CVS, and as snapshot images
in
tar, zip, and (self-extracting) exe
file
formats on the OpenPegasus web site.</div>
<ol style="color: rgb(0, 0, 0);">
OpenPegasus can be obtained via any of the following:<br>
  <ol>
    <li>Released tarballs (see <a
 href="http://www.openpegasus.org/page.tpl?CALLER=page.tpl&amp;ggid=392">ZIP/GZ/EXE
link for this release</a>)</li>
    <li>CVS (See <a
 href="http://www.openpegasus.org/protected/page.tpl?CALLER=index.tpl&amp;ggid=667">CVS
code repository</a> for
more information)</li>
    <li>Linux RPMs
(see <a
 href="http://www.openpegasus.org/page.tpl?CALLER=page.tpl&amp;ggid=392">RPM
link for this release</a>)</li>
  </ol>
</ol>
<p style="margin-left: 40px;"><span class="norm"></span><font
 style="color: rgb(0, 0, 0);">CVS
write accounts are managed by Martin Kirk of The Open Group&nbsp;</font>
(<a href="mailto:%28k.m.kirk@opengroup.org">m.kirk@opengroup.org</a>)&nbsp;
</p>
<h2><a name="peg_sup_plat">Supported Platforms</a></h2>
<p style="margin-left: 40px;">OpenPegasus is regularly
tested against a
variety of platforms by the
development group.&nbsp; The results of the nightly tests can be
found
here on our <a
 href="http://cvs.opengroup.org/cgi-bin/pegasus-build-status.cgi">Nightly
Build and Test Status</a> page.&nbsp; The Release Notes for each
release&nbsp;
(pegasus/ReleaseNotes.htm) provide additional details
regarding the platforms, compilers, etc. for the current release.<br>
</p>
<h2><a name="peg_dep">Dependencies</a></h2>
<p style="margin-left: 40px;">
We have worked to minimize the dependence of OpenPegasus on other
software
packages and tools. Currently OpenPegasus has the following
dependencies. Note that all of the dependencis listed below are
required only if selected options are enabled except for GNUMAKE which
is the required make tool:
</p>
<ol style="margin-left: 40px;">
  <li><b>GNUMAKE</b> - To simplify the building of
OpenPegasus across
multiple platforms we
have standardized on a set of build tools including: GNUMAKE. We are
using GNUMAKE 3.79.1 successfully both in Windows and Linux
environments. It is available from <a href="http://www.gnu.org">http://www.gnu.org</a>.
The windows version&nbsp; of GNUMAKE is available on the Pegasus
web site <a
 href="http://www.openpegasus.org/pb/protected/index.tpl?CALLER=index.tpl">
tools page</a>.</li>
  <li><b>FLEX</b> and <b>BISON</b> -
These tools were used to develop the MOF
compiler and WQL and CQL parsers.&nbsp; These tools are required <b>ONLY</b>
for
development of the parsers, not for building OpenPegasus.&nbsp;
Bison
version 2.3 or later and flex version 2.5.4 or later are required.</li>
  <li><b>Doxygen </b>- The OpenPegasus documentation
is taken from a combination of text files and header files themselves.
This documentation is formatted with Doxygen and GAWK.&nbsp; This
is required <b>ONLY</b> if you want to build documentation
from the source tree.&nbsp; <span class="norm"></span><font
 style="color: rgb(0, 0, 0);">These tools are required to
build the
interface documentation set.</font> </li>
  <li><b>ICU Internationalization libraries</b> -
These libraries are
used as the basis for message catalogs for message
internationalization. See the ICU website
(<a href="http://icu.sourceforge.net/">http://icu.sourceforge.net</a>)
for more information on these
libraries.<span style="color: rgb(255, 0, 0);"> These
libraries are used ONLY if you set the requisite environment variable (
PEGASUS_HAS_ICU) to use ICU</span><br>
  </li>
  <li><b>OpenSSL
    </b>- If it
is intended to use SSL on the
communication protocol, the OpenSSL libraries are required (<a
 href="http://www.openssl.org">http://www.openssl.org</a>).</li>
  <li><span style="font-weight: bold;">OpenSLP</span>
- If you choose
to use
OpenSLP as your choice of SLP implementations, then it will need to be
installed and available to OpenPegasus. Refer to the
PEGASUS_USE_OPENSLP and PEGASUS_OPENSLP_HOME build variables in the
doc/BuildAndReleaseOptions.html file, and the OpenSLP web site (<a
 href="http://www.openslp.org">http://www.openslp.org</a>).</li>
  <li><span style="font-weight: bold;">zlib
    </span>- If you choose to
enable the compressed repository feature with the
PEGASUS_ENABLE_COMPRESSED_REPOSITORY build variable, you will need to
install the gzip (GNU zip) compression utility. Refer to
readme.compressed_repository in OpenPegasus source tree, and the gzip
web site (<a style="color: rgb(204, 51, 204);"
 href="http://www.gzip.org">http://www.gzip.org</a>).</li>
  <li><span style="font-weight: bold;">sqlite</span>
- If you choose to enable the use of sqlite for the repository, refer
to the doc/BuildAndReleaseOptions.html file for the defintion of the
build variables and the sqlite implementation which may be obtained
either as part of a standard distribution or from <a
 href="http://www.sqlite.org">http://www.sqlite.org</a>.</li>
</ol>
<p style="margin-left: 40px;"><span style="font-weight: bold;">NOTE</span>:
A set of the required
tools for building on the Windows platform is available on the
OpenPegasus <a
 href="http://www.openpegasus.org/pb/index.tpl?CALLER=index.tpl">Tools</a>
web page.<br>
</p>
<h2><a name="cmnd">Commands</a></h2>
<p style="margin-left: 40px;">
Pegasus includes the server which can be controlled from the command
line and a
set of clients that provide adminstrative functions</p>
<p style="margin-left: 40px;">
The manpages for each of the commands are in the pegasus/rpm/manLinux/
directory (from CVS). </p>
<p style="margin-left: 40px;">To see simple help for each
command,
invoke it with the "--help" option.<br>
</p>
<div style="margin-left: 40px;"><span style="font-weight: bold;">Some
of
the basic commands:</span>
<br>
</div>
<ul>
  <ul>
    <li><span style="font-family: monospace;">cimserve</span>r
(Start the server
cimserver)</li>
    <li><span style="font-family: monospace;">cimserver
-s</span>&nbsp; (Shuts down the cimserver)</li>
    <li><span style="font-family: monospace;">cimserver
traceLevel=4 traceComponents=ALL</span>&nbsp;
(Starts server
with
config flags)</li>
  </ul>
  <ul>
    <li><span style="font-family: monospace;">cimprovider
-l -s</span>&nbsp; (Lists providers and their
status)</li>
    <li><span style="font-family: monospace;">cimprovider
-e -m OperatingSystemModule</span>&nbsp;
(Enables the
OperatingSystem provider)</li>
    <li><span style="font-family: monospace;">cimuser
-a -u guest -w &lt;ThePassword&gt;</span> (Adds
the user <span style="font-style: italic;">guest</span>
with specified password)<br>
    </li>
    <li><span style="font-family: monospace;">cimuser
-l</span>&nbsp; (Lists the users )</li>
    <li><span style="font-family: monospace;">cimconfig
-l -c</span> (Lists the
current config options and their current values)<br>
    </li>
  </ul>
</ul>
<div style="margin-left: 40px;"><span style="font-weight: bold;">NOTES</span>:
<br>
</div>
<blockquote>
  <ol style="margin-left: 40px;">
    <li>Refer to the admin guide in
pegasus/doc/Admin_Guide_Release.pdf
for
more information about administering the OpenPegasus CIM Server.</li>
    <li>There are differences between Windows and other
platforms in
starting the CIMserver as a daemon/service. Whereas most supported
platforms use
the OpenPegasus <span style="font-weight: bold;">daemon</span>
configuration option to start the CIM Server as a daemon, on
Windows it
must be specifically installed as a service (ex. cimserver -install)
and then
started as a service (cimserver -start). The cimserver --help option
explains the
exact format of the start and stop options.</li>
    <li>The cimuser command is used to manage OpenPegasus users
only when
the CIM Server is compiled without the PEGASUS_PAM_AUTHENTICATION
environment variable defined. See <a
 href="http://www.openpegasus.org/pp/uploads/40/16781/PEP308_RecommendedReleaseOptions.htm">
PEP 308</a> for more information on these configuration options.<br>
    </li>
  </ol>
</blockquote>
<a name="docs">Documentation</a>
<p style="margin-left: 40px;">Much
of
OpenPegasus
is documented in the <a
 href="http://www.openpegasus.org/pp/index.tpl?CALLER=index.tpl">Pegasus
Enhancement Process (PEPs)</a> which are the basis for approval
of
OpenPegasus functionality, changes, plans, etc.&nbsp; The approved
PEPs
are publicly available on the OpenPegasus web site.<span
 style="color: rgb(255, 0, 0);"><br>
</span></p>
<p style="margin-left: 40px;">Other
documentation available
is an api document (creatable
from the
source tree, see pegasus/doc/apidoc) and other miscellaneous
documentation
in the CVS doc directory and the pegasus CVS root as readme files.
Also, there is a set of Release Notes for each
release in the OpenPegasus root
source directory of CVS and as a Pegasus PEP.</p>
<h2><a name="part">How to Participate</a></h2>
<p style="margin-left: 40px;"><font style="color: rgb(0, 0, 0);">Contributors
are welcome to participate in the OpenPegasus development effort. Join
the mailing list by going to the <a
 href="http://www.openpegasus.org/mailinglists.tpl?CALLER=index.tpl">Mailing
Lists</a> web page from the OpenPegasus site.</font></p>
<h1>
<a name="inst_peg">Installing OpenPegasus</a> </h1>
<h2><a name="download"></a>Download or Checkout</h2>
<p style="margin-left: 40px;">Refer to the <a href="#avail_of_peg">Availability</a>
section for instructions on obtaining source code.<br>
</p>
<p style="margin-left: 40px;">If you want to install
pre-built Pegasus
executables instead of building from source code, then refer to the <a
 href="http://www.openpegasus.org/pr/">RPM installation
instructions</a>.<br>
</p>
<h2><strong><strong><a name="vfy_req_sw"></a>Verify
Dependencies</strong></strong><strong><strong><span
 style="font-weight: normal;"></span></strong></strong></h2>
<p style="margin-left: 40px;"><strong><strong><span
 style="font-weight: normal;">Be</span></strong></strong>fore
you build, install, or run OpenPegasus, be sure you have the proper set
of software
it depends on.&nbsp; Refer to the section <a href="#peg_dep">Dependencies</a>
for
the complete list.<br>
</p>
<strong></strong>
<h2><a name="set_envt_var"><strong>Set the
Environment
Variables</strong></a></h2>
<p style="margin-left: 40px;">Before building, installing,
or running
OpenPegasus, some environment variables may
have to be defined or updated.&nbsp; See PEP 292 for the full list
of
environment variables and configuration options for OpenPegasus. The
minimum set is:<br>
</p>
<ul>
  <ul>
    <li>PEGASUS_ROOT -- The directory
containing the OpenPegasus root directory from CVS.</li>
    <li>PEGASUS_HOME -- The directory
that will contain all output from building and running OpenPegasus, it
can be the same as PEGASUS_ROOT if desired.</li>
    <li>PEGASUS_PLATFORM -- The
platform on which OpenPegasus is being built.</li>
  </ul>
</ul>
<div style="margin-left: 40px;">There are a significant number of
environment variables that control the compile and test of features in
the OpenPegasus package in addition to the 3 variables described above.
These variables are documented in the Pegasus documentation in CVS (see
the pegasus/doc directory).</div>
<h2><a name="bld_peg"></a>Build the Executables<br>
</h2>
<div style="margin-left: 40px;">OpenPegasus
is compiled and linked using a make structure that recurses through
the&nbsp; OpenPegasus source tree.<br>
<font><font color="RED"><span
 style="color: rgb(0, 0, 0); font-weight: bold;"><br>
Makefile commands
</span></font></font><br>
<br>
OpenPegasus
includes several Makefiles that enable
you to quickly build or
refresh files for the server, clients, providers, test cases, and
repository. To use these Makefiles, type "make" followed by one of the
supplied targets.&nbsp; <br>
<br>
For more information on the
available make targets, enter "make usage" from the PEGASUS_ROOT
directory. A recommended minimum set
to know are:
<br>
<ul>
  <li>usage -- Explains the
available make targets in some detail.</li>
  <li>new -- Clean out all
objects, libs, executables, and the repository.</li>
  <li>build -- Builds
dependencies, compiles, links, and installs the server. After this
OpenPegasus is ready to run.</li>
  <li>alltests - Builds the
repository entries and other resources required by the tests, and then
executes all automated tests.</li>
  <li>world - Builds the complete environment and runs the test suite.</li>
</ul>
For a comprehensive
list of&nbsp; the
make targets, refer to <big><span
 style="font-family: Courier New,Courier,monospace;">pegasus/Makefile</span></big>
at the top of the OpenPegasus source directory.<br>
</div>
<ul>
</ul>
<h2><a name="pop_peg_rep">Populate the Repository</a>
</h2>
<p style="margin-left: 40px;">
Before using OpenPegasus you must populate the repository. Typically,
this
is done during the build process by the 'make repository' target.
However,
you
can also compile MOF (Managed Object Format) code manually with the
cimmof compiler.<br>
</p>
<p style="margin-left: 40px;">The 'make repository' target
in the makefile <big><span
 style="font-family: Courier New,Courier,monospace;">pegasus/Makefile</span></big>
performs several functions including:
</p>
<ul>
  <li><span style="color: rgb(0, 0, 0);">Removes
the existing
repository (if one exists).</span><br>
  </li>
  <li>Generates the default
CIM Schema (defined in pegasus/mak/config.mak)
in the repository (skeleton of CIM
objects).&nbsp; Refer to PEGASUS_CIM_SCHEMA environment
variable&nbsp; in&nbsp; Pegasus PEP 308&nbsp; to
set&nbsp; alternate schema versions.<br>
  </li>
  <li>Loads
schema for CIM Server functions (shutdown, add users, etc) and
CIM indications
(SNMP, Events, Alert, Threshold, etc)
internal to Pegasus. </li>
  <li>Registers included CIM Providers (libOSProvider.so,
libDNSProvider.so, &hellip; ) in OpenPegasus (which are located in
src/Providers) <br>
  </li>
</ul>
<h2><a name="reg_prov">Register
Providers</a></h2>
<p style="margin-left: 40px;">OpenPegasus registers
Providers using a
set of provider registration classes
encoded in MOF. This classes are proprietary to OpenPegasus
today.&nbsp; </p>
<p style="margin-left: 40px;">Registration
is performed by creating instances of the
registration classes that represent the provider module, providers,
capabilities, etc. to be
registered.&nbsp; The easiest way to create a new
registration today is to copy from one of the existing registration
MOFs.&nbsp; See the <big><span
 style="font-family: Courier New,Courier,monospace;">pegasus/src/Providers/sample/Load</span></big>
directory for examples of
several registration instance implementations that do work with
OpenPegasus
today.</p>
<p style="margin-left: 40px;">Registration may be performed by creating
compiling the registration mof with either the on-line or off-line
Pegasus mof compiler. &nbsp;It is recommended that providers be
registered with the on-line compiler because this allows pegasus to
validate the registration information.</p>
<h2><a name="note_bld_peg_lnx">Notes about
Building on Linux </a></h2>
<p style="margin-left: 40px;">
To build OpenPegasus on Linux, ensure that you you have the necessary
environment
variables set (eg. PEGASUS_HOME, PEGASUS_ROOT,
PEGASUS_PLATFORM).&nbsp;
For
32 bit Linux, the definition of PEGASUS_PLATFORM is normally
LINUX_IX86_GNU.&nbsp;&nbsp; For 64 bit IX86&nbsp; Linux the
definition
of
PEGASUS_PLATFORM is normally LINUX_IX86_64_GNU.&nbsp; Use the g++
compiler to compile and link the executables. All of the supported
platform
definitions are defined in <big><span
 style="font-family: Courier New,Courier,monospace;">pegasus/mak</span></big>
as&nbsp; make files with the
definition:</p>
<p style="margin-left: 40px;">&nbsp; &nbsp; <span
 style="font-family: monospace;">&nbsp; &nbsp;
platform_&lt;operatingSystem&gt;_&lt;architecture&gt;_&lt;compiler&gt;</span></p>
<p style="margin-left: 40px;">The
&lt;operatingSystem&gt;_&lt;architecture&gt;_&lt;compiler&gt;
component is what forms the PEGASUS_PLATFORM environment variable so
that the
appropriate platform make file can be found during the build process.<br>
</p>
<h2><a name="bld_peg_win">Notes
about Building on Windows </a></h2>
<p style="margin-left: 40px;">
Use of Windows 2000 SP3 or later is recommended.&nbsp; OpenPegasus
is
regularly tested on mulitple windows platforms.</p>
<p style="margin-left: 40px;">We build OpenPegasus
on Windows
using a set of Makefiles
contained
in the source distribution, the Microsoft compilers (DevStudio 5.x is
not supported, Visual Studio 6.0 (SP5) or later is supported) and the
GNUMAKE
make utility.&nbsp; Note that you MUST have the OpenPegasus <a
 href="#mu_utility">mu.exe </a>utility compiled and
available
before trying to compile OpenPegasus on the normal windows platform
(This utility allows use of unix command line semantics for certain
operations in windows).
The
following is the basic setup steps for the environment.
</p>
<p style="margin-left: 40px;">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).
</p>
<p style="margin-left: 40px;">For Windows, try the
following for an
example environment: </p>
<blockquote>
  <pre style="margin-left: 40px;"><span style="font-family: monospace;">REM call the standard Microsoft .bat for VC 6 setup. </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">call 'C:/Program Files\Microsoft Visual Studio\VC98\Bin\Vcvars32.bat' </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">REM Set debug to something if you want to compile in debug mode </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">set PEGASUS_DEBUG=true </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">REM set PEGASUS_ROOT to top of source tree </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">set PEGASUS_ROOT=C:/cimom/pegasus </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">REM (Note: </span><span
 style="font-family: monospace;" class="norm">The '/' characters are intentional and required by the OpenPegasus build system). <br>REM     Also the disk designator (C:) is required for at least some newer versions of the Microsoft<br>REM&nbsp;    compilers to avoid confusion between options and paths<br></span><span
 style="font-family: monospace;">REM set PEGASUS_HOME to where you want repository and executables, it can be the same as PEGASUS_ROOT</span><br
 style="font-family: monospace;"><span style="font-family: monospace;">set PEGASUS_HOME=%PEGASUS_ROOT% </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">REM set PEGASUS_PLATFORM for Windows</span><br
 style="color: rgb(255, 0, 0); font-family: monospace;"><span
 style="font-family: monospace;">set PEGASUS_PLATFORM=WIN32_IX86_MSVC</span><br
 style="font-family: monospace;"><span style="font-family: monospace;">REM setup the path to the runtime files. </span><br
 style="font-family: monospace;"><span style="font-family: monospace;">set path=%path%;%PEGASUS_HOME%\bin </span><br></pre>
</blockquote>
<h3>
<a name="mu_utility">The MU Utility </a></h3>
<p style="margin-left: 40px;">
In order to provide a consistent build structure across multiple
platforms, we
developed a utility to provide a consistent set of functions across
these platforms. The MU utility is a simple utility that
contains
many
commands. For example:
</p>
<p style="margin-left: 40px;"><font face="Courier New">&nbsp;&nbsp;&nbsp;
</font><span style="font-family: monospace;">C:\&gt;
mu rm myfile.cpp yourfile.cpp</span> </p>
<p style="margin-left: 40px;">You may type "mu" to get a
list of valid
commands. Here are some
of them:
</p>
<p style="margin-left: 40px;">&nbsp;&nbsp;&nbsp;
rm, rmdirhier, mkdirhier, echo, touch, pwd, copy, move, compare depend
</p>
<p style="margin-left: 40px;">The MU utility supports
globing
(expansion of wildcards) so
you can do things like this:
</p>
<p style="margin-left: 40px;"><font face="Courier New">&nbsp;&nbsp;&nbsp;</font><span
 style="font-family: monospace;">
C:\&gt; mu rm *.obj *.exe</span> </p>
<p style="margin-left: 40px;">MU is required to build
under the Windows
environment. MU is
available as part
of the distribution of OpenPegasus.<br>
</p>
<div style="margin-left: 40px;"><span style="font-weight: bold;">NOTE:</span>
The binary for
MU.EXE is not
distributed in the OpenPegasus bin
directory.
You must build it separately. MU source code is part of the
distribution
in the directory src/utils/MU with its own make file. You must compile
MU
before you initiate the OpenPegasus make. A copy of the binary is made
available as a zip file on the OpenPegasus <a
 href="http://www.openpegasus.org/pb/index.tpl?CALLER=index.tpl">Tools</a>
web page.<br>
</div>
<h2><a name="note_bld_peg_ssl">Notes about
Building with SSL
</a></h2>
<p style="margin-left: 40px;">
To build with SSL you need the OpenSSL libraries and header files. They
are NOT distributed with OpenPegasus. Make sure you have them in a
standard
directory so OpenPegasus can find them. If that's not
the case, set the environment variable OPENSSL_HOME= to point where
your OpenSSL
installation is (refer to PEP 292
for more details on build variables).<br>
</p>
<p style="margin-left: 40px;">You
must also have the PEGASUS_HAS_SSL environment variable defined. Then
when you
build
OpenPegasus, it
will include the SSL support.
</p>
<div style="margin-left: 40px;">Refer to the OpenPegasus
SSL Guide
(found in doc/PegasusSSLGuidelines.htm)
for details on
using OpenPegasus with SSL,
creating SSL certificates, etc.<br>
</div>
<h1>
<a name="test">Testing an OpenPegasus Installation</a></h1>
<p style="margin-left: 40px;">
OpenPegasus includes an extensive set of test facilities as part of the
CVS
environment, including:
</p>
<div style="margin-left: 40px;">
<ul>
  <li><b>Test Clients</b> - There are several
clients that have been
built specifically to test OpenPegasus, or parts of OpenPegasus,
including
TestClient, Client, cimcli, ipinfo,
osinfo, wbemexec,
etc. See the
src/Clients directory for more information. These programs require a
running CIM Server with a
complete repository.&nbsp; Note that some of
these tests use classes and instances that are only installed with the
"make testrepository" target including: test namespaces, extra
classes and instances in those namespaces, and additional sample and
test providers.</li>
</ul>
</div>
<div style="margin-left: 40px;">
<ul>
  <li><b>Sample and Test Providers</b> -&nbsp;
Test providers exist
for
the major provider types in the src/Providers/sample
and src/Providers/TestProviders directories.</li>
</ul>
</div>
<ul>
  <ul>
  </ul>
</ul>
<div style="margin-left: 40px;">
<ul>
  <li><b>Unit Tests</b> - Most OpenPegasus
functions include unit
tests
for
the functions.&nbsp; These are normally executed with the "make
unittests"
top-level target, or "make tests"
which can be executed at many different levels of the source
tree.&nbsp; Usually the unit test functions can be found
in test
directories immediately below their corresponding source code
(i.e&nbsp; Common/tests contains the unit test
functions for the Common
directory). Unit tests are executed with the CIM Server shutdown and
normally do not require the existence of class definitions in the
repository.</li>
</ul>
</div>
<ul style="margin-left: 40px;">
  <li><b>End-to-end Test Suite</b> - the directory
"test" contains
a
set of operation
tests that cover the major CIM Operations.&nbsp; See
TestMakefile in the PEGASUS_ROOT directory to execute
these tests.&nbsp; This set of tests executes an extensive set of
fixed
tests and compares the results against predefined results.</li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Once OpenPegasus is
successfully built, the&nbsp; tests can be executed through the
root Makefile
with targets such as:</p>
<blockquote>
  <ul>
  </ul>
  <ul>
    <li><b>make unittests </b>- Execute the unit
tests. These do not depend on having a running server or repository
installed.&nbsp; They test components of the OpenPegasus code.
These tests run to completion if successful but normally stop on the
first error found by a test program.</li>
    <ul>
    </ul>
  </ul>
</blockquote>
<blockquote>
  <ul>
    <li><b>make servertests</b> - Executes the
OpenPegasus end-to-end test suite against a running OpenPegasus server
starting and stopping the server as required to modify configuration
parameters. The repository must be installed for these tests to execute
and they are tested against the default repository as part of regular
OpenPegasus development and release testing. These tests will run to
successful completion if there are not errors detected but will
normally stop on the first error.&nbsp; There is a subset of these
tests that can be run in an environment that does not have root
privileges but root privileges are required to run the complete suite.</li>
  </ul>
</blockquote>
<ul>
</ul>
<ul style="margin-left: 40px;">
  <li><b>make alltests</b> - execute both the
unit and end-to-end tests.</li>
</ul>
<h2><a name="test_icu">Testing with ICU enabled</a></h2>
<p style="margin-left: 40px;">ICU (International
Components for
Unicode) refers to the set of
libraries that OpenPegasus uses to run with globalization support. For
example, these
libraries are used
to
load messages in different languages, format currency and numbers
according to
a specific locale etc. In order to enable globalization, OpenPegasus
must be built with ICU enabled, ie. the right environment variables
must be
set prior to running "make". Refer to the GlobalizationHOWTO.htm in the
pegasus/docs
directory for details.<br>
</p>
<p style="margin-left: 40px;">When users run "make
servertests"
to verify the integrity of an OpenPegasus download, a series of tests
are
run that
require the CIM Server to be running. These tests currently depend on
specific
messages returned from the CIM Server. When ICU is enabled, all
messages
come from the resource bundles and these usually do not match the
hardcoded default messages within OpenPegasus. These hardcoded default
messages are what the various test programs expect in order to complete
successfully. If the ICU-enabled CIM Server is started without
disabling message loading from the bundles, "make servertests"
will
fail.
In order to run "make servertests"
successfully with ICU enabled, an
environment variable called PEGASUS_USE_DEFAULT_MESSAGES must be
defined
prior to
starting OpenPegasus. Once
this is defined, when OpenPegasus starts,
all
messages generated will be the default hardcoded messages. This will
enable
"make servertests"
to complete successfully. Once "make
servertests"
is
complete, you should stop OpenPegasus and
then undefine
PEGASUS_USE_DEFAULT_MESSAGES. If this variable is left defined,
OpenPegasus
will not be able to load messages
using ICU resource bundles.<br>
</p>
<p style="margin-left: 40px;">When
running the "make unittests"
command with ICU enabled, the PEGASUS_MSG_HOME
environment variable must be set to the home directory where the ICU
resource bundles are built. By default the resource bundles are built
into directories below PEGASUS_HOME/msg, so that should be the setting
for PEGASUS_MSG_HOME.<font style="color: rgb(0, 0, 0);"><br>
</font></p>
<hr>
<p>Licensed to The Open Group (TOG) under one or more contributor
license
agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
this work for additional information regarding copyright ownership.
Each contributor licenses this file to you under the OpenPegasus Open
Source License; you may not use this file except in compliance with the
License.</p>
<p>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:</p>
<p>The above copyright notice and this permission notice shall be
included
in all copies or substantial portions of the Software.</p>
<p>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.</p>
<hr>
</body>
</html>