You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by wi...@apache.org on 2013/02/14 20:57:51 UTC
[46/50] [abbrv] git commit: refs/heads/qemu-img - Add a new
QemuImgFile object to use
Add a new QemuImgFile object to use
The modification of LibvirtStorageAdapter shows how easy
it becomes to use qemu-img
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/79482f50
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/79482f50
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/79482f50
Branch: refs/heads/qemu-img
Commit: 79482f503c375741581e1efd676498924907e758
Parents: f11affe
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Wed Feb 6 21:14:56 2013 +0100
Committer: Wido den Hollander <wi...@42on.com>
Committed: Thu Feb 14 15:01:59 2013 +0100
----------------------------------------------------------------------
.../kvm/storage/LibvirtStorageAdaptor.java | 9 +-
.../org/apache/cloudstack/utils/qemu/QemuImg.java | 50 ++++++-----
.../apache/cloudstack/utils/qemu/QemuImgFile.java | 72 +++++++++++++++
3 files changed, 106 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79482f50/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
index 5aafc0c..b17633a 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/storage/LibvirtStorageAdaptor.java
@@ -24,7 +24,9 @@ import java.util.List;
import java.util.UUID;
import org.apache.log4j.Logger;
import org.apache.commons.codec.binary.Base64;
+import org.apache.cloudstack.utils.qemu.QemuImg;
import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
+import org.apache.cloudstack.utils.qemu.QemuImgFile;
import org.libvirt.Connect;
import org.libvirt.LibvirtException;
import org.libvirt.Secret;
@@ -594,9 +596,10 @@ public class LibvirtStorageAdaptor implements StorageAdaptor {
+ template.getFormat() + " -b " + template.getPath() + " "
+ disk.getPath());
} else if (format == PhysicalDiskFormat.RAW) {
- Script.runSimpleBashScript("qemu-img convert -f "
- + template.getFormat() + " -O raw " + template.getPath()
- + " " + disk.getPath());
+ QemuImgFile sourceFile = new QemuImgFile(template.getPath(), template.getFormat());
+ QemuImgFile destFile = new QemuImgFile(disk.getPath(), PhysicalDiskFormat.RAW);
+ QemuImg qemu = new QemuImg();
+ qemu.convert(sourceFile, destFile);
}
} else {
disk = new KVMPhysicalDisk(destPool.getSourceDir() + "/" + newUuid, newUuid, destPool);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79482f50/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
----------------------------------------------------------------------
diff --git a/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java b/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
index a853939..c93d0ab 100644
--- a/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
+++ b/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
@@ -16,6 +16,8 @@
// under the License.
package org.apache.cloudstack.utils.qemu;
+import org.apache.cloudstack.utils.qemu.QemuImgFile;
+
import com.cloud.utils.script.Script;
import java.util.List;
@@ -24,7 +26,7 @@ import java.util.Map;
public class QemuImg {
/* The qemu-img binary. We expect this to be in $PATH */
- public static String _qemuImgPath = "qemu-img";
+ public String _qemuImgPath = "qemu-img";
/* Shouldn't we have KVMPhysicalDisk and LibvirtVMDef read this? */
public static enum PhysicalDiskFormat {
@@ -40,62 +42,66 @@ public class QemuImg {
}
}
+ public QemuImg() {
+
+ }
+
+ public QemuImg(String qemuImgPath) {
+ this._qemuImgPath = qemuImgPath;
+ }
+
/* These are all methods supported by the qemu-img tool */
/* Perform a consistency check on the disk image */
- public static void check() {
+ public void check(QemuImgFile file) {
}
/* Create a new disk image */
- public static void create(String filename, long size, PhysicalDiskFormat format, List<Map<String, String>> options) {
+ public void create(QemuImgFile file, List<Map<String, String>> options) {
Script s = new Script(_qemuImgPath);
s.add("create");
s.add("-f");
- s.add(format.toString());
- s.add(filename);
- s.add(Long.toString(size));
+ s.add(file.getFormat().toString());
+ s.add(file.getFileName());
+ s.add(Long.toString(file.getSize()));
}
- public static void create(String filename, long size, PhysicalDiskFormat format) {
- QemuImg.create(filename, size, format, null);
+ public void create(QemuImgFile file) {
+ this.create(file, null);
}
/* Convert the disk image filename or a snapshot snapshot_name to disk image output_filename using format output_fmt. */
- public static void convert() {
+ public void convert(QemuImgFile srcFile, QemuImgFile destFile, List<Map<String, String>> options) {
}
- /* Commit the changes recorded in filename in its base image */
- public static void commit(String filename, PhysicalDiskFormat format) {
-
+ public void convert(QemuImgFile srcFile, QemuImgFile destFile) {
+ this.convert(srcFile, destFile, null);
}
- public static void commit(String filename) {
- QemuImg.commit(filename, null);
+ /* Commit the changes recorded in filename in its base image */
+ public void commit(QemuImgFile file) {
+
}
/* Give information about the disk image */
- public static void info(String filename, PhysicalDiskFormat format) {
-
- }
+ public void info(QemuImgFile file) {
- public static void info(String filename) {
- QemuImg.info(filename, null);
}
/* List, apply, create or delete snapshots in image */
- public static void snapshot() {
+ public void snapshot() {
}
/* Changes the backing file of an image */
- public static void rebase() {
+ public void rebase() {
}
/* Resize a disk image */
- public static void resize(String filename, long size) {
+ public void resize(String filename, long size) {
String newSize = null;
if (size > 0) {
newSize = "+" + size;
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/79482f50/utils/src/org/apache/cloudstack/utils/qemu/QemuImgFile.java
----------------------------------------------------------------------
diff --git a/utils/src/org/apache/cloudstack/utils/qemu/QemuImgFile.java b/utils/src/org/apache/cloudstack/utils/qemu/QemuImgFile.java
new file mode 100644
index 0000000..90d925d
--- /dev/null
+++ b/utils/src/org/apache/cloudstack/utils/qemu/QemuImgFile.java
@@ -0,0 +1,72 @@
+// 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
+// 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 org.apache.cloudstack.utils.qemu;
+
+import org.apache.cloudstack.utils.qemu.QemuImg.PhysicalDiskFormat;
+
+public class QemuImgFile {
+
+ private long size = 0;
+ private String fileName;
+ private PhysicalDiskFormat format = PhysicalDiskFormat.RAW;
+
+ public QemuImgFile(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public QemuImgFile(String fileName, long size) {
+ this.fileName = fileName;
+ this.size = size;
+ }
+
+ public QemuImgFile(String fileName, long size, PhysicalDiskFormat format) {
+ this.fileName = fileName;
+ this.size = size;
+ this.format = format;
+ }
+
+ public QemuImgFile(String fileName, PhysicalDiskFormat format) {
+ this.fileName = fileName;
+ this.size = size;
+ this.format = format;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public void setSize(long size) {
+ this.size = size;
+ }
+
+ public void setFormat(PhysicalDiskFormat format) {
+ this.format = format;
+ }
+
+ public String getFileName() {
+ return this.fileName;
+ }
+
+ public long getSize() {
+ return this.size;
+ }
+
+ public PhysicalDiskFormat getFormat() {
+ return this.format;
+ }
+
+}
\ No newline at end of file