mirror of https://github.com/apache/cloudstack.git
CS-18564: create template from snapshot failed, due to the volume(the
snapshot created from) is deleted.
This commit is contained in:
parent
454d9b04c4
commit
d65c3a70c7
|
|
@ -16,15 +16,23 @@
|
|||
// under the License.
|
||||
package org.apache.cloudstack.storage.resource;
|
||||
|
||||
import static com.cloud.utils.S3Utils.putFile;
|
||||
import static com.cloud.utils.S3Utils.mputFile;
|
||||
import static com.cloud.utils.S3Utils.putFile;
|
||||
import static com.cloud.utils.StringUtils.join;
|
||||
import static com.cloud.utils.db.GlobalLock.executeWithNoWaitLock;
|
||||
import static java.lang.String.format;
|
||||
import static java.util.Arrays.asList;
|
||||
import static org.apache.commons.lang.StringUtils.substringAfterLast;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.net.InetAddress;
|
||||
import java.net.URI;
|
||||
|
|
@ -39,10 +47,6 @@ import java.util.concurrent.Callable;
|
|||
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.agent.api.storage.*;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.template.*;
|
||||
import com.cloud.utils.SwiftUtil;
|
||||
import org.apache.cloudstack.storage.command.CopyCmdAnswer;
|
||||
import org.apache.cloudstack.storage.command.CopyCommand;
|
||||
import org.apache.cloudstack.storage.command.DeleteCommand;
|
||||
|
|
@ -86,6 +90,14 @@ import com.cloud.agent.api.SecStorageSetupCommand.Certificates;
|
|||
import com.cloud.agent.api.SecStorageVMSetupCommand;
|
||||
import com.cloud.agent.api.StartupCommand;
|
||||
import com.cloud.agent.api.StartupSecondaryStorageCommand;
|
||||
import com.cloud.agent.api.storage.CreateEntityDownloadURLCommand;
|
||||
import com.cloud.agent.api.storage.DeleteEntityDownloadURLCommand;
|
||||
import com.cloud.agent.api.storage.DownloadAnswer;
|
||||
import com.cloud.agent.api.storage.ListTemplateAnswer;
|
||||
import com.cloud.agent.api.storage.ListTemplateCommand;
|
||||
import com.cloud.agent.api.storage.ListVolumeAnswer;
|
||||
import com.cloud.agent.api.storage.ListVolumeCommand;
|
||||
import com.cloud.agent.api.storage.UploadCommand;
|
||||
import com.cloud.agent.api.to.DataObjectType;
|
||||
import com.cloud.agent.api.to.DataStoreTO;
|
||||
import com.cloud.agent.api.to.DataTO;
|
||||
|
|
@ -100,10 +112,19 @@ import com.cloud.resource.ServerResourceBase;
|
|||
import com.cloud.storage.DataStoreRole;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.StorageLayer;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.template.Processor;
|
||||
import com.cloud.storage.template.Processor.FormatInfo;
|
||||
import com.cloud.storage.template.QCOW2Processor;
|
||||
import com.cloud.storage.template.RawImageProcessor;
|
||||
import com.cloud.storage.template.TemplateLocation;
|
||||
import com.cloud.storage.template.TemplateProp;
|
||||
import com.cloud.storage.template.VhdProcessor;
|
||||
import com.cloud.storage.template.VmdkProcessor;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.S3Utils;
|
||||
import com.cloud.utils.S3Utils.FileNamingStrategy;
|
||||
import com.cloud.utils.SwiftUtil;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
import com.cloud.utils.script.OutputInterpreter;
|
||||
|
|
@ -409,8 +430,14 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
|||
} else if (srcData.getHypervisorType() == HypervisorType.KVM) {
|
||||
File srcFile = getFile(srcData.getPath(), srcDataStore.getUrl());
|
||||
File destFile = getFile(destData.getPath(), destDataStore.getUrl());
|
||||
|
||||
ImageFormat srcFormat = srcData.getVolume().getFormat();
|
||||
VolumeObjectTO volumeObjectTO = srcData.getVolume();
|
||||
ImageFormat srcFormat = null;
|
||||
//TODO: the image format should be stored in snapshot table, instead of getting from volume
|
||||
if (volumeObjectTO != null) {
|
||||
srcFormat = volumeObjectTO.getFormat();
|
||||
} else {
|
||||
srcFormat = ImageFormat.QCOW2;
|
||||
}
|
||||
|
||||
// get snapshot file name
|
||||
String templateName = srcFile.getName();
|
||||
|
|
|
|||
Loading…
Reference in New Issue