version 1.96, 2007/04/20 18:26:56
|
version 1.107, 2008/08/29 09:22:32
|
|
|
#include <Pegasus/Common/System.h> | #include <Pegasus/Common/System.h> |
#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/CIMNameUnchecked.h> |
|
|
|
#include <Pegasus/Server/ProviderRegistrationManager/ProviderManagerMap.h> |
| |
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
|
| |
CIMInstance instance; | CIMInstance instance; |
| |
try |
instance = _providerRegistrationManager->getInstance( |
{ |
instanceReference, includeQualifiers, includeClassOrigin, propertyList); |
instance = _providerRegistrationManager->getInstance(instanceReference, |
|
includeQualifiers, |
|
includeClassOrigin, |
|
propertyList); |
|
} |
|
catch(const CIMException&) |
|
{ |
|
throw; |
|
} |
|
| |
handler.deliver(instance); | handler.deliver(instance); |
| |
|
|
| |
Array<CIMInstance> enumInstances; | Array<CIMInstance> enumInstances; |
| |
try |
|
{ |
|
enumInstances = | enumInstances = |
_providerRegistrationManager->enumerateInstancesForClass( | _providerRegistrationManager->enumerateInstancesForClass( |
classReference, | classReference, |
includeQualifiers, | includeQualifiers, |
includeClassOrigin, | includeClassOrigin, |
propertyList); | propertyList); |
} |
|
catch(const CIMException&) |
|
{ |
|
throw; |
|
} |
|
| |
handler.deliver(enumInstances); | handler.deliver(enumInstances); |
| |
|
|
Array<CIMObjectPath> enumInstanceNames; | Array<CIMObjectPath> enumInstanceNames; |
| |
// get all instance names from repository | // get all instance names from repository |
try |
|
{ |
|
enumInstanceNames = | enumInstanceNames = |
_providerRegistrationManager->enumerateInstanceNamesForClass( | _providerRegistrationManager->enumerateInstanceNamesForClass( |
classReference); | classReference); |
} |
|
catch(const CIMException&) |
|
{ |
|
throw; |
|
} |
|
| |
handler.deliver(enumInstanceNames); | handler.deliver(enumInstanceNames); |
| |
|
|
userName = String::EMPTY; | userName = String::EMPTY; |
} | } |
| |
|
#ifndef PEGASUS_OS_ZOS |
if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) | if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,MessageLoaderParms( | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,MessageLoaderParms( |
|
|
"You must have superuser privilege to modify the" | "You must have superuser privilege to modify the" |
" registration.")); | " registration.")); |
} | } |
|
#endif |
| |
if(!instanceReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) | if(!instanceReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) |
{ | { |
|
|
// begin processing the request | // begin processing the request |
handler.processing(); | handler.processing(); |
| |
try |
_providerRegistrationManager->modifyInstance( |
{ |
instanceReference, instanceObject, includeQualifiers, propertyArray); |
_providerRegistrationManager->modifyInstance(instanceReference, |
|
instanceObject, |
#ifdef PEGASUS_ENABLE_INTEROP_PROVIDER |
includeQualifiers, |
_sendUpdateCacheMessagetoInteropProvider(context); |
propertyArray); |
#endif |
} |
|
catch(const CIMException&) |
|
{ |
|
throw; |
|
} |
|
| |
// complete processing the request | // complete processing the request |
handler.complete(); | handler.complete(); |
|
|
userName = String::EMPTY; | userName = String::EMPTY; |
} | } |
| |
|
#ifndef PEGASUS_OS_ZOS |
if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) | if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, MessageLoaderParms( | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, MessageLoaderParms( |
|
|
"SUPERUSER_PRIVILEGE_REQUIRED_REGISTER_PROVIDERS", | "SUPERUSER_PRIVILEGE_REQUIRED_REGISTER_PROVIDERS", |
"You must have superuser privilege to register providers.")); | "You must have superuser privilege to register providers.")); |
} | } |
|
#endif |
| |
CIMName className = instanceReference.getClassName(); | CIMName className = instanceReference.getClassName(); |
CIMNamespaceName nameSpace = instanceReference.getNameSpace(); | CIMNamespaceName nameSpace = instanceReference.getNameSpace(); |
|
|
if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULE_NAME) == | if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULE_NAME) == |
PEG_NOT_FOUND) | PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_NAME_IN_PG_PROVIDERMODULE", | "MISSING_NAME_IN_PG_PROVIDERMODULE", |
"Missing Name which is required property in PG_ProviderModule" |
"Missing Name which is required property in " |
" class.")); |
"PG_ProviderModule class.")); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_VENDOR) == PEG_NOT_FOUND) | if (instanceObject.findProperty(_PROPERTY_VENDOR) == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_VENDOR_IN_PG_PROVIDERMODULE", | "MISSING_VENDOR_IN_PG_PROVIDERMODULE", |
|
|
| |
if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND) | if (instanceObject.findProperty(_PROPERTY_VERSION) == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_VERSION_IN_PG_PROVIDERMODULE", | "MISSING_VERSION_IN_PG_PROVIDERMODULE", |
|
|
instanceObject.findProperty(_PROPERTY_INTERFACETYPE); | instanceObject.findProperty(_PROPERTY_INTERFACETYPE); |
if (ifcTypeIndex == PEG_NOT_FOUND) | if (ifcTypeIndex == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_INTERFACETYPE_IN_PG_PROVIDERMODULE", | "MISSING_INTERFACETYPE_IN_PG_PROVIDERMODULE", |
|
|
instanceObject.getProperty(ifcTypeIndex).getValue(). | instanceObject.getProperty(ifcTypeIndex).getValue(). |
get(ifcTypeString); | get(ifcTypeString); |
| |
if (ifcTypeString != "C++Default" |
String ifcEmptyVersion; |
#ifdef PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER |
if (!ProviderManagerMap::instance(). |
&& ifcTypeString != "CMPI" |
isValidProvMgrIfc(ifcTypeString, ifcEmptyVersion)) |
#endif |
|
#ifdef PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER |
|
&& (ifcTypeString != "JMPI") |
|
&& (ifcTypeString != "JMPIExperimental") |
|
#endif |
|
) |
|
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
MessageLoaderParms( | MessageLoaderParms( |
|
|
instanceObject.findProperty(_PROPERTY_INTERFACEVERSION); | instanceObject.findProperty(_PROPERTY_INTERFACEVERSION); |
if (ifcVersionIndex == PEG_NOT_FOUND) | if (ifcVersionIndex == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_INTERFACEVERSION_IN_PG_PROVIDERMODULE", | "MISSING_INTERFACEVERSION_IN_PG_PROVIDERMODULE", |
|
|
String ifcVersionString; | String ifcVersionString; |
instanceObject.getProperty(ifcVersionIndex).getValue(). | instanceObject.getProperty(ifcVersionIndex).getValue(). |
get(ifcVersionString); | get(ifcVersionString); |
if ( |
|
#ifdef PEGASUS_ENABLE_CMPI_PROVIDER_MANAGER |
if (!ProviderManagerMap::instance().isValidProvMgrIfc( |
(ifcTypeString == "CMPI" && |
ifcTypeString, ifcVersionString)) |
ifcVersionString != "2.0.0") || |
|
#endif |
|
#ifdef PEGASUS_ENABLE_JMPI_PROVIDER_MANAGER |
|
(ifcTypeString == "JMPI" && |
|
ifcVersionString != "1.0.0" && |
|
ifcVersionString != "2.0.0" && |
|
ifcVersionString != "2.2.0") || |
|
(ifcTypeString == "JMPIExperimental" && |
|
ifcVersionString != "0.0.1") || |
|
#endif |
|
(ifcTypeString == "C++Default" && |
|
ifcVersionString != "2.1.0" && |
|
ifcVersionString != "2.2.0" && |
|
ifcVersionString != "2.3.0" && |
|
ifcVersionString != "2.5.0" && |
|
ifcVersionString != "2.6.0")) |
|
{ | { |
String unsupported = "InterfaceVersion"; | String unsupported = "InterfaceVersion"; |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"UNSUPPORTED_INTERFACEVERSION_VALUE", | "UNSUPPORTED_INTERFACEVERSION_VALUE", |
"Unsupported InterfaceVersion value: \"$0\"",ifcVersionString)); |
"Unsupported InterfaceVersion value: \"$0\"", |
|
ifcVersionString)); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_LOCATION) == PEG_NOT_FOUND) | if (instanceObject.findProperty(_PROPERTY_LOCATION) == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_LOCATION_IN_PG_PROVIDERMODULE", | "MISSING_LOCATION_IN_PG_PROVIDERMODULE", |
|
|
#ifdef PEGASUS_DISABLE_PROV_USERCTXT | #ifdef PEGASUS_DISABLE_PROV_USERCTXT |
if (userContext != PG_PROVMODULE_USERCTXT_CIMSERVER) | if (userContext != PG_PROVMODULE_USERCTXT_CIMSERVER) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
|
|
} | } |
#else | #else |
if (!((userContext == PG_PROVMODULE_USERCTXT_REQUESTOR) || | if (!((userContext == PG_PROVMODULE_USERCTXT_REQUESTOR) || |
(userContext == PG_PROVMODULE_USERCTXT_DESIGNATED) || |
#ifndef PEGASUS_OS_ZOS |
|
(userContext == PG_PROVMODULE_USERCTXT_CIMSERVER) || |
(userContext == PG_PROVMODULE_USERCTXT_PRIVILEGED) || | (userContext == PG_PROVMODULE_USERCTXT_PRIVILEGED) || |
(userContext == PG_PROVMODULE_USERCTXT_CIMSERVER))) |
#endif |
|
(userContext == PG_PROVMODULE_USERCTXT_DESIGNATED))) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
MessageLoaderParms( | MessageLoaderParms( |
|
|
instanceObject.getProperty(designatedUserIndex).getValue() | instanceObject.getProperty(designatedUserIndex).getValue() |
.isNull()) | .isNull()) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
|
|
if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULENAME) == | if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULENAME) == |
PEG_NOT_FOUND) | PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_PROVIDERMODULENAME_IN_PG_PROVIDERCAPABILITIES", | "MISSING_PROVIDERMODULENAME_IN_PG_PROVIDERCAPABILITIES", |
|
|
PEG_NOT_FOUND) | PEG_NOT_FOUND) |
{ | { |
String missing = "ProviderName"; | String missing = "ProviderName"; |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider.MISSING_REQUIRED_PROPERTY", |
"ProviderRegistrationProvider." |
"Missing ProviderName which is required property in" |
"MISSING_PROVIDERNAME_IN_PG_PROVIDERCAPABILITIES", |
|
"Missing the required ProviderName property in " |
" PG_ProviderCapabilities class.")); | " PG_ProviderCapabilities class.")); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_CAPABILITYID) == | if (instanceObject.findProperty(_PROPERTY_CAPABILITYID) == |
PEG_NOT_FOUND) | PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSINGCAPABILITYID_IN_PG_PROVIDERCAPABILITIES", |
"MISSING_CAPABILITYID_IN_PG_PROVIDERCAPABILITIES", |
"Missing CapabilityID which is required property in" |
"Missing the required CapabilityID property in " |
" PG_ProviderCapabilities class.")); | " PG_ProviderCapabilities class.")); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_CLASSNAME) == PEG_NOT_FOUND) | if (instanceObject.findProperty(_PROPERTY_CLASSNAME) == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_CLASSNAME_IN_PG_PROVIDERCAPABILITIES", | "MISSING_CLASSNAME_IN_PG_PROVIDERCAPABILITIES", |
|
|
| |
if (namespacesArray.size() == 0) | if (namespacesArray.size() == 0) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_NAMESPACES_IN_PG_PROVIDERCAPABILITIES", | "MISSING_NAMESPACES_IN_PG_PROVIDERCAPABILITIES", |
|
|
| |
if (providerTypeArray.size() == 0) | if (providerTypeArray.size() == 0) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
|
|
#endif | #endif |
) | ) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider.UNSUPPORTED_" | "ProviderRegistrationProvider.UNSUPPORTED_" |
|
|
"Missing ProviderModuleName which is required property in" | "Missing ProviderModuleName which is required property in" |
" PG_ConsumerCapabilities class."); | " PG_ConsumerCapabilities class."); |
| |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms); |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, parms); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_PROVIDERNAME) == | if (instanceObject.findProperty(_PROPERTY_PROVIDERNAME) == |
|
|
"Missing ProviderName which is required property in" | "Missing ProviderName which is required property in" |
" PG_ConsumerCapabilities class."); | " PG_ConsumerCapabilities class."); |
| |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms); |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, parms); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_CAPABILITYID) == | if (instanceObject.findProperty(_PROPERTY_CAPABILITYID) == |
|
|
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_CAPABILITY_ID_WHICH_IS_REQUIRED", | "MISSING_CAPABILITY_ID_WHICH_IS_REQUIRED", |
"Missing CapabilityID which is required property in" |
"Missing the required CapabilityID property in " |
" PG_ConsumerCapabilities class."); | " PG_ConsumerCapabilities class."); |
| |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms); |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, parms); |
} | } |
| |
if (instanceObject.findProperty | if (instanceObject.findProperty |
|
|
"Missing ProviderType which is required property in" | "Missing ProviderType which is required property in" |
" PG_ConsumerCapabilities class."); | " PG_ConsumerCapabilities class."); |
| |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms); |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, parms); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_INDICATIONDESTINATIONS) == | if (instanceObject.findProperty(_PROPERTY_INDICATIONDESTINATIONS) == |
|
|
"Missing Destinations which is required property in" | "Missing Destinations which is required property in" |
" PG_ConsumerCapabilities class."); | " PG_ConsumerCapabilities class."); |
| |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, parms); |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, parms); |
} | } |
} | } |
else // PEGASUS_CLASSNAME_PROVIDER | else // PEGASUS_CLASSNAME_PROVIDER |
|
|
// Name and ProviderModuleName properties must be set | // Name and ProviderModuleName properties must be set |
// | // |
if (instanceObject.findProperty | if (instanceObject.findProperty |
(_PROPERTY_PROVIDER_NAME) == PEG_NOT_FOUND) |
(PEGASUS_PROPERTYNAME_NAME) == PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider.MISSING_REQUIRED_PROPERTY", |
"ProviderRegistrationProvider." |
"Missing Name which is required property in" |
"MISSING_NAME_IN_PG_PROVIDER", |
" PG_Provider class.")); |
"Missing the required Name property in PG_Provider " |
|
"class.")); |
} | } |
| |
if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULENAME) == | if (instanceObject.findProperty(_PROPERTY_PROVIDERMODULENAME) == |
PEG_NOT_FOUND) | PEG_NOT_FOUND) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"MISSING_PROVIDERMODULENAME_IN_PG_PROVIDER", | "MISSING_PROVIDERMODULENAME_IN_PG_PROVIDER", |
|
|
// begin processing the request | // begin processing the request |
handler.processing(); | handler.processing(); |
| |
try |
returnReference = _providerRegistrationManager->createInstance( |
{ |
instanceReference, instance); |
returnReference = |
|
_providerRegistrationManager->createInstance(instanceReference, |
#ifdef PEGASUS_ENABLE_INTEROP_PROVIDER |
instance); |
if(className.equal (PEGASUS_CLASSNAME_PROVIDER) || |
} |
className.equal (PEGASUS_CLASSNAME_PROVIDERCAPABILITIES)) |
catch(const CIMException&) |
|
{ | { |
throw; |
_sendUpdateCacheMessagetoInteropProvider(context); |
} | } |
|
#endif |
| |
handler.deliver(returnReference); | handler.deliver(returnReference); |
| |
|
|
userName = String::EMPTY; | userName = String::EMPTY; |
} | } |
| |
|
#ifndef PEGASUS_OS_ZOS |
if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) | if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,MessageLoaderParms( | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,MessageLoaderParms( |
|
|
"SUPERUSER_PRIVILEGE_REQUIRED_UNREGISTER_PROVIDERS", | "SUPERUSER_PRIVILEGE_REQUIRED_UNREGISTER_PROVIDERS", |
"You must have superuser privilege to unregister providers.")); | "You must have superuser privilege to unregister providers.")); |
} | } |
|
#endif |
| |
if(!instanceReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) | if(!instanceReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) |
{ | { |
|
|
// if _PROPERTY_PROVIDERMODULENAME key not found | // if _PROPERTY_PROVIDERMODULENAME key not found |
if( !moduleFound) | if( !moduleFound) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
|
|
// | // |
// disable the provider | // disable the provider |
// | // |
try |
Sint16 ret_value = _disableModule( |
{ |
instanceReference, moduleName, true, al); |
Sint16 ret_value = _disableModule(instanceReference, |
|
moduleName, true, al); |
|
| |
// | // |
// if the provider disable failed | // if the provider disable failed |
// | // |
// l10n |
|
if (ret_value == -1) | if (ret_value == -1) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
|
|
"DISABLE_PROVIDER_FAILED", | "DISABLE_PROVIDER_FAILED", |
"disable the provider failed.")); | "disable the provider failed.")); |
} | } |
|
|
// | // |
// The provider disable failed since there are pending requests | // The provider disable failed since there are pending requests |
// | // |
|
|
"disable the provider failed: Provider is busy.")); | "disable the provider failed: Provider is busy.")); |
} | } |
} | } |
catch(CIMException&) |
|
{ |
|
throw; |
|
} |
|
} |
|
| |
// | // |
// disable provider module before remove provider registration | // disable provider module before remove provider registration |
|
|
// if _PROPERTY_PROVIDERMODULE_NAME key not found | // if _PROPERTY_PROVIDERMODULE_NAME key not found |
if( !moduleFound) | if( !moduleFound) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED, |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
MessageLoaderParms( | MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider.NAME_KEY_NOT_FOUND", | "ProviderRegistrationProvider.NAME_KEY_NOT_FOUND", |
|
|
// | // |
// disable the provider module | // disable the provider module |
// | // |
try |
Sint16 ret_value = _disableModule( |
{ |
instanceReference, moduleName, false, al); |
Sint16 ret_value = _disableModule(instanceReference, |
|
moduleName, false, al); |
|
| |
// | // |
// if the provider module disable failed | // if the provider module disable failed |
// | // |
// l10n |
|
if (ret_value == -1) | if (ret_value == -1) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"DISABLE_PROVIDER_MODULE_FAILED", | "DISABLE_PROVIDER_MODULE_FAILED", |
|
|
// | // |
if (ret_value == -2) | if (ret_value == -2) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_FAILED, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider." | "ProviderRegistrationProvider." |
"DISABLE_PROVIDER_MODULE_FAILED_PROVIDER_BUSY", | "DISABLE_PROVIDER_MODULE_FAILED_PROVIDER_BUSY", |
"disable the provider module failed: Provider is busy.")); | "disable the provider module failed: Provider is busy.")); |
} | } |
} | } |
catch(const CIMException&) |
|
{ |
|
throw; |
|
} |
|
} |
|
| |
try |
|
{ |
|
_providerRegistrationManager->deleteInstance(instanceReference); | _providerRegistrationManager->deleteInstance(instanceReference); |
} |
|
catch(const CIMException&) |
#ifdef PEGASUS_ENABLE_INTEROP_PROVIDER |
|
if(className.equal (PEGASUS_CLASSNAME_PROVIDER) || |
|
className.equal (PEGASUS_CLASSNAME_PROVIDERCAPABILITIES) || |
|
className.equal (PEGASUS_CLASSNAME_PROVIDERMODULE)) |
{ | { |
throw; |
_sendUpdateCacheMessagetoInteropProvider(context); |
} | } |
|
#endif |
// complete processing the request | // complete processing the request |
handler.complete(); | handler.complete(); |
} | } |
|
|
userName = String::EMPTY; | userName = String::EMPTY; |
} | } |
| |
|
#ifndef PEGASUS_OS_ZOS |
if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) | if ((userName != String::EMPTY) && !System::isPrivilegedUser(userName)) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, | throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, |
|
|
"You must have superuser privilege to disable or enable" | "You must have superuser privilege to disable or enable" |
" providers.")); | " providers.")); |
} | } |
|
#endif |
| |
if(!objectReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) | if(!objectReference.getNameSpace().equal (PEGASUS_NAMESPACENAME_INTEROP)) |
{ | { |
|
|
// if _PROPERTY_PROVIDERMODULE_NAME key not found | // if _PROPERTY_PROVIDERMODULE_NAME key not found |
if( !moduleFound) | if( !moduleFound) |
{ | { |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_NOT_SUPPORTED,MessageLoaderParms( |
throw PEGASUS_CIM_EXCEPTION_L(CIM_ERR_INVALID_PARAMETER, |
|
MessageLoaderParms( |
"ControlProviders.ProviderRegistrationProvider." | "ControlProviders.ProviderRegistrationProvider." |
"ProviderRegistrationProvider.NAME_KEY_NOT_FOUND", | "ProviderRegistrationProvider.NAME_KEY_NOT_FOUND", |
"key Name was not found")); | "key Name was not found")); |
|
|
| |
Sint16 ret_value; | Sint16 ret_value; |
| |
try |
|
{ |
|
if(methodName.equal(_STOP_PROVIDER)) | if(methodName.equal(_STOP_PROVIDER)) |
{ | { |
// disable module | // disable module |
ret_value = _disableModule(objectReference, |
ret_value = _disableModule(objectReference, moduleName, false, al); |
moduleName, false, al); |
|
} | } |
else if(methodName.equal(_START_PROVIDER)) | else if(methodName.equal(_START_PROVIDER)) |
{ | { |
|
|
throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE, | throw PEGASUS_CIM_EXCEPTION(CIM_ERR_METHOD_NOT_AVAILABLE, |
String::EMPTY); | String::EMPTY); |
} | } |
} |
#ifdef PEGASUS_ENABLE_INTEROP_PROVIDER |
catch(const CIMException&) |
_sendUpdateCacheMessagetoInteropProvider(context); |
{ |
#endif |
throw; |
|
} |
|
| |
CIMValue retValue(ret_value); | CIMValue retValue(ret_value); |
handler.deliver(retValue); | handler.deliver(retValue); |
|
|
CIMInstance updatedModuleInstance = | CIMInstance updatedModuleInstance = |
_providerRegistrationManager->getInstance(moduleRef); | _providerRegistrationManager->getInstance(moduleRef); |
| |
// module is enabled, initialize providers as necessary |
|
_providerRegistrationManager->initializeProviders( |
|
updatedModuleInstance); |
|
|
|
// | // |
// The module is enabled, need to send enable message to | // The module is enabled, need to send enable message to |
// subscription service if the provider is an indication provider | // subscription service if the provider is an indication provider |
|
|
// | // |
// get provider name from reference | // get provider name from reference |
// | // |
if(keys[j].getName().equal (_PROPERTY_PROVIDER_NAME)) |
if(keys[j].getName().equal (PEGASUS_PROPERTYNAME_NAME)) |
{ | { |
_providerName = keys[j].getValue(); | _providerName = keys[j].getValue(); |
} | } |
|
|
{ | { |
// get provider name | // get provider name |
String providerName; | String providerName; |
Uint32 pos = instance.findProperty(_PROPERTY_PROVIDER_NAME); |
Uint32 pos = instance.findProperty(PEGASUS_PROPERTYNAME_NAME); |
if (pos != PEG_NOT_FOUND) | if (pos != PEG_NOT_FOUND) |
{ | { |
instance.getProperty(pos).getValue().get(providerName); | instance.getProperty(pos).getValue().get(providerName); |
|
|
{ | { |
// get provider name | // get provider name |
String providerName; | String providerName; |
Uint32 pos = instance.findProperty(CIMName (_PROPERTY_PROVIDER_NAME)); |
Uint32 pos = instance.findProperty(PEGASUS_PROPERTYNAME_NAME); |
if (pos != PEG_NOT_FOUND) | if (pos != PEG_NOT_FOUND) |
{ | { |
instance.getProperty(pos).getValue().get(providerName); | instance.getProperty(pos).getValue().get(providerName); |
|
|
capInstance = _providerRegistrationManager->getInstance | capInstance = _providerRegistrationManager->getInstance |
(instanceNames[i]); | (instanceNames[i]); |
| |
Uint32 pos = capInstance.findProperty( |
Uint32 providerTypePos = capInstance.findProperty( |
CIMName (_PROPERTY_PROVIDERTYPE)); | CIMName (_PROPERTY_PROVIDERTYPE)); |
if (pos != PEG_NOT_FOUND) |
if (providerTypePos != PEG_NOT_FOUND) |
{ | { |
capInstance.getProperty(pos).getValue().get(providerTypes); |
capInstance.getProperty(providerTypePos).getValue().get( |
|
providerTypes); |
| |
for (Uint32 k=0; k < providerTypes.size(); k++) | for (Uint32 k=0; k < providerTypes.size(); k++) |
{ | { |
|
|
return (indCapInstances); | return (indCapInstances); |
} | } |
| |
|
#ifdef PEGASUS_ENABLE_INTEROP_PROVIDER |
|
void ProviderRegistrationProvider::_sendUpdateCacheMessagetoInteropProvider( |
|
const OperationContext & context) |
|
{ |
|
String referenceStr("//", 2); |
|
referenceStr.append(System::getHostName()); |
|
referenceStr.append("/"); |
|
referenceStr.append(PEGASUS_NAMESPACENAME_INTEROP.getString()); |
|
referenceStr.append(":"); |
|
referenceStr.append( |
|
PEGASUS_CLASSNAME_PG_PROVIDERPROFILECAPABILITIES.getString()); |
|
CIMObjectPath reference(referenceStr); |
|
|
|
Array<CIMParamValue> inParams; |
|
Array<CIMParamValue> outParams; |
|
|
|
try |
|
{ |
|
AutoMutex mtx(_updateMtx); |
|
_cimomHandle.invokeMethod( |
|
context, |
|
PEGASUS_NAMESPACENAME_INTEROP, |
|
reference, |
|
CIMNameUnchecked("updateCache"), |
|
inParams, |
|
outParams); |
|
} |
|
catch(const Exception &e) |
|
{ |
|
PEG_TRACE((TRC_CONTROLPROVIDER,Tracer::LEVEL1, |
|
"Exception caught while invoking InteropProvider 'updateCache'" |
|
" method: %s",(const char*)e.getMessage().getCString())); |
|
} |
|
catch(...) |
|
{ |
|
PEG_TRACE_CSTRING( |
|
TRC_CONTROLPROVIDER, |
|
Tracer::LEVEL1, |
|
"Unknown error occurred while" |
|
" invoking InteropProvider 'updateCache' method."); |
|
} |
|
} |
|
#endif |
|
|
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |