[libvirt] [sandbox PATCH 07/11] Image: Add get_command function to Source

Eren Yagdiran erenyagdiran at gmail.com
Thu Jul 23 15:57:33 UTC 2015


Provide a way to know how a template can be started depending on the used source
DockerSource will need to parse the topmost config file in order to find the igniter command
---
 virt-sandbox-image/sources/DockerSource.py | 14 ++++++++++++++
 virt-sandbox-image/sources/Source.py       |  4 ++++
 2 files changed, 18 insertions(+)

diff --git a/virt-sandbox-image/sources/DockerSource.py b/virt-sandbox-image/sources/DockerSource.py
index 180d3f2..4326624 100644
--- a/virt-sandbox-image/sources/DockerSource.py
+++ b/virt-sandbox-image/sources/DockerSource.py
@@ -9,6 +9,15 @@ import os
 import subprocess
 import shutil
 
+class DockerConfParser():
+
+    def __init__(self,jsonfile):
+        with open(jsonfile) as json_file:
+            self.json_data = json.load(json_file)
+    def getRunCommand(self):
+        cmd = self.json_data['container_config']['Cmd'][2]
+        return cmd[cmd.index('"') + 1:cmd.rindex('"')]
+
 class DockerSource(Source):
     default_index_server = "index.docker.io"
     default_template_dir = "/var/lib/libvirt/templates"
@@ -333,6 +342,11 @@ class DockerSource(Source):
                     parent = None
             imagetagid = parent
 
+    def get_command(self,configfile):
+        configParser = DockerConfParser(configfile)
+        commandToRun = configParser.getRunCommand()
+        return commandToRun
+
 def debug(msg):
     sys.stderr.write(msg)
 
diff --git a/virt-sandbox-image/sources/Source.py b/virt-sandbox-image/sources/Source.py
index 36c4343..c4087ca 100644
--- a/virt-sandbox-image/sources/Source.py
+++ b/virt-sandbox-image/sources/Source.py
@@ -19,3 +19,7 @@ class Source():
     def delete_template(self,**args):
       pass
 
+    @abstractmethod
+    def get_command(self,**args):
+      pass
+
-- 
2.1.0




More information about the libvir-list mailing list