Updated Branches: refs/heads/4.2 e6d7cdf70 -> 3c40e8bb3
CLOUDSTACK-4338: fix NPE if create volume failed Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/3c40e8bb Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/3c40e8bb Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/3c40e8bb Branch: refs/heads/4.2 Commit: 3c40e8bb3f6278f78c24c6317d513bd5ad599944 Parents: e6d7cdf Author: Edison Su <[email protected]> Authored: Sun Aug 18 16:25:59 2013 -0700 Committer: Edison Su <[email protected]> Committed: Sun Aug 18 16:26:08 2013 -0700 ---------------------------------------------------------------------- .../kvm/storage/KVMStorageProcessorTest.java | 47 ++++++++++++++++++++ .../CloudStackPrimaryDataStoreDriverImpl.java | 10 ++++- 2 files changed, 56 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c40e8bb/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/storage/KVMStorageProcessorTest.java ---------------------------------------------------------------------- diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/storage/KVMStorageProcessorTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/storage/KVMStorageProcessorTest.java new file mode 100644 index 0000000..f107bff --- /dev/null +++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/storage/KVMStorageProcessorTest.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package com.cloud.hypervisor.kvm.storage; + +import com.cloud.hypervisor.kvm.resource.LibvirtComputingResource; +import org.junit.Before; +import org.junit.Test; + +import javax.naming.ConfigurationException; +import java.util.HashMap; + +public class KVMStorageProcessorTest { + KVMStorageProcessor processor; + LibvirtComputingResource resource; + @Before + public void setUp() throws ConfigurationException { + System.setProperty("paths.script", "/devel/asf-master"); + resource = new LibvirtComputingResource(); + resource.configure("testResource", new HashMap<String, Object>()); + } + @Test + public void testCloneVolumeFromBaseTemplate() throws Exception { + + + } + + @Test + public void testCopyVolumeFromImageCacheToPrimary() throws Exception { + + } +} http://git-wip-us.apache.org/repos/asf/cloudstack/blob/3c40e8bb/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java ---------------------------------------------------------------------- diff --git a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java index c071c08..1e04a76 100644 --- a/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java +++ b/plugins/storage/volume/default/src/org/apache/cloudstack/storage/datastore/driver/CloudStackPrimaryDataStoreDriverImpl.java @@ -104,9 +104,18 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri public void createAsync(DataStore dataStore, DataObject data, AsyncCompletionCallback<CreateCmdResult> callback) { String errMsg = null; Answer answer = null; + CreateCmdResult result = new CreateCmdResult(null, null); if (data.getType() == DataObjectType.VOLUME) { try { answer = createVolume((VolumeInfo) data); + if ((answer == null) || (!answer.getResult())) { + result.setSuccess(false); + if (answer != null) { + result.setResult(answer.getDetails()); + } + } else { + result.setAnswer(answer); + } } catch (StorageUnavailableException e) { s_logger.debug("failed to create volume", e); errMsg = e.toString(); @@ -115,7 +124,6 @@ public class CloudStackPrimaryDataStoreDriverImpl implements PrimaryDataStoreDri errMsg = e.toString(); } } - CreateCmdResult result = new CreateCmdResult(null, answer); if (errMsg != null) { result.setResult(errMsg); }
