[Kimchi-devel] [PATCH v2] [Kimchi 1/2] added 'console' parameter to templates api for s390x

sureshab at linux.vnet.ibm.com sureshab at linux.vnet.ibm.com
Tue Sep 13 07:59:25 UTC 2016


From: Suresh Babu Angadi <sureshab at in.ibm.com>

In case of s390x architecture, console type can be
either virtio/sclp. Extended current code to support
console configuration in case of s390x

* added 'console'='virtio' in template defaults for s390x
* added 'console' parameter as optional attribute for s390x
  which returns current 'console' attached to template
* made changes in model code to support 'console' attribute
  in case of create/update template when running on s390x
* added appropriate error codes in i18n.py
* added API.json changes to validate 'console' attribute

Signed-off-by: Suresh Babu Angadi <sureshab at in.ibm.com>
---
 API.json             | 16 ++++++++++++++--
 control/templates.py |  1 +
 i18n.py              |  2 ++
 model/templates.py   |  6 ++++++
 osinfo.py            |  4 ++++
 5 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/API.json b/API.json
index 9ad60a2..fe5579e 100644
--- a/API.json
+++ b/API.json
@@ -671,7 +671,13 @@
                     "items": { "type": "string" }
                 },
                 "graphics": { "$ref": "#/kimchitype/graphics" },
-                "cpu_info": { "$ref": "#/kimchitype/cpu_info" }
+                "cpu_info": { "$ref": "#/kimchitype/cpu_info" },
+                "console": {
+                    "description": "type of the console attached to the guest in s390x architecture",
+                    "type": "string",
+                    "pattern": "^sclp|virtio$",
+                    "error": "KCHTMPL0041E"
+                }
             },
             "additionalProperties": false,
             "error": "KCHAPI0001E"
@@ -844,7 +850,13 @@
                     "items": { "type": "string" }
                 },
                 "graphics": { "$ref": "#/kimchitype/graphics" },
-                "cpu_info": { "$ref": "#/kimchitype/cpu_info" }
+                "cpu_info": { "$ref": "#/kimchitype/cpu_info" },
+                "console": {
+                    "description": "type of the console attached to the guest in s390x architecture",
+                    "type": "string",
+                    "pattern": "^sclp|virtio$",
+                    "error": "KCHTMPL0041E"
+                }
             },
             "additionalProperties": false,
             "error": "KCHAPI0001E"
diff --git a/control/templates.py b/control/templates.py
index 0406c6b..ca36be3 100644
--- a/control/templates.py
+++ b/control/templates.py
@@ -76,5 +76,6 @@ class Template(Resource):
         }
         if os.uname()[4] in ['s390x', 's390']:
             info['interfaces'] = self.info.get('interfaces', [])
+            info['console'] = self.info.get('console', '')
 
         return info
diff --git a/i18n.py b/i18n.py
index 47c829e..1684dc4 100644
--- a/i18n.py
+++ b/i18n.py
@@ -203,6 +203,8 @@ messages = {
     "KCHTMPL0037E": _("Interfaces should be list of interfaces. Each interface should have name, type and mode(optional, only applicable for interfcae type 'macvtap'."),
     "KCHTMPL0038E": _("Interface expects an object with parameters: 'name', 'type' and 'mode'. Name should be name of host network interface (Ethernet, Bond, VLAN) for type 'macvtap' or the name of host openvswitch bridge interface for type 'ovs'. Mode (optional) is only applicable for interface type 'macvtap' to indicates whether packets will be delivered directly to target device (bridge) or to the external bridge (vepa-capable bridge)."),
     "KCHTMPL0039E": _("Interfaces parameter only supported on s390x or s390 architecture."),
+    "KCHTMPL0040E": _("console parameter is only supported for s390x/s390 architecture."),
+    "KCHTMPL0041E": _("invalid console type, supported types are sclp/virtio."),
 
     "KCHPOOL0001E": _("Storage pool %(name)s already exists"),
     "KCHPOOL0002E": _("Storage pool %(name)s does not exist"),
diff --git a/model/templates.py b/model/templates.py
index 04e6626..faf1fd5 100644
--- a/model/templates.py
+++ b/model/templates.py
@@ -65,6 +65,9 @@ class TemplatesModel(object):
         interfaces = params.get('interfaces', [])
         validate_interfaces(interfaces)
 
+        if os.uname()[4] not in ['s390x', 's390'] and 'console' in params:
+            raise InvalidParameter("KCHTMPL0040E")
+
         # get source_media
         source_media = params.pop("source_media")
 
@@ -229,6 +232,9 @@ class TemplateModel(object):
         interfaces = params.get('interfaces', [])
         validate_interfaces(interfaces)
 
+        if os.uname()[4] not in ['s390x', 's390'] and 'console' in params:
+            raise InvalidParameter("KCHTMPL0040E")
+
         # Merge graphics settings
         graph_args = params.get('graphics')
         if graph_args:
diff --git a/osinfo.py b/osinfo.py
index 3e56d97..6069c46 100644
--- a/osinfo.py
+++ b/osinfo.py
@@ -163,6 +163,10 @@ def _get_tmpl_defaults():
     tmpl_defaults['processor']['maxvcpus'] = 1
     tmpl_defaults['graphics'] = {'type': 'vnc', 'listen': '127.0.0.1'}
 
+    # for s390x architecture, set default console as sclp
+    if host_arch in ['s390x', 's390']:
+        tmpl_defaults['console'] = 'virtio'
+
     default_config = ConfigObj(tmpl_defaults)
 
     # Load template configuration file
-- 
2.1.0




More information about the Kimchi-devel mailing list