From: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
Add clone action in controller
also update API.json
Signed-off-by: ShaoHe Feng <shaohef(a)linux.vnet.ibm.com>
---
src/kimchi/API.json | 80 +++++++++++++++++++++++++++++++++++++++++
src/kimchi/control/templates.py | 1 +
2 files changed, 81 insertions(+)
diff --git a/src/kimchi/API.json b/src/kimchi/API.json
index 10741a4..aca72a7 100644
--- a/src/kimchi/API.json
+++ b/src/kimchi/API.json
@@ -280,6 +280,86 @@
},
"additionalProperties": false
},
+ "template_clone": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "The name of the new template",
+ "type": "string",
+ "pattern": "^[^ ]+( +[^ ]+)*$",
+ "minLength": 1
+ },
+ "icon": {
+ "description": "The template icon path",
+ "type": "string",
+ "pattern": "^images/"
+ },
+ "os_distro": {
+ "description": "Distribution name of the Operating
System",
+ "type": "string",
+ "minLength": 1
+ },
+ "os_version": {
+ "description": "Version of the Operating
System",
+ "type": "string",
+ "minLength": 1
+ },
+ "cpus": {
+ "description": "Number of CPUs for the
template",
+ "type": "integer",
+ "minimum": 1
+ },
+ "memory": {
+ "description": "Memory (MB) for the template",
+ "type": "integer",
+ "minimum": 512
+ },
+ "cdrom": {
+ "description": "Path for cdrom",
+ "type": "string",
+ "pattern":
"^((/)|(http)[s]?:|[t]?(ftp)[s]?:)+.*([.]iso)$"
+ },
+ "disks": {
+ "description": "List of disks",
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "index": {
+ "description": "Index of the disk",
+ "type": "integer",
+ "minimum": 0
+ },
+ "size": {
+ "description": "Size (GB) of the
disk",
+ "type": "number",
+ "minimum": 1
+ }
+ }
+ },
+ "minItems": 1,
+ "uniqueItems": true
+ },
+ "storagepool": {
+ "description": "Location of the storage pool",
+ "type": "string",
+ "pattern": "^/storagepools/[^/]+/?$"
+ },
+ "networks": {
+ "description": "list of which networks will be
assigned to the new VM.",
+ "type": "array",
+ "items": { "type": "string" },
+ "uniqueItems": true
+ },
+ "folder": {
+ "description": "Folder",
+ "type": "array",
+ "items": { "type": "string" }
+ },
+ "graphics": { "$ref":
"#/kimchitype/graphics" }
+ },
+ "additionalProperties": false
+ },
"template_update": {
"type": "object",
"properties": {
diff --git a/src/kimchi/control/templates.py b/src/kimchi/control/templates.py
index ce1dda4..58dafcc 100644
--- a/src/kimchi/control/templates.py
+++ b/src/kimchi/control/templates.py
@@ -40,6 +40,7 @@ class Template(Resource):
"memory", "cdrom", "disks",
"networks",
"graphics"]
self.uri_fmt = "/templates/%s"
+ self.clone = self.generate_action_handler('clone')
@property
def data(self):
--
1.8.4.2