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/18 14:35:52 UTC
[1/2] git commit: refs/heads/qemu-img - Further implement the info
method
Further implement the info method
Also, use a HashMap<String, String> for storing key value pairs
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/ad9a20e0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/ad9a20e0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/ad9a20e0
Branch: refs/heads/qemu-img
Commit: ad9a20e0e23b87ce553ab4366a7b82aa1f6f2271
Parents: 4d39ad4
Author: Wido den Hollander <wi...@widodh.nl>
Authored: Mon Feb 18 14:34:23 2013 +0100
Committer: Wido den Hollander <wi...@widodh.nl>
Committed: Mon Feb 18 14:34:23 2013 +0100
----------------------------------------------------------------------
.../org/apache/cloudstack/utils/qemu/QemuImg.java | 38 +++++++++++----
1 files changed, 29 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/ad9a20e0/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 ae865a5..dfaf275 100644
--- a/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
+++ b/utils/src/org/apache/cloudstack/utils/qemu/QemuImg.java
@@ -95,7 +95,7 @@ public class QemuImg {
}
/* Convert the disk image filename or a snapshot snapshot_name to disk image output_filename using format output_fmt. */
- public void convert(QemuImgFile srcFile, QemuImgFile destFile, List<Map<String, String>> options) {
+ public void convert(QemuImgFile srcFile, QemuImgFile destFile, Map<String, String> options) {
Script s = new Script(_qemuImgPath);
s.add("convert");
s.add("-f");
@@ -116,26 +116,46 @@ public class QemuImg {
}
- /* Give information about the disk image */
- public List<Map<String, String>> info(QemuImgFile file) {
+ /**
+ * Execute qemu-img info for the given file
+ *
+ * Qemu-img returns human readable output, but this method does it's best
+ * to turn that into machine readeable data.
+ *
+ * Spaces in keys are replaced by underscores (_).
+ * Sizes (virtual_size and disk_size) are returned in bytes
+ * Paths (image and backing_file) are the absolute path to the file
+ *
+ * @param file
+ * A QemuImgFile object containing the file to get the information from
+ * @return A HashMap with String key-value information as returned by 'qemu-img info'
+ * @throws LibvirtException
+ */
+ public Map<String, String> info(QemuImgFile file) {
Script s = new Script(_qemuImgPath);
s.add("info");
s.add(file.getFileName());
OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
s.execute(parser);
- List<Map<String, String>> list = new ArrayList<Map<String, String>>();
+ HashMap<String,String> info = new HashMap<String,String>();
String[] outputBuffer = parser.getLines().trim().split("\n");
for (int i = 0; i < outputBuffer.length; i++) {
String[] lineBuffer = outputBuffer[i].split(":", 2);
if (lineBuffer.length == 2) {
- HashMap<String,String> info = new HashMap<String,String>();
- info.put(lineBuffer[0].trim().replace(" ", "_"), lineBuffer[1].trim());
- list.add(info);
+ String key = lineBuffer[0].trim().replace(" ", "_");
+ String value = null;
+
+ if (key.equals("virtual_size")) {
+ value = lineBuffer[1].trim().replaceAll("^.*\\(([0-9]+).*$", "$1");
+ } else {
+ value = lineBuffer[1].trim();
+ }
+
+ info.put(key, value);
}
}
- return list;
-
+ return info;
}
/* List, apply, create or delete snapshots in image */