(file) Return to ProviderRegistrationProvider.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / ControlProviders / ProviderRegistrationProvider

Diff for /pegasus/src/Pegasus/ControlProviders/ProviderRegistrationProvider/ProviderRegistrationProvider.cpp between version 1.108 and 1.117

version 1.108, 2008/09/05 20:40:39 version 1.117, 2010/10/29 05:29:51
Line 1 
Line 1 
 //%2006////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;  //
 // EMC Corporation; VERITAS Software Corporation; The Open Group.  // Permission is hereby granted, free of charge, to any person obtaining a
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  // copy of this software and associated documentation files (the "Software"),
 // EMC Corporation; Symantec Corporation; The Open Group.  // to deal in the Software without restriction, including without limitation
 //  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // and/or sell copies of the Software, and to permit persons to whom the
 // of this software and associated documentation files (the "Software"), to  // Software is furnished to do so, subject to the following conditions:
 // deal in the Software without restriction, including without limitation the  //
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // The above copyright notice and this permission notice shall be included
 // sell copies of the Software, and to permit persons to whom the Software is  // in all copies or substantial portions of the Software.
 // furnished to do so, subject to the following conditions:  //
 //  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
 // //
 //==============================================================================  //////////////////////////////////////////////////////////////////////////
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include "ProviderRegistrationProvider.h" #include "ProviderRegistrationProvider.h"
Line 41 
Line 39 
 #include <Pegasus/Common/MessageLoader.h> //l10n #include <Pegasus/Common/MessageLoader.h> //l10n
 #include <Pegasus/Common/Constants.h> #include <Pegasus/Common/Constants.h>
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
 #include <Pegasus/Common/CIMNameUnchecked.h>  #include <Pegasus/Common/CIMNameCast.h>
  
 #include <Pegasus/Server/ProviderRegistrationManager/ProviderManagerMap.h> #include <Pegasus/Server/ProviderRegistrationManager/ProviderManagerMap.h>
  
Line 50 
Line 48 
 /** /**
    The name of the CapabilityID property for provider capabilities class    The name of the CapabilityID property for provider capabilities class
 */ */
 static const CIMName _PROPERTY_CAPABILITYID = CIMNameUnchecked("CapabilityID");  static const CIMName _PROPERTY_CAPABILITYID = CIMNameCast("CapabilityID");
  
 /** /**
    stopping provider method    stopping provider method
 */ */
 static const CIMName _STOP_PROVIDER = CIMNameUnchecked("Stop");  static const CIMName _STOP_PROVIDER = CIMNameCast("Stop");
  
 /** /**
    starting provider method    starting provider method
 */ */
 static const CIMName _START_PROVIDER = CIMNameUnchecked("Start");  static const CIMName _START_PROVIDER = CIMNameCast("Start");
   
   /**
      setting provider module group method
   */
   static const CIMName _SET_MODULEGROUPNAME = CIMNameCast("SetModuleGroupName");
   
   /**
      input param for setModuleGroupName name method
   */
   static const CIMName _PARAM_MODULEGROUPNAME = CIMNameCast("ModuleGroupName");
   
  
 ProviderRegistrationProvider::ProviderRegistrationProvider( ProviderRegistrationProvider::ProviderRegistrationProvider(
     ProviderRegistrationManager * providerRegistrationManager)     ProviderRegistrationManager * providerRegistrationManager)
Line 378 
Line 387 
                         " PG_ProviderModule class."));                         " PG_ProviderModule class."));
         }         }
  
           Uint32 bitnessIndx = instanceObject.findProperty(
                PEGASUS_PROPERTYNAME_MODULE_BITNESS);
   
           if (bitnessIndx != PEG_NOT_FOUND)
           {
               CIMValue value = instanceObject.getProperty(bitnessIndx).getValue();
               if (!value.isNull())
               {
                   if (value.getType() != CIMTYPE_UINT16)
                   {
                       throw PEGASUS_CIM_EXCEPTION(CIM_ERR_TYPE_MISMATCH,
                           PEGASUS_PROPERTYNAME_MODULE_BITNESS.getString());
                   }
                   Uint16 bitness;
                   value.get(bitness);
                   if(bitness != PG_PROVMODULE_BITNESS_DEFAULT
   #ifdef PEGASUS_PLATFORM_FOR_32BIT_PROVIDER_SUPPORT
                       && bitness != PG_PROVMODULE_BITNESS_32
                       && bitness != PG_PROVMODULE_BITNESS_64
   #endif
                       )
                   {
                       throw PEGASUS_CIM_EXCEPTION(CIM_ERR_NOT_SUPPORTED,
                           PEGASUS_PROPERTYNAME_MODULE_BITNESS.getString());
                   }
               }
           }
   
         if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND)         if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND)
         {         {
             throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER,             throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER,
Line 1069 
Line 1106 
         }         }
     }     }
  
   
     // if _PROPERTY_PROVIDERMODULE_NAME key not found     // if _PROPERTY_PROVIDERMODULE_NAME key not found
     if( !moduleFound)     if( !moduleFound)
     {     {
Line 1093 
Line 1131 
         // enable module         // enable module
         ret_value = _enableModule(objectReference, moduleName, al);         ret_value = _enableModule(objectReference, moduleName, al);
     }     }
       else if (methodName.equal(_SET_MODULEGROUPNAME))
       {
           String paramName;
           if (!inParameters.size() ||
               ((paramName = inParameters[0].getParameterName())
                   != _PARAM_MODULEGROUPNAME))
           {
               throw PEGASUS_CIM_EXCEPTION(CIM_ERR_INVALID_PARAMETER, paramName);
           }
           // set group
           String moduleGroupName;
           inParameters[0].getValue().get(moduleGroupName);
           ret_value = _setModuleGroupName(
               objectReference, moduleName, moduleGroupName, al);
       }
     else     else
     {     {
         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE,         throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE,
Line 1107 
Line 1160 
     handler.complete();     handler.complete();
 } }
  
   Sint16 ProviderRegistrationProvider::_setModuleGroupName(
       const CIMObjectPath & moduleRef,
       const String & moduleName,
       const String & moduleGroupName,
       const AcceptLanguageList & al)
   {
       Sint32 disableRC = _disableModule (moduleRef, moduleName, false, al);
   
       if (disableRC == -1)
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "DISABLE_PROVIDER_FAILED",
                   "disable the provider failed."));
       }
   
       if (disableRC == -2)
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "DISABLE_PROVIDER_FAILED_PROVIDER_BUSY",
                   "disable the provider failed: Provider is busy."));
       }
   
       String errorMsg;
   
       if (!_providerRegistrationManager->setProviderModuleGroupName(
           moduleName, moduleGroupName, errorMsg))
       {
           throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,
               MessageLoaderParms(
                   "ControlProviders.ProviderRegistrationProvider."
                       "ProviderRegistrationProvider."
                       "SET_PROVIDERMODULEGROUPNAME_FAILED",
                   "Failed to set the ModuleGroupName: $0.",
                   errorMsg));
       }
   
       // Enable the module only if it was previously enabled.
       if (disableRC == 0)
       {
           try
           {
               _enableModule(moduleRef, moduleName, al);
           }
           catch(const Exception &e)
           {
               PEG_TRACE((TRC_CONTROLPROVIDER,Tracer::LEVEL1,
                   "Exception caught while enabling the provider module %s : %s",
                   (const char*)moduleName.getCString(),
                   (const char*)e.getMessage().getCString()));
           }
           catch(...)
           {
               PEG_TRACE((
                   TRC_CONTROLPROVIDER,
                   Tracer::LEVEL1,
                   "Unknown error occurred while"
                       " enabling the provider modules %s.",
                   (const char*)moduleName.getCString()));
           }
       }
   
       return 0;
   }
   
   
 // get provider manager service // get provider manager service
 MessageQueueService * ProviderRegistrationProvider::_getProviderManagerService() MessageQueueService * ProviderRegistrationProvider::_getProviderManagerService()
 { {
Line 1140 
Line 1264 
         new AsyncLegacyOperationStart (         new AsyncLegacyOperationStart (
             NULL,             NULL,
             _queueId,             _queueId,
             disable_req,              disable_req);
             _queueId);  
  
     AsyncReply * asyncReply =     AsyncReply * asyncReply =
         _controller->ClientSendWait(_queueId, asyncRequest);         _controller->ClientSendWait(_queueId, asyncRequest);
Line 1178 
Line 1301 
         new AsyncLegacyOperationStart (         new AsyncLegacyOperationStart (
             NULL,             NULL,
             _queueId,             _queueId,
             enable_req,              enable_req);
             _queueId);  
  
     AsyncReply * asyncReply =     AsyncReply * asyncReply =
         _controller->ClientSendWait(_queueId, asyncRequest);         _controller->ClientSendWait(_queueId, asyncRequest);
Line 1290 
Line 1412 
         AsyncLegacyOperationStart asyncRequest(         AsyncLegacyOperationStart asyncRequest(
             NULL,             NULL,
             _queueId,             _queueId,
             termination_req,              termination_req);
             _queueId);  
  
         AutoPtr <AsyncReply> asyncReply(         AutoPtr <AsyncReply> asyncReply(
             _controller->ClientSendWait(_queueId, &asyncRequest));             _controller->ClientSendWait(_queueId, &asyncRequest));
Line 1688 
Line 1809 
             new AsyncLegacyOperationStart (             new AsyncLegacyOperationStart (
                 NULL,                 NULL,
                 _queueId,                 _queueId,
                 enable_req,                  enable_req);
                 _queueId);  
  
         AsyncReply * asyncReply =         AsyncReply * asyncReply =
             _controller->ClientSendWait(_queueId, asyncRequest);             _controller->ClientSendWait(_queueId, asyncRequest);
Line 1830 
Line 1950 
     CIMObjectPath reference(referenceStr);     CIMObjectPath reference(referenceStr);
  
     Array<CIMParamValue> inParams;     Array<CIMParamValue> inParams;
     Array<CIMParamValue> outParams;  
  
     try     try
     {     {
         AutoMutex mtx(_updateMtx);          CIMInvokeMethodRequestMessage* request =
         _cimomHandle.invokeMethod(              new CIMInvokeMethodRequestMessage(
             context,                  XmlWriter::getNextMessageId(),
             PEGASUS_NAMESPACENAME_INTEROP,             PEGASUS_NAMESPACENAME_INTEROP,
             reference,                  referenceStr,
             CIMNameUnchecked("updateCache"),                  "updateCache",
             inParams,             inParams,
             outParams);                  QueueIdStack(_controller->getQueueId()));
   
           request->operationContext = context;
   
           AsyncModuleOperationStart* moduleControllerRequest =
               new AsyncModuleOperationStart(
                   0,
                   _controller->getQueueId(),
                   PEGASUS_MODULENAME_INTEROPPROVIDER,
                   request);
   
           _controller->SendForget(moduleControllerRequest);
     }     }
     catch(const Exception &e)     catch(const Exception &e)
     {     {


Legend:
Removed from v.1.108  
changed lines
  Added in v.1.117

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2