Uploaded image for project: 'CloudStack'
  1. CloudStack
  2. CLOUDSTACK-8648

"Unable to get storage implementation" when copying template from NFS to S3

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 4.5.2, Future
    • Future
    • Secondary Storage
    • Security Level: Public (Anyone can view this level - this is the default.)

    Description

      In the SSVM this can be observed:

      2015-07-17 12:12:56,675 WARN [storage.resource.NfsSecondaryStorageResource] (agentRequest-Handler-11:null) Failed to get virtual size, returning file size instead:
      javax.naming.ConfigurationException: Unable to get storage implementation
      at com.cloud.storage.template.QCOW2Processor.configure(QCOW2Processor.java:95)
      at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.getVirtualSize(NfsSecondaryStorageResource.java:828)
      at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.copyFromNfsToS3(NfsSecondaryStorageResource.java:886)
      at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.copyFromNfsToImage(NfsSecondaryStorageResource.java:618)
      at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.execute(NfsSecondaryStorageResource.java:645)
      at org.apache.cloudstack.storage.resource.NfsSecondaryStorageResource.executeRequest(NfsSecondaryStorageResource.java:233)
      at com.cloud.agent.Agent.processRequest(Agent.java:503)
      at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:808)
      at com.cloud.utils.nio.Task.run(Task.java:84)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:745)

      The problem is this:

      processor.configure("template processor", new HashMap<String, Object>());
      return processor.getVirtualSize(file);

      It confitures the processor with a empty HashMap, but the check in the processor is:

      public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
      _storage = (StorageLayer)params.get(StorageLayer.InstanceConfigKey);
      if (_storage == null)

      { throw new ConfigurationException("Unable to get storage implementation"); }

      Since the HashMap is empty null is returned and this exception is thrown.

      No need to configure the Processor as far as I can see.

      Attachments

        Activity

          People

            widodh Wido den Hollander
            widodh Wido den Hollander
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: