Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
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);
}