32 karl 1.1 </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 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 karl 1.1 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 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 karl 1.1 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 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 karl 1.1 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 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 karl 1.1 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 /* 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 karl 1.1 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 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 karl 1.1 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 @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 karl 1.1 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 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 karl 1.1 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 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 karl 1.1 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 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 karl 1.1 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 {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 karl 1.1 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
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'> 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 karl 1.1 "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: <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 <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 karl 1.1 </td>
306 </tr>
307 <tr>
308 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
309 <p class=MsoNormal> <o:p></o:p></p>
310 </td>
311 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
312 <p class=MsoNormal> <o:p></o:p></p>
313 </td>
314 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
315 <p class=MsoNormal> <o:p></o:p></p>
316 </td>
317 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
318 <p class=MsoNormal> <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> <o:p></o:p></p>
324 </td>
325 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
326 karl 1.1 <p class=MsoNormal> <o:p></o:p></p>
327 </td>
328 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
329 <p class=MsoNormal> <o:p></o:p></p>
330 </td>
331 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
332 <p class=MsoNormal> <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 <p class=MsoNormal> <o:p></o:p></p>
338 </td>
339 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
340 <p class=MsoNormal> <o:p></o:p></p>
341 </td>
342 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
343 <p class=MsoNormal> <o:p></o:p></p>
344 </td>
345 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
346 <p class=MsoNormal> <o:p></o:p></p>
347 karl 1.1 </td>
348 </tr>
349 <tr>
350 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
351 <p class=MsoNormal> <o:p></o:p></p>
352 </td>
353 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
354 <p class=MsoNormal> <o:p></o:p></p>
355 </td>
356 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
357 <p class=MsoNormal> <o:p></o:p></p>
358 </td>
359 <td width="25%" style='width:25.0%;padding:.75pt .75pt .75pt .75pt'>
360 <p class=MsoNormal> <o:p></o:p></p>
361 </td>
362 </tr>
363 </table>
364
365 <h2>Introduction<o:p></o:p></h2>
366
367 <p> We have long discussed a number of client tools including clients that
368 karl 1.1 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 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 karl 1.1 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 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 karl 1.1 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"'>
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"'>
420 </span></span><![endif]>Classname</p>
421
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"'>
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 karl 1.1
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 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 karl 1.1 </ul>
453
454 <p style='margin:0in;margin-bottom:.0001pt'><![if !supportEmptyParas]> <![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 tab-stops:list .5in'><![if !supportLists]>1.<span style='font:7.0pt "Times New Roman"'>
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 karl 1.1 tab-stops:list .5in'><![if !supportLists]>2.<span style='font:7.0pt "Times New Roman"'>
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"'>
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 <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"'>
493 </span></span><![endif]>Completeness to specify everything we want.</p>
494 karl 1.1
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"'>
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"'>
504 </span></span><![endif]>Easy of entry for the console operator since we do not
505 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 karl 1.1 style='font:7.0pt "Times New Roman"'>
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"'>
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 tab-stops:list 1.25in'><![if !supportLists]><span style='font-family:Symbol'>·<span
527 style='font:7.0pt "Times New Roman"'>
528 </span></span><![endif]>Third priority would be a config file</p>
529
530 <p style='margin-left:.75in'><![if !supportEmptyParas]> <![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 karl 1.1 tab-stops:list 1.0in'><![if !supportLists]><span style='font-family:Symbol'>·<span
537 style='font:7.0pt "Times New Roman"'>
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"'>
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 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"'>
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 karl 1.1 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"'>
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 <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 karl 1.1
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"'>
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"'>
588 </span></span><![endif]>field=value where fields are all represented by
589 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"'>
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 karl 1.1 <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"'>
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"'>
609 </span><![endif]>sort out all option tag parameters defined by the option table
610 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"'>
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 karl 1.1 <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"'>
630 </span></span><![endif]>-namespace namespace</p>
631
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"'>
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 karl 1.1 style='font:7.0pt "Times New Roman"'>
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"'>
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 list .5in'><![if !supportLists]><span style='font-family:Symbol'>·<span
653 style='font:7.0pt "Times New Roman"'>
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"'>
661 </span></span><![endif]>-localonly</p>
662 karl 1.1
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"'>
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"'>
673 </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"'>
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 karl 1.1 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"'>
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 style='font:7.0pt "Times New Roman"'>
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"'>
|
741 karl 1.1
742 <h3>Determining the host for a command</h3>
743
744 <p class=MsoNormal>We must determine the host for each command input with some
745 sort of option so that set once, the same host is repeated for all successive
746 commands until changed.<span style="mso-spacerun: yes"> </span>There are a
747 couple of alternatives here.</p>
748
749 <ul style='margin-top:0in' type=disc>
750 <li class=MsoNormal style='mso-list:l2 level1 lfo9;tab-stops:list .5in'>The
751 target object – We are looking seriously at changing the CIMClient
752 interfaces so that instead of namespace, object input parameters, we supply
753 only a single parameter on input, the object name (Remember that the
754 object name consists of the namespace path and the model path.<span
755 style="mso-spacerun: yes"> </span>The namespace path allows for inclusion
756 of type (Http, etc.) host, and namespace). Thus we could allow only a
757 single input parameter, the object path and use this as a common parameter
758 for all commands. By applying a few rules about saving this between
759 commands (ex. each exe saves this for future use in the same console
760 session ex. an env var), and claiifying how we handle partials (ex. the
761 class name only), etc. we could manage with a single parameter but fairly
762 karl 1.1 complex processing</li>
763 <li class=MsoNormal style='mso-list:l2 level1 lfo9;tab-stops:list .5in'>Separate
764 parameters as we do today so that we would have parameters for host name,
765 namespace, and object name.</li>
766 </ul>
767
768 <p class=MsoNormal>Not sure which to apply.<span style="mso-spacerun: yes">
769 </span>I suggest that the easiest might be to do both in such a way that the
770 parameters are optional so that the user could:</p>
771
772 <ul style='margin-top:0in' type=disc>
773 <li class=MsoNormal style='mso-list:l0 level1 lfo10;tab-stops:list .5in'>Input
774 the complete object - -O localhost:5988/CIMV2/CIM_Door</li>
775 <li class=MsoNormal style='mso-list:l0 level1 lfo10;tab-stops:list .5in'>Input
776 separately - -H localhost –P 5988 –N CIMV2 –C CIM_Door</li>
777 </ul>
778
779 <p class=MsoNormal>Since all would be optional with proper defaults except that
780 there has to be a CIM_Door from somewhere, the user can have his choice.</p>
781
782 <h2>Output</h2>
783 karl 1.1
784 <p>All output has to be either to file or ascii manageable in some way by scripting
785 tools.</p>
786
787 <p>I propose the following options on output:</p>
788
789 <p>Commands that return lists – return the results as a list. We can make the
790 list mechanism more flexible by allowing the specification of list separator
791 and possible header and trailer on the list.<span style="mso-spacerun: yes">
792 </span>The default separator could then be CRLF and the default header and
793 trailers empty.<span style="mso-spacerun: yes"> </span>The headers and trailers
794 could be modified by input <span style="mso-spacerun: yes"> </span>parameters
795 (cmdline, envvar, configfile).</p>
796
797 <p><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
798
799 <p>Commands that return objects – We need a way to represent these
800 objects.<span style="mso-spacerun: yes"> </span>The two most obvious forms
801 are: XML and MOF, both of which are largely supported in existing functions in
802 the base object system with functions like toXML and toMof.<span
803 style="mso-spacerun: yes"> </span>I think that we can use these functions
804 karl 1.1 directly to provide output.<span style="mso-spacerun: yes"> </span>I suggest
805 that we provide a parameter that would allow the selection of one of the
806 several output forms.</p>
807
808 <p><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
809
810 <p>Other commands – There are probably some other output forms that we have not
811 thought out yet. In particular, we may have to do something special with getproperty,
812 invoke method, etc.<span style="mso-spacerun: yes"> </span>This we can attack
813 as it arrives.</p>
814
815 <h2>Extra Commands</h2>
816
817 <p class=MsoNormal>It appears obvious that we will have to also create some
818 extra commands above and beyond the existing basic CIM Operations.<span
819 style="mso-spacerun: yes"> </span>The following list comes to mind initially:</p>
820
821 <ul style='margin-top:0in' type=disc>
822 <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'>Get superclass</li>
823 <li class=MsoNormal style='mso-list:l9 level1 lfo8;tab-stops:list .5in'>TBD</li>
824 </ul>
825 karl 1.1
826 <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
827
828 <h2>Open issues</h2>
829
830 <p class=MsoNormal>Handling the error return – What should we do?<span
831 style="mso-spacerun: yes"> </span>Think that the choices are to do an error
832 return from the code itself or something distinctive in the output that the user
833 can recognize.<span style="mso-spacerun: yes"> </span>The error return with a
834 set of codes sounds logical at first glance.</p>
835
836 <h2>The Commands</h2>
837
838 <h3>BasicClass operations</h3>
839
840 <h4>Getclass</h4>
841
842 <h5>C++ Function</h5>
843
844 <p class=MsoNormal><span style="mso-spacerun: yes"> </span>virtual CIMClass
845 getClass(<o:p></o:p></p>
846 karl 1.1
847 <p class=MsoNormal><span style='mso-tab-count:1'> </span>const
848 String& nameSpace,<o:p></o:p></p>
849
850 <p class=MsoNormal><span style='mso-tab-count:1'> </span>const
851 String& className,<o:p></o:p></p>
852
853 <p class=MsoNormal><span style='mso-tab-count:1'> </span>Boolean
854 localOnly = true,<o:p></o:p></p>
855
856 <p class=MsoNormal><span style='mso-tab-count:1'> </span>Boolean
857 includeQualifiers = true,<o:p></o:p></p>
858
859 <p class=MsoNormal><span style='mso-tab-count:1'> </span>Boolean
860 includeClassOrigin = false,<o:p></o:p></p>
861
862 <p class=MsoNormal><span style='mso-tab-count:1'> </span>const CIMPropertyList&
863 propertyList =CIMPropertyList());</p>
864
865 <h5>Input Parameters</h5>
866
867 karl 1.1 <p class=MsoNormal>Namespace(String)</p>
868
869 <p class=MsoNormal>ClassName(String)</p>
870
871 <p class=MsoNormal>LocalOnly(Boolean)</p>
872
873 <p class=MsoNormal>IncludeQualifiers(Boolean)</p>
874
875 <p class=MsoNormal>IncludeClassOrigin(Boolean)</p>
876
877 <p class=MsoNormal>PropertyList(definitely optional)</p>
878
879 <h5>Output</h5>
880
881 <p class=MsoNormal>Returns either error on the Class information.<span
882 style="mso-spacerun: yes"> </span>Here we can chose to output it in either MOF
883 or XML form</p>
884
885 <h4>Deleteclass</h4>
886
887 <h4>Createclass</h4>
888 karl 1.1
889 <h4>Modifyclass</h4>
890
891 <h4>Enumerateclasses</h4>
892
893 <h4>Enumerateclassnames</h4>
894
895 <h3>Instance</h3>
896
897 <h4>GetInstance</h4>
898
899 <h4>DeleteInstance</h4>
900
901 <h4>CreateInstance</h4>
902
903 <h4>ModifyInstance</h4>
904
905 <h4>EnumerateInstances</h4>
906
907 <h4>EnumerateInstanceNames</h4>
908
909 karl 1.1 <h4>GetProperty</h4>
910
911 <h4>SetProperty</h4>
912
913 <h3>Qualifiers</h3>
914
915 <h4>SetQualifier</h4>
916
917 <h4>GetQualifier</h4>
918
919 <h4>DeleteQualifier</h4>
920
921 <h4>EnumQualifiers</h4>
922
923 <h3>Associations</h3>
924
925 <h4>Associators</h4>
926
927 <h4>AssociatorNames</h4>
928
929 <h4>References</h4>
930 karl 1.1
931 <h4>ReferenceNames</h4>
932
933 <h3>Query</h3>
934
935 <h3>InvokeMethod</h3>
936
937 <h3><![if !supportEmptyParas]> <![endif]><o:p></o:p></h3>
938
939 <p><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
940
941 <p> <o:p></o:p></p>
942
943 <p> <o:p></o:p></p>
944
945 <p>---END OF DOCUMENT--<o:p></o:p></p>
946
947 <p class=MsoNormal><![if !supportEmptyParas]> <![endif]><o:p></o:p></p>
948
949 </div>
950
951 karl 1.1 </body>
952
953 </html>
|