(file) Return to RepositoryUpgrade.h CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Clients / repupgrade

  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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2