1 martin 1.9 //%LICENSE////////////////////////////////////////////////////////////////
|
2 martin 1.10 //
|
3 martin 1.9 // Licensed to The Open Group (TOG) under one or more contributor license
4 // agreements. Refer to the OpenPegasusNOTICE.txt file distributed with
5 // this work for additional information regarding copyright ownership.
6 // Each contributor licenses this file to you under the OpenPegasus Open
7 // Source License; you may not use this file except in compliance with the
8 // License.
|
9 martin 1.10 //
|
10 martin 1.9 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
|
16 martin 1.10 //
|
17 martin 1.9 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
|
19 martin 1.10 //
|
20 martin 1.9 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
21 martin 1.10 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
22 martin 1.9 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23 // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24 // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25 // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
27 martin 1.10 //
|
28 martin 1.9 //////////////////////////////////////////////////////////////////////////
|
29 sushma.fernandes 1.1 //
30 //%/////////////////////////////////////////////////////////////////////////////
31
32 #ifndef Pegasus_RepositoryUpgrade_h
33 #define Pegasus_RepositoryUpgrade_h
34
35 #include <Pegasus/Repository/CIMRepository.h>
36
37 #include <Pegasus/Common/MessageQueue.h>
|
38 thilo.boehm 1.11
39 #include <Pegasus/General/DynamicLibrary.h>
|
40 sushma.fernandes 1.1
41 #include <Pegasus/Client/ClientAuthenticator.h>
42 #include <Pegasus/Client/CIMOperationRequestEncoder.h>
43
44 #include <Clients/cliutils/Command.h>
45 #include <Clients/cliutils/CommandException.h>
46
47 #include "RepositoryUpgradeException.h"
48
49 #include "SSPModule.h"
50 #include "SSPModuleTable.h"
51
52 PEGASUS_NAMESPACE_BEGIN
53
|
54 rohini.deshpande 1.17 #ifdef NS_INTEROP
55 const CIMNamespaceName PEGASUS_NAMESPACE_PGINTEROP=
56 CIMNamespaceName ("root/PG_InterOp");
57 #endif
58
|
59 sushma.fernandes 1.1 /**
60
|
61 david.dillard 1.3 The RepositoryUpgrade utility enables upgrade of a repository
|
62 sushma.fernandes 1.1 to a newer version of CIM schema.
|
63 david.dillard 1.3
|
64 sushma.fernandes 1.1 The utility will migrate schema extensions from an
65 older repository to a new repository that is already installed with a
|
66 david.dillard 1.3 new version of the CIM schema.
|
67 sushma.fernandes 1.1
68 The new and old repository paths are accepted as command line
69 arguments. The new Repository path specifes the location of the repository
70 initialized with a newer version of the CIM Schema. The old Repository path
|
71 david.dillard 1.3 specifies the location of the Repository that contains the user defined
|
72 sushma.fernandes 1.1 elements to be migrated.
|
73 david.dillard 1.3
|
74 sushma.fernandes 1.1 Class extensions, qualifier extensions, instances that have been
|
75 david.dillard 1.3 added to the pre-existing namespaces and new namespaces
|
76 sushma.fernandes 1.1 (includes qualifiers, classes and instances) that were
|
77 david.dillard 1.3 added to the old repository will be created in the
78 new Repository.
|
79 sushma.fernandes 1.1
80 During the process of upgrade if an error occurs, an error message is
81 displayed and the upgrade is aborted. If an Exception occurs during
82 the creation of a Schema element, the CIM/XML request for creating the
|
83 david.dillard 1.3 Schema element is logged to a file, an error message is displayed
84 and the upgrade process is aborted.
85
|
86 sushma.fernandes 1.1 */
87
|
88 david.dillard 1.3 //
|
89 sushma.fernandes 1.1 // In order to create CIM/XML request messages inherit from MessageQueue class.
90 //
91 class RepositoryUpgrade : public MessageQueue, public Command
92 {
93
94 public:
95
96 /**
|
97 david.dillard 1.3
|
98 sushma.fernandes 1.1 Constructs a RepositoryUpgrade and initializes instance variables.
|
99 david.dillard 1.3
|
100 sushma.fernandes 1.1 */
101 RepositoryUpgrade();
102
103 /**
104 Destructor.
105 */
106 ~RepositoryUpgrade ();
|
107 ouyang.jian 1.7
|
108 sushma.fernandes 1.1 /**
109 Parses the command line, validates the options, and sets instance
110 variables based on the option arguments.
111
112 @param argc the number of command line arguments
113 @param argv the string vector of command line arguments
114
115 @exception CommandFormatException if an error is encountered in
116 parsing the command line
117 */
|
118 david.dillard 1.3 void setCommand (Uint32 argc, char* argv []);
|
119 sushma.fernandes 1.1
120 /**
121 Executes the command and writes the results to the PrintWriters.
122
123 @param outPrintWriter the ostream to which output should be
124 written
125 @param errPrintWriter the ostream to which error output should be
126 written
127
128 @return 0 if the command is successful
129 1 if an error occurs in executing the command
130 */
131 Uint32 execute (
132 PEGASUS_STD(ostream)& outPrintWriter,
133 PEGASUS_STD(ostream)& errPrintWriter);
134
135 /**
136 The command name.
137 */
138 static const char COMMAND_NAME [];
139
140 sushma.fernandes 1.1 /**
|
141 david.dillard 1.3
142 Updates the new repository by importing class extensions, qualifiers,
143 instances and namespace additions that have been made to the
144 old repository.
|
145 sushma.fernandes 1.1
146 */
147 void upgradeRepository();
148
149 //
|
150 david.dillard 1.3 // Derived from the MessageQueue base class.
|
151 sushma.fernandes 1.1 //
152 virtual void handleEnqueue() {};
153
154 private:
|
155 david.dillard 1.3 //
|
156 sushma.fernandes 1.1 // The type of operation specified on the command line.
157 //
158 Uint32 _optionType;
159
160 //
161 // The usage string.
|
162 david.dillard 1.3 //
|
163 sushma.fernandes 1.1 String _usage;
164
165 //
166 // The option character used to specify the old repository path.
167 //
168 static const char _OPTION_OLD_REPOSITORY_PATH;
169
170 //
171 // The option character used to specify the new repository path.
172 //
173 static const char _OPTION_NEW_REPOSITORY_PATH;
174
175 //
176 // The option character used to display help info.
177 //
178 static const char _OPTION_HELP;
|
179 ouyang.jian 1.7
|
180 sushma.fernandes 1.1 //
181 // The option character used to display version info.
182 //
183 static const char _OPTION_VERSION;
184
185 //
186 // Label for the usage string for this command.
187 //
188 static const char _USAGE [];
189
190 //
191 // This constant signifies that an operation option has not been recorded
192 //
193 static const Uint32 _OPTION_TYPE_UNINITIALIZED;
194
195 //
|
196 david.dillard 1.3 // This constant signifies that the old repository path option has
|
197 sushma.fernandes 1.1 // been recorded
198 //
199 static const Uint32 _OPTION_TYPE_OLD_REPOSITORY_PATH;
200
201 //
|
202 david.dillard 1.3 // This constant signifies that the new repository path option has
|
203 sushma.fernandes 1.1 // been recorded
204 //
205 static const Uint32 _OPTION_TYPE_NEW_REPOSITORY_PATH;
206
207 //
208 // The constant representing a help operation
209 //
210 static const Uint32 _OPTION_TYPE_HELP;
211
212 //
213 // The constant representing a version display operation
214 //
215 static const Uint32 _OPTION_TYPE_VERSION;
216
|
217 rohini.deshpande 1.17 #ifdef NS_INTEROP
218 //
219 // The option character used for interop support.
220 //
221 static const char _OPTION_INTEROP;
222
223 //
224 // The constant representing that interop option has been specified
225 //
226 static const Uint32 _OPTION_TYPE_INTEROP;
227
228 //
229 // Indicates whether root/PG_InterOp has to be changed to interop
230 //
231 Boolean _optionInterop;
232 #endif
233
|
234 sushma.fernandes 1.1 //
235 // Contains the old repository path.
236 //
237 String _oldRepositoryPath;
238
239 //
240 // Contains the new repository path.
241 //
242 String _newRepositoryPath;
|
243 david.dillard 1.3
|
244 sushma.fernandes 1.1 //
245 // Indicates that the old repository path is set.
246 //
247 Boolean _oldRepositoryPathSet;
248
249 //
250 // Indicates that the new repository path is set.
251 //
252 Boolean _newRepositoryPathSet;
253
254 //
|
255 sushma.fernandes 1.2 // Indicates whether the Special Processing modules have been initialized.
256 //
257 Boolean _modulesInitialized;
258
259 //
|
260 sushma.fernandes 1.1 // Instance of CIMRepository used to access classes and namespaces from
261 // the old repository.
262 //
263 CIMRepository* _oldRepository;
264
265 //
266 // Instance of CIMRepository used to access classes and namespaces from
267 // the new repository.
268 //
269 CIMRepository* _newRepository;
270
271 //
272 // Instance of Client Authenticator used by Error processing to generate
273 // a log of a failed CIM/XML request.
274 //
275 ClientAuthenticator _authenticator;
276
277 //
278 // Instance of request encoder used by error processing to generate
279 // a log of a failed CIM/XML request.
280 //
281 sushma.fernandes 1.1 CIMOperationRequestEncoder* _requestEncoder;
282
283 //
|
284 mateus.baur 1.6 // Contains the list of classes to be ignored in the InterOp namespace.
285 //
286 Array<CIMName> _interopIgnoreClasses;
287
288 //
|
289 sushma.fernandes 1.1 // Constant representing the name of the VERSION qualifier.
290 //
|
291 karl 1.8 static const String _VERSION_QUALIFIER_NAME;
|
292 sushma.fernandes 1.1
293 //
|
294 david.dillard 1.3 // Defines the file extension for a CIM/XML request file.
|
295 sushma.fernandes 1.1 //
|
296 karl 1.8 static const String _FILE_EXTENSION;
|
297 sushma.fernandes 1.1
298 //
299 // Defines the path to store CIM/XML log file for a failed request.
300 //
|
301 karl 1.8 static const String _LOG_PATH;
|
302 sushma.fernandes 1.1
303 //
304 // Count to keep track of failed instance creations. This count
305 // is used in the filename that will log the failed request.
306 //
307 Uint32 instanceCount;
308
309 //
310 // Count to keep track of failed qualifier creations. This count
311 // is used in the filename that will log the failed request.
312 //
313 Uint32 qualifierCount;
314
|
315 sushma.fernandes 1.2 #ifdef ENABLE_MODULE_PROCESSING
|
316 sushma.fernandes 1.1 //
317 // Contains handles to the Special Processing shared libraries.
318 //
319 DynamicLibrary _library[SSPModuleTable::NUM_MODULES];
320
321 //
322 // Indicates that the Special Processing Module is interested in
323 // processing classes.
324 //
325 static const char* _CLASS_ONLY;
326
327 //
328 // Indicates that the Special Processing Module is interested in
329 // processing qualifiers.
330 //
331 static const char* _QUALIFIER_ONLY;
332
333 //
334 // Indicates that the Special Processing Module is interested in processing
335 // instances.
336 //
337 sushma.fernandes 1.1 static const char* _INSTANCE_ONLY;
338
339 //
340 // Indicates that the Special Processing Module is interested in
341 // processing classes, qualifiers and instances.
342 //
343 static const char* _ALL;
344
345 //
346 // Special Processing Module entry point.
347 //
|
348 david.dillard 1.3 typedef SchemaSpecialProcessModule
|
349 sushma.fernandes 1.1 * (*CREATE_SSPMODULE_FUNCTION)();
350
351 //
352 // Contains the handles to Special Processing Modules.
353 //
354 SchemaSpecialProcessModule* _sspModule[SSPModuleTable::NUM_MODULES];
|
355 sushma.fernandes 1.2 #endif
356
357 //
358 // Contains the PEGASUS_HOME environment variable value used in
359 // locating the Special Processing shared libraries.
360 //
361 String _pegasusHome;
|
362 sushma.fernandes 1.1
363 //
|
364 david.dillard 1.3 // Compares the namespaces passed and returns namespaces that are present
|
365 sushma.fernandes 1.1 // in the old but not in the new repository.
366 //
|
367 karl 1.8 // @param oldNamespaces a list of namespaces in old repository
368 // @param newNamespaces a list of namespaces in new repository
|
369 sushma.fernandes 1.1 //
370 // @return a list of missing namespaces
371 //
372 Array<CIMNamespaceName> _compareNamespaces(
|
373 david.dillard 1.3 const Array<CIMNamespaceName>& oldNamespaces ,
|
374 sushma.fernandes 1.1 const Array<CIMNamespaceName>& newNamespaces);
375
376 //
377 // Creates namespaces in the new repository. Also adds the classes,
378 // qualifiers from the namespaces into the new repository. Any instances
379 // that exist in the given namespaces will be created by the _addInstances
380 // method.
381 //
|
382 karl 1.8 // @param namespaces a list of namespaces to be added.
|
383 david.dillard 1.3 //
|
384 sushma.fernandes 1.1 void _addNamespaces(const Array<CIMNamespaceName>& namespaces);
385
|
386 david.dillard 1.3 //
|
387 sushma.fernandes 1.1 // Identifies the missing classes and existing classes and
|
388 david.dillard 1.3 // passes them to the _processNewClasses and _processExistingClasses
|
389 sushma.fernandes 1.1 // methods.
390 //
|
391 karl 1.8 // @param namespaceName namespace that is getting compared.
|
392 sushma.fernandes 1.1 //
|
393 karl 1.8 // @param oldClasses classes in the old repository.
|
394 sushma.fernandes 1.1 //
|
395 karl 1.8 // @param newClasses classes in the new repository.
|
396 david.dillard 1.3 //
|
397 karl 1.8 void _processClasses( const CIMNamespaceName& namespaceName,
398 const Array<CIMName>& oldClasses,
399 Array<CIMName>& newClasses);
|
400 sushma.fernandes 1.1
|
401 rohini.deshpande 1.17 #ifdef NS_INTEROP
402 void _processInstance( CIMInstance&, Array<CIMName>);
403 #endif
404
|
405 david.dillard 1.3 //
|
406 sushma.fernandes 1.1 // Processes the new classes in the hierarchical order and passes them to
407 // _addClassToRepository.
408 //
|
409 karl 1.8 // @param namespaceName namespace that is getting compared.
410 // @param oldClasses classes in the old repository.
411 // @param newClasses classes in the new repository.
412 //
413 void _processNewClasses( const CIMNamespaceName& namespaceName,
414 Array<CIMName>& oldClasses,
415 Array<CIMName>& newClasses);
|
416 sushma.fernandes 1.1
417
418 //
|
419 david.dillard 1.3 // Performs a version comparison with the existing classes in the new
420 // repository. The following lists the behavior:
|
421 sushma.fernandes 1.1 //
422 // 1. The version number existed in the old but not the new class.
423 // A warning message is displayed. The class is not imported to the
424 // new repository.
425 // 2. Both classes contain versions and the old version is greater
|
426 david.dillard 1.3 // than the new version. A warning message is displayed. The class
|
427 sushma.fernandes 1.1 // is not imported to the new repository.
|
428 david.dillard 1.3 //
|
429 sushma.fernandes 1.1 // If the new Repository contains a class with a higher version number
430 // then no messages are displayed.
431 //
|
432 karl 1.8 // @param namespaceName namespacename
433 // @param existingClasses list of classes already existing in the new
|
434 sushma.fernandes 1.1 // repository
435 //
436 void _processExistingClasses (const CIMNamespaceName& namespaceName,
437 const Array<CIMName>& existingClasses);
438
439
440 //
441 // Adds a class to the new repository.
442 //
443 // @param namespaceName namespace to which the class belongs
444 //
445 // @param className name of the class to be added
446 //
447 // @param existingClasses list of classes that are already existing
448 // in the new repository
449 // @return 0 if the class was added successfully
450 //
451 // 1 if the class addition failed because a
452 // dependent class did not exist. In this case
453 // the class creation will be retried.
454 //
455 sushma.fernandes 1.1 Uint32 _addClassToRepository (const CIMNamespaceName& namespaceName,
456 const CIMName& className,
457 const Array<CIMName> existingClasses);
458
459 //
|
460 sahana.prabhakar 1.14 // Check if the class exists in the old repository.
461 //
462 // @param namespaceName namespace to which the class belongs
463 //
464 // @param className name of the class to be added.
465 //
466 // @param dependenClassName class on which className is dependent on.
467
468 // @return true if dependenClassName exists.
469 //
470 // exception if the dependentClassName does not exist.
471 CIMClass _checkIfDependentClassExists(
472 const CIMNamespaceName& namespaceName,
473 const CIMName& className,
474 const CIMName& dependentClassName);
475
476 //
|
477 david.dillard 1.3 // Adds instances from the old repository into the new repository.
478 // If an instance already exists in the new repository then it
|
479 sushma.fernandes 1.1 // is not imported from the old repository.
|
480 david.dillard 1.3 //
|
481 sushma.fernandes 1.1 void _addInstances ();
482
483 //
|
484 thilo.boehm 1.15 // Removes instances from the new repository when no loger used.
485 //
486 void _removeInstances();
487
488 //
|
489 sushma.fernandes 1.1 // Adds qualifiers from the old repository into the new repository.
490 // If a qualifier already exists in the new repository then it
491 // is not imported.
492 //
|
493 karl 1.8 // @param CIMNamespaceName contains the Namespace name.
|
494 sushma.fernandes 1.1 //
|
495 dl.meetei 1.16 void _addQualifiers (const CIMNamespaceName &namespaceName);
|
496 sushma.fernandes 1.1
497 //
|
498 david.dillard 1.3 // Logs a failed CIM/XML request in to an output file.
499 //
|
500 karl 1.8 // @param outputFile output filename.
|
501 sushma.fernandes 1.1 //
502 void _logRequestToFile ( const String& outputFile );
503
|
504 david.dillard 1.3 //
|
505 sushma.fernandes 1.1 // Logs an error message to indicate an error while adding a class.
506 //
|
507 karl 1.8 // @param CIMNamespaceName contains the Namespace name.
|
508 sushma.fernandes 1.1 //
509 // @param CIMClass contains the class.
|
510 david.dillard 1.3 //
511 // @param message contains the error message if available,
512 // otherwise set to String::EMPTY
513 //
|
514 sushma.fernandes 1.1 // @exception logs the request and propagates the
|
515 david.dillard 1.3 // error encountered during create class.
|
516 sushma.fernandes 1.1 //
|
517 david.dillard 1.3 void _logCreateClassError(
518 const CIMNamespaceName& namespaceName,
|
519 sushma.fernandes 1.1 const CIMClass& oldClass,
|
520 david.dillard 1.3 const String& message);
|
521 sushma.fernandes 1.1
|
522 david.dillard 1.3 //
|
523 sushma.fernandes 1.1 // Logs an error message to indicate an error while adding an instance.
524 //
|
525 karl 1.8 // @param CIMNamespaceName contains the Namespace name.
|
526 david.dillard 1.3 //
|
527 sushma.fernandes 1.1 // @param CIMInstance contains the instance.
|
528 david.dillard 1.3 //
529 // @param message contains the error message if available
530 // otherwise set to String::EMPTY
|
531 sushma.fernandes 1.1 //
532 // @exception logs the request and propagates the
|
533 david.dillard 1.3 // error encountered during create instance.
|
534 sushma.fernandes 1.1 //
|
535 david.dillard 1.3 void _logCreateInstanceError(
536 const CIMNamespaceName& namespaceName,
|
537 sushma.fernandes 1.1 const CIMInstance& instance,
|
538 david.dillard 1.3 const String& message);
|
539 sushma.fernandes 1.1
|
540 david.dillard 1.3 //
|
541 kavita.gupta 1.12 // Logs an error message to indicate an error while deleting an instance.
542 //
543 // @param CIMNamespaceName contains the Namespace name.
544 //
545 // @param CIMObjectPath contains the required instance object path.
546 //
547 // @param message contains the error message if available
548 // otherwise set to String::EMPTY
549 //
550 // @exception logs the request and propagates the
551 // error encountered during delete instance.
552 //
553 void _logDeleteInstanceError(
554 const CIMNamespaceName& namespaceName,
555 const CIMObjectPath& instanceName,
556 const String& message);
557
558 //
|
559 sushma.fernandes 1.1 // Logs an error message to indicate an error while adding an qualifier.
560 //
|
561 karl 1.8 // @param CIMNamespaceName contains the Namespace name.
|
562 david.dillard 1.3 //
|
563 sushma.fernandes 1.1 // @param CIMQualifierDecl contains the qualifier.
|
564 david.dillard 1.3 //
565 // @param message contains the error message if available
566 // otherwise set to String::EMPTY
|
567 sushma.fernandes 1.1 //
568 // @exception logs the request and propagates the
|
569 david.dillard 1.3 // error encountered during set qualifier.
|
570 sushma.fernandes 1.1 //
|
571 david.dillard 1.3 void _logSetQualifierError(
572 const CIMNamespaceName& namespaceName,
|
573 sushma.fernandes 1.1 const CIMQualifierDecl& qualifier,
|
574 david.dillard 1.3 const String& message);
|
575 sushma.fernandes 1.1
|
576 kavita.gupta 1.12 /**
577 Updates the Subscription instances in the repository. It calls
578 _updateFilterHandlerReferences() to update the SystemName key
579 in filter and hadler references.
580 @param nameSpace The current namespace being considered
581 @param className The name of the subscription, handler or filter
582 class whose instances in the current namespace
583 are to be checked and updated in case there
584 is any inconsistency in system namecurrent
585 namespace being considered
586 */
587 void _updateSubscriptionInstancesInRepository(
588 const CIMNamespaceName& nameSpace,
589 const CIMName& className);
590
591 /**
592 Updates the Handler, Filter and ObjectManager instances in the
593 repository. It checks for the SystemName property value. If there
594 is any inconsistency with the current system name retrieved using
595 System::getFullyQualifiedSystemName() then the SystemName property
596 and keyBindings are updated to the current value.
597 kavita.gupta 1.12
598 @param nameSpace The current namespace being considered
599 @param className The name of the handler, filter or objectManager
600 class whose instances in the current namespace
601 are to be checked and updated in case there
602 is any inconsistency in system namecurrent
603 namespace being considered
604 */
605 void _updateSystemNameKeyPropertyOfInstancesForClass(
606 const CIMNamespaceName& nameSpace,
607 const CIMName& className);
608
609 /**
610 Updates the SytemName key property in Filter and Handler
611 references. It checks for the SystemName value in the
612 keyBindings of Filter and Handler references. If there is any
613 inconsistency with the current system name retrieved using
614 System::getFullyQualifiedSystemName() then the SystemName
615 keyBindings are updated to the current value.
616
617 @param instance The current subscription instance
618 kavita.gupta 1.12 @param propertyName The property of susbscription which needs to be
619 updated for correct system name. Its value is
620 either Filter or Handler
621 */
622 Boolean _updateFilterHandlerReference(
623 CIMInstance& instance,
624 const CIMName& propertyName);
625
626 /**
627 This function updates SystemName key property in subscription,
628 filter, handler and objectmanager instances to current System Name
629 */
630 void _updateSystemNameKeyProperty();
631
|
632 sushma.fernandes 1.2 #ifdef ENABLE_MODULE_PROCESSING
|
633 david.dillard 1.3 //
|
634 sushma.fernandes 1.1 // Initializes the Special Processing Modules.
635 //
636 void _initSSPModule();
637
638 //
639 // Unloads the Special Processing Modules.
640 //
641 void _cleanupSSPModule();
642
643 //
644 // Loads the Special Processing shared library module.
645 //
646 DynamicLibrary _loadSSPModule(const String& moduleName);
647
648 //
649 // Invokes the Qualifier Special Processing Modules.
650 //
651 // @param oldQualifier input qualifier to be processed
|
652 david.dillard 1.3 //
|
653 sushma.fernandes 1.1 // @param newQualifier processed qualifier to be returned
654 //
655 // @return true if the qualifier must be created
656 // false if the qualifier must be ignored
657 //
|
658 david.dillard 1.3 Boolean _invokeModules( CIMQualifierDecl& oldQualifier,
|
659 sushma.fernandes 1.1 CIMQualifierDecl& newQualifir);
660
661 //
662 // Invokes the Class Special Processing Modules.
663 //
664 // @param oldClass input class to be processed
|
665 david.dillard 1.3 //
|
666 sushma.fernandes 1.1 // @param newClass processed class to be returned
667 //
668 // @return true if the class must be created
669 // false if the class must be ignored
670 //
|
671 david.dillard 1.3 Boolean _invokeModules( CIMClass& oldClass,
|
672 sushma.fernandes 1.1 CIMClass& newClass);
673
674 //
675 // Invokes the Instance Special Processing Modules.
676 //
677 // @param oldInstance input instance to be processed
|
678 david.dillard 1.3 //
|
679 sushma.fernandes 1.1 // @param newInstance processed instance to be returned
680 //
681 // @return true if the instance must be created
682 // false if the instance must be ignored
683 //
|
684 david.dillard 1.3 Boolean _invokeModules( CIMInstance& oldInstance,
|
685 sushma.fernandes 1.1 CIMInstance& newInstance);
|
686 david.dillard 1.3
|
687 sushma.fernandes 1.1 //
688 // Creates a Special Processing Module.
689 //
690 // @param library handle to the shared library
|
691 david.dillard 1.3 //
692 // @return SchemaSpecialProcessModule handle to the Special Processing
|
693 sushma.fernandes 1.1 // library
694 //
695 SchemaSpecialProcessModule * _createSSPModule(DynamicLibrary& library);
|
696 sushma.fernandes 1.2 #endif
|
697 sushma.fernandes 1.1
698 //
699 // Compares two version strings.
700 //
701 // @param oldVersion version number of the old class
|
702 david.dillard 1.3 //
|
703 sushma.fernandes 1.1 // @param newVersion version number of the new class
704 //
705 // @return true if the old class has a higher version number
706 //
|
707 david.dillard 1.3 // false if the old class has a lower or the same
|
708 sushma.fernandes 1.1 // version number
709 //
710 Boolean _compareVersion( const String& oldVersion,
711 const String& newVersion );
712
713 };
714
715 PEGASUS_NAMESPACE_END
716
717 #endif // Pegasus_RepositoryUpgrade_h
|