ProviderName DefaultProviderManager::_resolveProviderName( const ProviderIdContainer& providerId) { String providerName; String fileName; String moduleName; CIMValue genericValue; genericValue = providerId.getModule().getProperty( providerId.getModule().findProperty( PEGASUS_PROPERTYNAME_NAME)).getValue(); genericValue.get(moduleName); genericValue = providerId.getProvider().getProperty( providerId.getProvider().findProperty( PEGASUS_PROPERTYNAME_NAME)).getValue(); genericValue.get(providerName); genericValue = providerId.getModule().getProperty( providerId.getModule().findProperty("Location")).getValue(); genericValue.get(fileName); String resolvedFileName = _resolvePhysicalName(fileName); if (resolvedFileName == String::EMPTY) { // Provider library not found throw Exception(MessageLoaderParms( "ProviderManager.ProviderManagerService.PROVIDER_FILE_NOT_FOUND", "File \"$0\" was not found for provider module \"$1\".", FileSystem::buildLibraryFileName(fileName), moduleName)); } return ProviderName(moduleName, providerName, resolvedFileName); }
ProviderName ProviderRegistrar::findConsumerProvider(const String & destinationPath) { CIMInstance provider; CIMInstance providerModule; ProviderName temp; if (_prm->lookupIndicationConsumer(destinationPath,provider,providerModule)) return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), 0); return temp; }
ProviderName ProviderRegistrar::findProvider(const ProviderName & providerName, Boolean test) { // CIMObjectPath objectName = providerName.getObjectName(); Uint32 flags = providerName.getCapabilitiesMask(); // validate arguments /* if(objectName.getNameSpace().isNull() || objectName.getClassName().isNull()) { throw Exception("Invalid argument."); } */ CIMInstance provider; CIMInstance providerModule; ProviderName temp; Boolean hasNoQuery; switch (flags) { case ProviderType_INSTANCE: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,0)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::INSTANCE); } break; case ProviderType_ASSOCIATION: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,1)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::ASSOCIATION); } break; case ProviderType_QUERY: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,0,&hasNoQuery)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::INSTANCE); } break; case ProviderType_METHOD: if (_prm->lookupMethodProvider(providerName.getNameSpace(),providerName.getClassName(), providerName.getMethodName(),provider,providerModule)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::METHOD); } break; default: CIMObjectPath objectName(String::EMPTY, providerName.getNameSpace(),providerName.getClassName()); temp = _lookupProvider(objectName); } return(temp); }