(file) Return to DefinitionofCommandLineClient.htm CVS log (file) (dir) Up to [Pegasus] / pegasus / doc / WorkPapers

  1 karl  1.1 <html xmlns:o="urn:schemas-microsoft-com:office:office"
  2           xmlns:w="urn:schemas-microsoft-com:office:word"
  3           xmlns="http://www.w3.org/TR/REC-html40">
  4           
  5           <head>
  6           <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  7           <meta name=ProgId content=Word.Document>
  8           <meta name=Generator content="Microsoft Word 9">
  9           <meta name=Originator content="Microsoft Word 9">
 10           <link rel=File-List href="./DefinitionofCommandLineClient_files/filelist.xml">
 11           <title>Pegasus Project Working Paper</title>
 12           <!--[if gte mso 9]><xml>
 13            <o:DocumentProperties>
 14             <o:Author>Karl</o:Author>
 15             <o:LastAuthor>Karl</o:LastAuthor>
 16             <o:Revision>6</o:Revision>
 17             <o:TotalTime>258</o:TotalTime>
 18             <o:Created>2002-02-08T10:57:00Z</o:Created>
 19             <o:LastSaved>2002-02-08T15:17:00Z</o:LastSaved>
 20             <o:Pages>9</o:Pages>
 21             <o:Words>1772</o:Words>
 22 karl  1.1   <o:Characters>10102</o:Characters>
 23             <o:Company>Inova</o:Company>
 24             <o:Lines>84</o:Lines>
 25             <o:Paragraphs>20</o:Paragraphs>
 26             <o:CharactersWithSpaces>12405</o:CharactersWithSpaces>
 27             <o:Version>9.4402</o:Version>
 28            </o:DocumentProperties>
 29           </xml><![endif]--><!--[if gte mso 9]><xml>
 30            <w:WordDocument>
 31             <w:View>MasterPages</w:View>
 32            </w:WordDocument>
 33           </xml><![endif]-->
 34           <style>
 35           <!--
 36            /* Font Definitions */
 37           @font-face
 38           	{font-family:Wingdings;
 39           	panose-1:5 0 0 0 0 0 0 0 0 0;
 40           	mso-font-charset:2;
 41           	mso-generic-font-family:auto;
 42           	mso-font-pitch:variable;
 43 karl  1.1 	mso-font-signature:0 268435456 0 0 -2147483648 0;}
 44            /* Style Definitions */
 45           p.MsoNormal, li.MsoNormal, div.MsoNormal
 46           	{mso-style-parent:"";
 47           	margin:0in;
 48           	margin-bottom:.0001pt;
 49           	mso-pagination:widow-orphan;
 50           	font-size:12.0pt;
 51           	font-family:"Times New Roman";
 52           	mso-fareast-font-family:"Times New Roman";}
 53           h1
 54           	{margin-right:0in;
 55           	mso-margin-top-alt:auto;
 56           	mso-margin-bottom-alt:auto;
 57           	margin-left:0in;
 58           	mso-pagination:widow-orphan;
 59           	mso-outline-level:1;
 60           	font-size:24.0pt;
 61           	font-family:"Times New Roman";
 62           	mso-font-kerning:18.0pt;
 63           	font-weight:bold;}
 64 karl  1.1 h2
 65           	{margin-right:0in;
 66           	mso-margin-top-alt:auto;
 67           	mso-margin-bottom-alt:auto;
 68           	margin-left:0in;
 69           	mso-pagination:widow-orphan;
 70           	mso-outline-level:2;
 71           	font-size:18.0pt;
 72           	font-family:"Times New Roman";
 73           	font-weight:bold;}
 74           h3
 75           	{mso-style-next:Normal;
 76           	margin-top:12.0pt;
 77           	margin-right:0in;
 78           	margin-bottom:3.0pt;
 79           	margin-left:0in;
 80           	mso-pagination:widow-orphan;
 81           	page-break-after:avoid;
 82           	mso-outline-level:3;
 83           	font-size:13.0pt;
 84           	font-family:Arial;
 85 karl  1.1 	font-weight:bold;}
 86           h4
 87           	{mso-style-next:Normal;
 88           	margin-top:12.0pt;
 89           	margin-right:0in;
 90           	margin-bottom:3.0pt;
 91           	margin-left:0in;
 92           	mso-pagination:widow-orphan;
 93           	page-break-after:avoid;
 94           	mso-outline-level:4;
 95           	font-size:14.0pt;
 96           	font-family:"Times New Roman";
 97           	font-weight:bold;}
 98           h5
 99           	{mso-style-next:Normal;
100           	margin-top:12.0pt;
101           	margin-right:0in;
102           	margin-bottom:3.0pt;
103           	margin-left:0in;
104           	mso-pagination:widow-orphan;
105           	mso-outline-level:5;
106 karl  1.1 	font-size:13.0pt;
107           	font-family:"Times New Roman";
108           	font-weight:bold;
109           	font-style:italic;}
110           p
111           	{margin-right:0in;
112           	mso-margin-top-alt:auto;
113           	mso-margin-bottom-alt:auto;
114           	margin-left:0in;
115           	mso-pagination:widow-orphan;
116           	font-size:12.0pt;
117           	font-family:"Times New Roman";
118           	mso-fareast-font-family:"Times New Roman";}
119           @page Section1
120           	{size:8.5in 11.0in;
121           	margin:1.0in 1.25in 1.0in 1.25in;
122           	mso-header-margin:.5in;
123           	mso-footer-margin:.5in;
124           	mso-paper-source:0;}
125           div.Section1
126           	{page:Section1;}
127 karl  1.1  /* List Definitions */
128           @list l0
129           	{mso-list-id:127016844;
130           	mso-list-type:hybrid;
131           	mso-list-template-ids:-701077316 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
132           @list l0:level1
133           	{mso-level-number-format:bullet;
134           	mso-level-text:\F0B7;
135           	mso-level-tab-stop:.5in;
136           	mso-level-number-position:left;
137           	text-indent:-.25in;
138           	font-family:Symbol;}
139           @list l1
140           	{mso-list-id:215433208;
141           	mso-list-type:hybrid;
142           	mso-list-template-ids:-1988210366 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
143           @list l1:level1
144           	{mso-level-number-format:bullet;
145           	mso-level-text:\F0B7;
146           	mso-level-tab-stop:.5in;
147           	mso-level-number-position:left;
148 karl  1.1 	text-indent:-.25in;
149           	font-family:Symbol;}
150           @list l2
151           	{mso-list-id:298267944;
152           	mso-list-type:hybrid;
153           	mso-list-template-ids:-145870166 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
154           @list l2:level1
155           	{mso-level-number-format:bullet;
156           	mso-level-text:\F0B7;
157           	mso-level-tab-stop:.5in;
158           	mso-level-number-position:left;
159           	text-indent:-.25in;
160           	font-family:Symbol;}
161           @list l3
162           	{mso-list-id:430516562;
163           	mso-list-type:hybrid;
164           	mso-list-template-ids:1081889748 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
165           @list l3:level1
166           	{mso-level-tab-stop:.5in;
167           	mso-level-number-position:left;
168           	text-indent:-.25in;}
169 karl  1.1 @list l4
170           	{mso-list-id:719205394;
171           	mso-list-type:hybrid;
172           	mso-list-template-ids:-1588970528 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
173           @list l4:level1
174           	{mso-level-number-format:bullet;
175           	mso-level-text:\F0B7;
176           	mso-level-tab-stop:.5in;
177           	mso-level-number-position:left;
178           	text-indent:-.25in;
179           	font-family:Symbol;}
180           @list l5
181           	{mso-list-id:737627523;
182           	mso-list-type:hybrid;
183           	mso-list-template-ids:-1472971888 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
184           @list l5:level1
185           	{mso-level-number-format:bullet;
186           	mso-level-text:\F0B7;
187           	mso-level-tab-stop:1.25in;
188           	mso-level-number-position:left;
189           	margin-left:1.25in;
190 karl  1.1 	text-indent:-.25in;
191           	font-family:Symbol;}
192           @list l6
193           	{mso-list-id:786967640;
194           	mso-list-type:hybrid;
195           	mso-list-template-ids:-778779566 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
196           @list l6:level1
197           	{mso-level-number-format:bullet;
198           	mso-level-text:\F0B7;
199           	mso-level-tab-stop:.5in;
200           	mso-level-number-position:left;
201           	text-indent:-.25in;
202           	font-family:Symbol;}
203           @list l7
204           	{mso-list-id:892470363;
205           	mso-list-type:hybrid;
206           	mso-list-template-ids:-1855174972 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
207           @list l7:level1
208           	{mso-level-number-format:bullet;
209           	mso-level-text:\F0B7;
210           	mso-level-tab-stop:.5in;
211 karl  1.1 	mso-level-number-position:left;
212           	text-indent:-.25in;
213           	font-family:Symbol;}
214           @list l8
215           	{mso-list-id:980813003;
216           	mso-list-type:hybrid;
217           	mso-list-template-ids:886609238 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
218           @list l8:level1
219           	{mso-level-number-format:bullet;
220           	mso-level-text:\F0B7;
221           	mso-level-tab-stop:.5in;
222           	mso-level-number-position:left;
223           	text-indent:-.25in;
224           	font-family:Symbol;}
225           @list l9
226           	{mso-list-id:989209276;
227           	mso-list-type:hybrid;
228           	mso-list-template-ids:-1811620506 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
229           @list l9:level1
230           	{mso-level-number-format:bullet;
231           	mso-level-text:\F0B7;
232 karl  1.1 	mso-level-tab-stop:.5in;
233           	mso-level-number-position:left;
234           	text-indent:-.25in;
235           	font-family:Symbol;}
236           @list l10
237           	{mso-list-id:1089615733;
238           	mso-list-type:hybrid;
239           	mso-list-template-ids:-1698527110 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
240           @list l10:level1
241           	{mso-level-number-format:bullet;
242           	mso-level-text:\F0B7;
243           	mso-level-tab-stop:1.25in;
244           	mso-level-number-position:left;
245           	margin-left:1.25in;
246           	text-indent:-.25in;
247           	font-family:Symbol;}
248           @list l11
249           	{mso-list-id:1942057295;
250           	mso-list-type:hybrid;
251           	mso-list-template-ids:192292454 67698703 67698689 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
252           @list l11:level1
253 karl  1.1 	{mso-level-tab-stop:.5in;
254           	mso-level-number-position:left;
255           	text-indent:-.25in;}
256           @list l11:level2
257           	{mso-level-number-format:bullet;
258           	mso-level-text:\F0B7;
259           	mso-level-tab-stop:1.0in;
260           	mso-level-number-position:left;
261           	text-indent:-.25in;
262           	font-family:Symbol;}
263           ol
264           	{margin-bottom:0in;}
265           ul
266           	{margin-bottom:0in;}
267           -->
268           </style>
269           </head>
270           
271           <body lang=EN-US style='tab-interval:.5in'>
272           
273           <div class=Section1>
274 karl  1.1 
275           <h1 align=center style='text-align:center'>Pegasus Project Working Paper<o:p></o:p></h1>
276           
277           <h1 align=center style='text-align:center'>Designing a Command Line Client Set<o:p></o:p></h1>
278           
279           <p class=MsoNormal><b><span style='font-size:10.0pt;mso-bidi-font-size:12.0pt'>AUTHORS:</span></b><span
280           style='font-size:10.0pt;mso-bidi-font-size:12.0pt'>&nbsp; Karl Schopmeyer<o:p></o:p></span></p>
281           
282           <p><b><span style='font-size:10.0pt;mso-bidi-font-size:7.5pt'>Last Update</span></b><span
283           style='font-size:10.0pt;mso-bidi-font-size:7.5pt'> <span style='mso-field-code:
284           "SAVEDATE  \\* MERGEFORMAT"'>2/8/2002 5:03 AM</span></span><span
285           style='font-size:10.0pt;mso-bidi-font-size:12.0pt'><o:p></o:p></span></p>
286           
287           <p><b>Revision Status:</b> Draft – Thinking through the issues.<o:p></o:p></p>
288           
289           <p>File:&nbsp; <span style='mso-field-code:"FILENAME  \\* MERGEFORMAT"'>DefinitionofCommandLineClient.htm</span><o:p></o:p></p>
290           
291           <table border=1 cellpadding=0 width="80%" style='width:80.0%;mso-cellspacing:
292            1.5pt'>
293            <tr>
294             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
295 karl  1.1   <p class=MsoNormal>Revision<o:p></o:p></p>
296             </td>
297             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
298             <p class=MsoNormal>Date<o:p></o:p></p>
299             </td>
300             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
301             <p class=MsoNormal>Author(s)<o:p></o:p></p>
302             </td>
303             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
304             <p class=MsoNormal>Reason<o:p></o:p></p>
305             </td>
306            </tr>
307            <tr>
308             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
309             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
310             </td>
311             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
312             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
313             </td>
314             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
315             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
316 karl  1.1   </td>
317             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
318             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
319             </td>
320            </tr>
321            <tr>
322             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
323             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
324             </td>
325             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
326             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
327             </td>
328             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
329             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
330             </td>
331             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
332             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
333             </td>
334            </tr>
335            <tr>
336             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
337 karl  1.1   <p class=MsoNormal>&nbsp;<o:p></o:p></p>
338             </td>
339             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
340             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
341             </td>
342             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
343             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
344             </td>
345             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
346             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
347             </td>
348            </tr>
349            <tr>
350             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
351             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
352             </td>
353             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
354             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
355             </td>
356             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
357             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
358 karl  1.1   </td>
359             <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
360             <p class=MsoNormal>&nbsp;<o:p></o:p></p>
361             </td>
362            </tr>
363           </table>
364           
365           <h2>Introduction<o:p></o:p></h2>
366           
367           <p>&nbsp;We have long discussed a number of client tools including clients that
368           would support scripting including clients in TCL, command-line functions,
369           etc.<span style="mso-spacerun: yes">  </span>In general, the concept was to
370           design an equivalent to the existing Pegasus client API so that command like
371           getclass, enumerateclass, etc. would be the primitives of this new interface.</p>
372           
373           <p>The command line has both appeal and problems in the support of these
374           interfaces.<span style="mso-spacerun: yes">  </span>The positive is that it
375           provides tools that will support direct access to CIM functionality from
376           scripts, console programs, etc. The negative is that it is not easy to support
377           real CIM based programming and CIM objects with a commandline set of tools. For
378           example, it is not easy to support manipulation of a cim instance or cim class
379 karl  1.1 with command line concepts and tools.</p>
380           
381           <p>However, this can be a useful set of tools so we propose as a background
382           task to start to produce them.</p>
383           
384           <h2>The Architecture:</h2>
385           
386           <p>I propose that we produce the CL CIM Operation tools as a set of independent
387           executables, one for each command with a common support library.<span
388           style="mso-spacerun: yes">  </span>Thus there would be a separate executable
389           for each CIM Operation defined (getclass, deleteclass, etc.).<span
390           style="mso-spacerun: yes">  </span>The common functions for support of the
391           programming would be defined in a common DLL available to all of these tools
392           and possibly in the future to other tools and applications.</p>
393           
394           <p>Note that the alternative is to produce this as a single executable where
395           one of the parameters is the CIM Operation to be executed but since this is a
396           background task hopfully to be done by a number of people, the separate
397           executables is a more modular approach.</p>
398           
399           <p>We have already defined a directory called clitestclients under \src\clients
400 karl  1.1 and will have a directory for each command and for the common utility module
401           under this structure.</p>
402           
403           <p>Each executable will process a single CIM Operation taking input information
404           from a combination of command line parameters, environment variables and
405           possibly a config file, and producing one of several possible types of output
406           (Ascii text as lists and either XML or MOF as the form for object
407           representations).</p>
408           
409           <p>Thus, for example, the enumrateclassnames function has exactly the same set
410           of definitions as the CIM operation as input:</p>
411           
412           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
413           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
414           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
415           </span></span><![endif]>Namespace</p>
416           
417           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
418           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
419           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
420           </span></span><![endif]>Classname</p>
421 karl  1.1 
422           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1;
423           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
424           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
425           </span></span><![endif]>Deepinheritance (true or false)</p>
426           
427           <p>It is expected that, at least for this first version, each command would
428           make its connection, execute and disconnect from the server.</p>
429           
430           <h2>Usage of these functions</h2>
431           
432           <p class=MsoNormal>I see two usage models here:</p>
433           
434           <ul style='margin-top:0in' type=disc>
435            <li class=MsoNormal style='mso-list:l8 level1 lfo5;tab-stops:list .5in'>Creating
436                test applications more simply than the existing tools. A set of command
437                line tools can help us develop more complex client tests easier than the
438                existing WEB, browser, or even WBEMEXEC tools.<span style="mso-spacerun:
439                yes">  </span>The initial usage is simply to execute each command.<span
440                style="mso-spacerun: yes">  </span>After that we could consider mechanisms
441                that allow us to pass information between individual commands and thus
442 karl  1.1      link commands together into scripts</li>
443            <li class=MsoNormal style='mso-list:l8 level1 lfo5;tab-stops:list .5in'>Possibly
444                use in scripting clients – There is a clear need for scripting clients in
445                the future.<span style="mso-spacerun: yes">  </span>It is not to say that
446                what we are doing here is the final solution but this can serve as a
447                starting point.</li>
448            <li class=MsoNormal style='mso-list:l8 level1 lfo5;tab-stops:list .5in'>Test
449                tool to develop the higher level SDK for the client. – We know we have to
450                develop a higher level SDK for the client.<span style="mso-spacerun:
451                yes">  </span>Working on this can help us think out that problem.</li>
452           </ul>
453           
454           <p style='margin:0in;margin-bottom:.0001pt'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
455           
456           <h2>Setting up rules for common programming of these functions:</h2>
457           
458           <p>A lot of the rules and tools for programming these functions will be
459           developed off of the first couple we do.<span style="mso-spacerun: yes"> 
460           </span>However here is a starting point.</p>
461           
462           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l11 level1 lfo2;
463 karl  1.1 tab-stops:list .5in'><![if !supportLists]>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
464           </span><![endif]>Common tool for input parameter analysis so that the decision
465           process is common to all of the functions and done only once.<span
466           style="mso-spacerun: yes">  </span>Initially, I was looking at using the tools
467           existing in the CIMSever (the original options manager) but we may want to
468           modify that for ourselves. Note that this code is no longer used by CIMServer
469           but it is still used by a lot of the client things so we would be free to move
470           it, extend it, etc.</p>
471           
472           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l11 level1 lfo2;
473           tab-stops:list .5in'><![if !supportLists]>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
474           </span><![endif]>Want to keep each one of these things simple and largely do
475           one function.</p>
476           
477           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l11 level1 lfo2;
478           tab-stops:list .5in'><![if !supportLists]>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
479           </span><![endif]>Input and output ascii generally with structure applied
480           through mechanisms for lists, MOF, XML, etc.</p>
481           
482           <h2>Input parameters</h2>
483           
484 karl  1.1 <p style='margin-left:.75in'>This is probably the characteristic that is going
485           to make or break this whole thing and which we need to put some thought before
486           we jump into programming.</p>
487           
488           <p style='margin-left:.75in'>The goals for this are:</p>
489           
490           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l10 level1 lfo6;
491           tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
492           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
493           </span></span><![endif]>Completeness to specify everything we want.</p>
494           
495           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l10 level1 lfo6;
496           tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
497           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
498           </span></span><![endif]>Easy programming support since we are doing 30
499           different definitions.</p>
500           
501           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l10 level1 lfo6;
502           tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
503           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
504           </span></span><![endif]>Easy of entry for the console operator since we do not
505 karl  1.1 want something where the operator has to enter 30 lines of text to put in a
506           single command.</p>
507           
508           <p style='margin-left:.75in'>It seems that we want more than simply putting all
509           the parameters on the command line for each command. <span style="mso-spacerun:
510           yes"> </span>Therefore we need for parameters to be objtained from a hierarchy of
511           sources as follows:</p>
512           
513           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level1 lfo7;
514           tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
515           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
516           </span></span><![endif]>Highest priority is the command line. Any input
517           parameter on the command line overrides the equivalent defintion in either an
518           environment variable or a config file.</p>
519           
520           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level1 lfo7;
521           tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
522           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
523           </span></span><![endif]>Second priority is probably environment variables</p>
524           
525           <p style='margin-left:1.25in;text-indent:-.25in;mso-list:l5 level1 lfo7;
526 karl  1.1 tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
527           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
528           </span></span><![endif]>Third priority would be a config file</p>
529           
530           <p style='margin-left:.75in'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
531           
532           <p style='margin-left:.75in'><span style="mso-spacerun: yes"> </span>Therefore,
533           I suggest that we work toward the following:</p>
534           
535           <p style='margin-left:1.0in;text-indent:-.25in;mso-list:l11 level2 lfo2;
536           tab-stops:list 1.0in'><![if !supportLists]><span style='font-family:Symbol'>·<span
537           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
538           </span></span><![endif]>Some parameters required and defined by position and
539           some optional and defined by a keyword=parm structure. .</p>
540           
541           <p style='margin-left:1.0in;text-indent:-.25in;mso-list:l11 level2 lfo2;
542           tab-stops:list 1.0in'><![if !supportLists]><span style='font-family:Symbol'>·<span
543           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
544           </span></span><![endif]>The optional parameters would have a default based on
545           the default defined in the CIM Operations documentation.<span
546           style="mso-spacerun: yes">  </span>Thus, for example, deepinheritance is
547 karl  1.1 optional.<span style="mso-spacerun: yes">  </span>It would have the same
548           default as the </p>
549           
550           <p style='margin-left:1.0in;text-indent:-.25in;mso-list:l11 level2 lfo2;
551           tab-stops:list 1.0in'><![if !supportLists]><span style='font-family:Symbol'>·<span
552           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
553           </span></span><![endif]>Source of parameters would be in priority: 1 command
554           line, 2. environment variable, 3, config file.<span style="mso-spacerun: yes"> 
555           </span>Thus, for example, namespace could be supplied with each command or
556           could be defined as an environment variable once and then used for subsequent
557           commands or could be in a config file with the same result as the environment
558           variable.</p>
559           
560           <p style='margin-left:1.0in;text-indent:-.25in;mso-list:l11 level2 lfo2;
561           tab-stops:list 1.0in'><![if !supportLists]><span style='font-family:Symbol'>·<span
562           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
563           </span></span><![endif]>There would be a final default on the major parameters
564           of local system so that simple one word commands would generate some result. </p>
565           
566           <p>Thus, returning to the enumerateClassNames command:</p>
567           
568 karl  1.1 <p>Enumerateclassnames <span style="mso-spacerun: yes"> </span>- With no
569           parameters and no env variables defined would enumerate from the localhost:5988
570           CIMV2 namepace, top level and deepinhertance = false.<span style="mso-spacerun:
571           yes">  </span>It would return the result as a list of classnames one name per
572           line.</p>
573           
574           <p>Next question: how to we organize the conceopts of required, optional, etc
575           parameters to make this thing as flexible as possible.</p>
576           
577           <p>We appear to have: several possibilities here for setting parameters:</p>
578           
579           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l6 level1 lfo3;
580           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
581           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
582           </span></span><![endif]>Option tag (-) with keyword (ex getclass –n namespace –c
583           CIM_Door)</p>
584           
585           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l6 level1 lfo3;
586           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
587           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
588           </span></span><![endif]>field=value where fields are all represented by
589 karl  1.1 fieldname=value ( thus, <span style="mso-spacerun: yes"> </span>as an example,
590           getclass namespace=CIMV2 name=CIMV2)</p>
591           
592           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l6 level1 lfo3;
593           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
594           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
595           </span></span><![endif]>string where string can represent string,integer, etc.
596           and the position of the strings is fixed. ( Thus getclass CIMV2 CIM_Door. If there
597           is only one parameter it would be the class and the namespace would be assumed)</p>
598           
599           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l6 level1 lfo3;
600           tab-stops:list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
601           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
602           </span></span><![endif]>Boolean keyword (deepinheritance means
603           deepinheritanc=true)</p>
604           
605           <p>Today the optionmanager supports the following today:</p>
606           
607           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
608           tab-stops:list .5in'><![if !supportLists]>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
609           </span><![endif]>sort out all option tag parameters defined by the option table
610 karl  1.1 defined. These may be of several types including string, integer, Boolean, etc.
611           </p>
612           
613           <p style='margin-left:.5in;text-indent:-.25in;mso-list:l3 level1 lfo4;
614           tab-stops:list .5in'><![if !supportLists]>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
615           </span><![endif]>Then return all remaining parameters as a new command line
616           string for the application to sort out.</p>
617           
618           <h3>Proposal for input parameters</h3>
619           
620           <p style='margin:0in;margin-bottom:.0001pt'>Lets go with the definitions in the
621           option manager</p>
622           
623           <p style='margin:0in;margin-bottom:.0001pt'>Thus the get class options becomes,
624           for example</p>
625           
626           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
627           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
628           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
629           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
630           </span></span><![endif]>-namespace namespace</p>
631 karl  1.1 
632           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
633           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
634           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
635           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
636           </span></span><![endif]>-host host-name</p>
637           
638           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
639           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
640           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
641           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
642           </span></span><![endif]>-port port-number</p>
643           
644           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
645           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
646           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
647           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
648           </span></span><![endif]>-class Classname</p>
649           
650           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
651           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
652 karl  1.1 list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
653           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
654           </span></span><![endif]>-output output type (we could use the keywordoption so
655           it could be –output XML or –output MOF</p>
656           
657           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
658           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
659           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
660           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
661           </span></span><![endif]>-localonly</p>
662           
663           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
664           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
665           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
666           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
667           </span></span><![endif]>-includeclassorigin</p>
668           
669           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
670           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
671           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
672           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
673 karl  1.1 </span></span><![endif]>-includequalifiers</p>
674           
675           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
676           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l7 level1 lfo11;tab-stops:
677           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
678           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
679           </span></span><![endif]>-property</p>
680           
681           <p style='margin:0in;margin-bottom:.0001pt'>For each of the above we can
682           include a short form one letter equivalent to make life simpler for the
683           inputter as follows:</p>
684           
685           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
686           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l4 level1 lfo12;tab-stops:
687           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
688           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
689           </span></span><![endif]>-N namespace</p>
690           
691           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
692           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l4 level1 lfo12;tab-stops:
693           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
694 karl  1.1 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
695           </span></span><![endif]>-P port-number</p>
696           
697           <p style='margin-top:0in;margin-right:0in;margin-bottom:0in;margin-left:.5in;
698           margin-bottom:.0001pt;text-indent:-.25in;mso-list:l4 level1 lfo12;tab-stops:
699           list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
700           style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
701           </span></span><![endif]>etc.</p>
702           
703           <p style='margin:0in;margin-bottom:.0001pt'>This leaves us with NO nonoption
704           parameters at all since all parameters are covered by the</p>
705           
706           <p style='margin:0in;margin-bottom:.0001pt'>Note that further, we probably have
707           a problem with the property list in that it is not one parameter but a list and
708           we need to develop something to support that form</p>
709           
710           <h3>Determining the host for a command</h3>
711           
712           <p class=MsoNormal>We must determine the host for each command input with some
713           sort of option so that set once, the same host is repeated for all successive
714           commands until changed.<span style="mso-spacerun: yes">  </span>There are a
715 karl  1.1 couple of alternatives here.</p>
716           
717           <ul style='margin-top:0in' type=disc>
718            <li class=MsoNormal style='mso-list:l2 level1 lfo9;tab-stops:list .5in'>The
719                target object – We are looking seriously at changing the CIMClient
720                interfaces so that instead of namespace, object input parameters, we supply
721                only a single parameter on input, the object name (Remember that the
722                object name consists of the namespace path and the model path.<span
723                style="mso-spacerun: yes">  </span>The namespace path allows for inclusion
724                of type (Http, etc.) host, and namespace). Thus we could allow only a
725                single input parameter, the object path and use this as a common parameter
726                for all commands. By applying a few rules about saving this between
727                commands (ex. each exe saves this for future use in the same console
728                session ex. an env var), and claiifying how we handle partials (ex. the
729                class name only), etc. we could manage with a single parameter but fairly
730                complex processing</li>
731            <li class=MsoNormal style='mso-list:l2 level1 lfo9;tab-stops:list .5in'>Separate
732                parameters as we do today so that we would have parameters for host name,
733                namespace, and object name.</li>
734           </ul>
735           
736 karl  1.1 <p class=MsoNormal>Not sure which to apply.<span style="mso-spacerun: yes"> 
737           </span>I suggest that the easiest might be to do both in such a way that the
738           parameters are optional so that the user could:</p>
739           
740           <ul style='margin-top:0in' type=disc>
741            <li class=MsoNormal style='mso-list:l0 level1 lfo10;tab-stops:list .5in'>Input
742                the complete object - -O localhost:5988/CIMV2/CIM_Door</li>
743            <li class=MsoNormal style='mso-list:l0 level1 lfo10;tab-stops:list .5in'>Input
744                separately - -H localhost –P 5988 –N CIMV2 –C CIM_Door</li>
745           </ul>
746           
747           <p class=MsoNormal>Since all would be optional with proper defaults except that
748           there has to be a CIM_Door from somewhere, the user can have his choice.</p>
749           
750           <h2>Output</h2>
751           
752           <p>All output has to be either to file or ascii manageable in some way by scripting
753           tools.</p>
754           
755           <p>I propose the following options on output:</p>
756           
757 karl  1.1 <p>Commands that return lists – return the results as a list. We can make the
758           list mechanism more flexible by allowing the specification of list separator
759           and possible header and trailer on the list.<span style="mso-spacerun: yes"> 
760           </span>The default separator could then be CRLF and the default header and
761           trailers empty.<span style="mso-spacerun: yes">  </span>The headers and trailers
762           could be modified by input <span style="mso-spacerun: yes"> </span>parameters
763           (cmdline, envvar, configfile).</p>
764           
765           <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
766           
767           <p>Commands that return objects – We need a way to represent these
768           objects.<span style="mso-spacerun: yes">  </span>The two most obvious forms
769           are: XML and MOF, both of which are largely supported in existing functions in
770           the base object system with functions like toXML and toMof.<span
771           style="mso-spacerun: yes">  </span>I think that we can use these functions
772           directly to provide output.<span style="mso-spacerun: yes">  </span>I suggest
773           that we provide a parameter that would allow the selection of one of the
774           several output forms.</p>
775           
776           <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
777           
778 karl  1.1 <p>Other commands – There are probably some other output forms that we have not
779           thought out yet. In particular, we may have to do something special with getproperty,
780           invoke method, etc.<span style="mso-spacerun: yes">  </span>This we can attack
781           as it arrives.</p>
782           
783           <h2>Extra Commands</h2>
784           
785           <p class=MsoNormal>It appears obvious that we will have to also create some
786           extra commands above and beyond the existing basic CIM Operations.<span
787           style="mso-spacerun: yes">  </span>The following list comes to mind initially:</p>
788           
789           <ul style='margin-top:0in' type=disc>
790            <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'>Get superclass</li>
791            <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'>TBD</li>
792           </ul>
793           
794           <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
795           
796           <h2>Open issues</h2>
797           
798           <p class=MsoNormal>Handling the error return – What should we do?<span
799 karl  1.1 style="mso-spacerun: yes">  </span>Think that the choices are to do an error
800           return from the code itself or something distinctive in the output that the user
801           can recognize.<span style="mso-spacerun: yes">  </span>The error return with a
802           set of codes sounds logical at first glance.</p>
803           
804           <h2>The Commands</h2>
805           
806           <h3>BasicClass operations</h3>
807           
808           <h4>Getclass</h4>
809           
810           <h5>C++ Function</h5>
811           
812           <p class=MsoNormal><span style="mso-spacerun: yes">    </span>virtual CIMClass
813           getClass(<o:p></o:p></p>
814           
815           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>const
816           String&amp; nameSpace,<o:p></o:p></p>
817           
818           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>const
819           String&amp; className,<o:p></o:p></p>
820 karl  1.1 
821           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>Boolean
822           localOnly = true,<o:p></o:p></p>
823           
824           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>Boolean
825           includeQualifiers = true,<o:p></o:p></p>
826           
827           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>Boolean
828           includeClassOrigin = false,<o:p></o:p></p>
829           
830           <p class=MsoNormal><span style='mso-tab-count:1'>            </span>const CIMPropertyList&amp;
831           propertyList =CIMPropertyList());</p>
832           
833           <h5>Input Parameters</h5>
834           
835           <p class=MsoNormal>Namespace(String)</p>
836           
837           <p class=MsoNormal>ClassName(String)</p>
838           
839           <p class=MsoNormal>LocalOnly(Boolean)</p>
840           
841 karl  1.1 <p class=MsoNormal>IncludeQualifiers(Boolean)</p>
842           
843           <p class=MsoNormal>IncludeClassOrigin(Boolean)</p>
844           
845           <p class=MsoNormal>PropertyList(definitely optional)</p>
846           
847           <h5>Output</h5>
848           
849           <p class=MsoNormal>Returns either error on the Class information.<span
850           style="mso-spacerun: yes">  </span>Here we can chose to output it in either MOF
851           or XML form</p>
852           
853           <h4>Deleteclass</h4>
854           
855           <h4>Createclass</h4>
856           
857           <h4>Modifyclass</h4>
858           
859           <h4>Enumerateclasses</h4>
860           
861           <h4>Enumerateclassnames</h4>
862 karl  1.1 
863           <h3>Instance</h3>
864           
865           <h4>GetInstance</h4>
866           
867           <h4>DeleteInstance</h4>
868           
869           <h4>CreateInstance</h4>
870           
871           <h4>ModifyInstance</h4>
872           
873           <h4>EnumerateInstances</h4>
874           
875           <h4>EnumerateInstanceNames</h4>
876           
877           <h4>GetProperty</h4>
878           
879           <h4>SetProperty</h4>
880           
881           <h3>Qualifiers</h3>
882           
883 karl  1.1 <h4>SetQualifier</h4>
884           
885           <h4>GetQualifier</h4>
886           
887           <h4>DeleteQualifier</h4>
888           
889           <h4>EnumQualifiers</h4>
890           
891           <h3>Associations</h3>
892           
893           <h4>Associators</h4>
894           
895           <h4>AssociatorNames</h4>
896           
897           <h4>References</h4>
898           
899           <h4>ReferenceNames</h4>
900           
901           <h3>Query</h3>
902           
903           <h3>InvokeMethod</h3>
904 karl  1.1 
905           <h3><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></h3>
906           
907           <p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
908           
909           <p>&nbsp;<o:p></o:p></p>
910           
911           <p>&nbsp;<o:p></o:p></p>
912           
913           <p>---END OF DOCUMENT--<o:p></o:p></p>
914           
915           <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
916           
917           </div>
918           
919           </body>
920           
921           </html>

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2