so that we can reuse it for containers

while we do this, we also have to adapt the SnapshotSelector

Signed-off-by: Dominik Csapak <[email protected]>
---
 www/manager6/form/SnapshotSelector.js |  6 +++++-
 www/manager6/qemu/CmdMenu.js          |  2 +-
 www/manager6/qemu/Config.js           |  2 +-
 www/manager6/window/Clone.js          | 20 +++++++++++++-------
 4 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/www/manager6/form/SnapshotSelector.js 
b/www/manager6/form/SnapshotSelector.js
index 1ed420ab..96ee08c7 100644
--- a/www/manager6/form/SnapshotSelector.js
+++ b/www/manager6/form/SnapshotSelector.js
@@ -22,7 +22,7 @@ Ext.define('PVE.form.SnapshotSelector', {
 
        me.store.setProxy({
            type: 'proxmox',
-           url: '/api2/json/nodes/' + me.nodename + '/qemu/' + me.vmid 
+'/snapshot'
+           url: '/api2/json/nodes/' + me.nodename + '/' + me.guestType + '/' + 
me.vmid +'/snapshot'
        });
 
        me.store.load();
@@ -39,6 +39,10 @@ Ext.define('PVE.form.SnapshotSelector', {
             throw "no VM ID specified";
         }
 
+       if (!me.guestType) {
+           throw "no guest type specified";
+       }
+
        var store = Ext.create('Ext.data.Store', {
            fields: [ 'name'],
            filterOnLoad: true
diff --git a/www/manager6/qemu/CmdMenu.js b/www/manager6/qemu/CmdMenu.js
index 49ea62bc..00af7cbc 100644
--- a/www/manager6/qemu/CmdMenu.js
+++ b/www/manager6/qemu/CmdMenu.js
@@ -133,7 +133,7 @@ Ext.define('PVE.qemu.CmdMenu', {
                iconCls: 'fa fa-fw fa-clone',
                hidden: !caps.vms['VM.Clone'],
                handler: function() {
-                   PVE.window.Clone.wrap(nodename, vmid, me.isTemplate);
+                   PVE.window.Clone.wrap(nodename, vmid, me.isTemplate, 
'qemu');
                }
            },
            {
diff --git a/www/manager6/qemu/Config.js b/www/manager6/qemu/Config.js
index 5de39fc3..38496f4f 100644
--- a/www/manager6/qemu/Config.js
+++ b/www/manager6/qemu/Config.js
@@ -85,7 +85,7 @@ Ext.define('PVE.qemu.Config', {
                    iconCls: 'fa fa-fw fa-clone',
                    hidden: caps.vms['VM.Clone'] ? false : true,
                    handler: function() {
-                       PVE.window.Clone.wrap(nodename, vmid, template);
+                       PVE.window.Clone.wrap(nodename, vmid, template, 'qemu');
                    }
                },
                {
diff --git a/www/manager6/window/Clone.js b/www/manager6/window/Clone.js
index 0df7825e..48b63afe 100644
--- a/www/manager6/window/Clone.js
+++ b/www/manager6/window/Clone.js
@@ -21,9 +21,9 @@ Ext.define('PVE.window.Clone', {
 
     statics: {
        // display a snapshot selector only if needed
-       wrap: function(nodename, vmid, isTemplate) {
+       wrap: function(nodename, vmid, isTemplate, guestType) {
            Proxmox.Utils.API2Request({
-               url: '/nodes/' + nodename + '/qemu/' + vmid +'/snapshot',
+               url: '/nodes/' + nodename + '/' + guestType + '/' + vmid 
+'/snapshot',
                failure: function(response, opts) {
                    Ext.Msg.alert('Error', response.htmlStatus);
                },
@@ -34,6 +34,7 @@ Ext.define('PVE.window.Clone', {
 
                    Ext.create('PVE.window.Clone', {
                        nodename: nodename,
+                       guestType: guestType,
                        vmid: vmid,
                        isTemplate: isTemplate,
                        hasSnapshots: hasSnapshots
@@ -76,7 +77,7 @@ Ext.define('PVE.window.Clone', {
 
        Proxmox.Utils.API2Request({
            params: params,
-           url: '/nodes/' + me.nodename + '/qemu/' + me.vmid + '/clone',
+           url: '/nodes/' + me.nodename + '/' + me.guestType + '/' + me.vmid + 
'/clone',
            waitMsgTarget: me,
            method: 'POST',
            failure: function(response, opts) {
@@ -112,7 +113,7 @@ Ext.define('PVE.window.Clone', {
 
        Proxmox.Utils.API2Request({
            waitMsgTarget: me,
-           url: '/nodes/' + me.nodename + '/qemu/' + me.vmid + '/feature',
+           url: '/nodes/' + me.nodename + '/' + me.guestType + '/' + me.vmid + 
'/feature',
            params: params,
            method: 'GET',
            failure: function(response, opts) {
@@ -143,7 +144,11 @@ Ext.define('PVE.window.Clone', {
            me.snapname = 'current';
        }
 
-       var titletext = me.isTemplate ? "Template" : "VM";
+       if (!me.guestType) {
+           throw "no Guest Type specified";
+       }
+
+       var titletext = me.isTemplate ? "Template" : (me.guestType === 'qemu'? 
'VM' : 'CT');
        me.title = "Clone " + titletext + " " + me.vmid;
 
        var col1 = [];
@@ -172,7 +177,7 @@ Ext.define('PVE.window.Clone', {
        col1.push({
            xtype: 'pveGuestIDSelector',
            name: 'newvmid',
-           guestType: 'qemu',
+           guestType: me.guestType,
            value: '',
            loadNextFreeID: true,
            validateExists: false
@@ -214,6 +219,7 @@ Ext.define('PVE.window.Clone', {
            reference: 'snapshotsel',
            fieldLabel: gettext('Snapshot'),
            nodename: me.nodename,
+           guestType: me.guestType,
            vmid: me.vmid,
            hidden: me.isTemplate || !me.hasSnapshots ? true : false,
            disabled: false,
@@ -234,7 +240,7 @@ Ext.define('PVE.window.Clone', {
            hideSelection: true,
            storageLabel: gettext('Target Storage'),
            allowBlank: true,
-           storageContent: 'images',
+           storageContent: me.guestType === 'qemu' ? 'images' : 'rootdir',
            emptyText: gettext('Same as source'),
            disabled: me.isTemplate ? true : false // because default mode is 
clone for templates
        });
-- 
2.11.0


_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to