private void registerComputeService()

in commands/src/main/java/org/jclouds/karaf/commands/compute/ComputeServiceCreateCommand.java [130:181]


   private void registerComputeService(final ConfigurationAdmin configurationAdmin,final String name, final String provider,
            final String api, final String identity, final String credential, final String endpoint,
            final Map<String, String> props) throws Exception {
      Runnable registrationTask = new Runnable() {
         @Override
         public void run() {
            try {
               Configuration configuration = findOrCreateFactoryConfiguration(configurationAdmin, "org.jclouds.compute", name, provider, api);
               if (configuration != null) {
                  Dictionary<String, Object> dictionary = configuration.getProperties();
                  if (dictionary == null) {
                     dictionary = new Hashtable<String, Object>();
                  }

                  String providerValue = EnvHelper.getComputeProvider(provider);
                  String apiValue = EnvHelper.getComputeApi(api);
                  String identityValue = EnvHelper.getComputeIdentity(identity);
                  String endpointValue = EnvHelper.getComputeEndpoint(endpoint);
                  String credentialValue = EnvHelper.getComputeCredential(providerValue, credential);

                  if (name != null) {
                    dictionary.put(Constants.NAME, name);
                  }
                  if (providerValue != null) {
                     dictionary.put(Constants.PROVIDER, providerValue);
                  }
                  if (apiValue != null) {
                     dictionary.put(Constants.API, apiValue);
                  }
                  if (endpointValue != null) {
                     dictionary.put(Constants.ENDPOINT, endpointValue);
                  }
                  if (credentialValue != null) {
                     dictionary.put(Constants.CREDENTIAL, credentialValue);
                  }
                  if (identityValue != null) {
                     dictionary.put(Constants.IDENTITY, identityValue);
                  }
                  for (Map.Entry<String, String> entry : props.entrySet()) {
                     String key = entry.getKey();
                     String value = entry.getValue();
                     dictionary.put(key, value);
                  }
                  configuration.update(dictionary);
               }
            } catch (Exception ex) {
               // noop
            }
         }
      };
      new Thread(registrationTask).start();
   }