From a457c262e17eca4e315153a8f4d65837a3e74c9e Mon Sep 17 00:00:00 2001
From: "Ing. Jan Krcmar" <honza801@civ.zcu.cz>
Date: Wed, 20 Mar 2019 12:30:41 +0100
Subject: [PATCH 1/3] wvmStorage.create_volume, wvmCreate.create_volume image
 naming respects image/volume format (qcow,qcow2)

---
 instances/views.py    | 4 ++++
 vrtManager/create.py  | 5 ++++-
 vrtManager/storage.py | 5 ++++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/instances/views.py b/instances/views.py
index ae0ed65..3262d2a 100644
--- a/instances/views.py
+++ b/instances/views.py
@@ -476,7 +476,11 @@ def instance(request, compute_id, vname):
 
                 path = connCreate.create_volume(storage, name, size, format, meta_prealloc, default_owner)
                 conn.attach_disk(path, target, subdriver=format, cache=cache, targetbus=bus)
+<<<<<<< HEAD
                 msg = _('Attach new disk: ' + target)
+=======
+                msg = _('Attach new disk {} ({})'.format(name, format))
+>>>>>>> 13ce824... wvmStorage.create_volume, wvmCreate.create_volume image naming respects image/volume format (qcow,qcow2)
                 addlogmsg(request.user.username, instance.name, msg)
                 return HttpResponseRedirect(request.get_full_path() + '#disks')
 
diff --git a/vrtManager/create.py b/vrtManager/create.py
index fd3203a..536de7a 100644
--- a/vrtManager/create.py
+++ b/vrtManager/create.py
@@ -58,7 +58,10 @@ class wvmCreate(wvmConnect):
         stg = self.get_storage(storage)
         storage_type = util.get_xml_path(stg.XMLDesc(0), "/pool/@type")
         if storage_type == 'dir':
-            name += '.img'
+            if image_format in ('qcow', 'qcow2'):
+                name += '.' + image_format
+            else:
+                name += '.img'
             alloc = 0
         else:
             alloc = size
diff --git a/vrtManager/storage.py b/vrtManager/storage.py
index 6fec0e0..9d6273a 100644
--- a/vrtManager/storage.py
+++ b/vrtManager/storage.py
@@ -213,7 +213,10 @@ class wvmStorage(wvmConnect):
         if vol_fmt == 'unknown':
             vol_fmt = 'raw'
         if storage_type == 'dir':
-            name += '.img'
+            if vol_fmt in ('qcow', 'qcow2'):
+                name += '.' + vol_fmt
+            else:
+                name += '.img'
             alloc = 0
         xml = """
             <volume>

From 3ad520209fccd99b4eae7fb7bcce6e723cae237c Mon Sep 17 00:00:00 2001
From: catborise <catborise@yahoo.com>
Date: Thu, 4 Apr 2019 16:03:22 +0300
Subject: [PATCH 2/3] Rearrange tabs for non superusers

---
 instances/templates/instance.html | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/instances/templates/instance.html b/instances/templates/instance.html
index ad3a6b8..da2865c 100644
--- a/instances/templates/instance.html
+++ b/instances/templates/instance.html
@@ -525,17 +525,18 @@
                                     <div role="tabpanel">
                                         <!-- Nav tabs -->
                                         <ul class="nav nav-tabs" role="tablist">
-                                            <li role="presentation" class="active">
-                                                <a href="#boot_opt" aria-controls="boot" role="tab" data-toggle="tab">
-                                                    {% trans "Boot" %}
-                                                </a>
-                                            </li>
-                                            <li role="presentation">
-                                                <a href="#disks" aria-controls="disks" role="tab" data-toggle="tab">
-                                                    {% trans "Disk" %}
-                                                </a>
-                                            </li>
-
+                                            {% if request.user.is_superuser %}
+                                                <li role="presentation" class="active">
+                                                    <a href="#boot_opt" aria-controls="boot" role="tab" data-toggle="tab">
+                                                        {% trans "Boot" %}
+                                                    </a>
+                                                </li>
+                                                <li role="presentation">
+                                                    <a href="#disks" aria-controls="disks" role="tab" data-toggle="tab">
+                                                        {% trans "Disk" %}
+                                                    </a>
+                                                </li>
+                                            {% endif %}
                                             {% if request.user.is_superuser or userinstance.is_vnc %}
                                                 <li role="presentation">
                                                     <a href="#vncsettings" aria-controls="vncsettings" role="tab" data-toggle="tab">

From 3cffa6e5053c21e0d8158126788b9fe1d7663d7a Mon Sep 17 00:00:00 2001
From: catborise <catborise@yahoo.com>
Date: Thu, 4 Apr 2019 16:04:34 +0300
Subject: [PATCH 3/3] Fix disk clone xml for proper disk properties

---
 instances/views.py     |  4 ----
 vrtManager/instance.py | 21 +++++++++++----------
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/instances/views.py b/instances/views.py
index 3262d2a..ecea01b 100644
--- a/instances/views.py
+++ b/instances/views.py
@@ -476,11 +476,7 @@ def instance(request, compute_id, vname):
 
                 path = connCreate.create_volume(storage, name, size, format, meta_prealloc, default_owner)
                 conn.attach_disk(path, target, subdriver=format, cache=cache, targetbus=bus)
-<<<<<<< HEAD
-                msg = _('Attach new disk: ' + target)
-=======
                 msg = _('Attach new disk {} ({})'.format(name, format))
->>>>>>> 13ce824... wvmStorage.create_volume, wvmCreate.create_volume image naming respects image/volume format (qcow,qcow2)
                 addlogmsg(request.user.username, instance.name, msg)
                 return HttpResponseRedirect(request.get_full_path() + '#disks')
 
diff --git a/vrtManager/instance.py b/vrtManager/instance.py
index 1984195..49d6419 100644
--- a/vrtManager/instance.py
+++ b/vrtManager/instance.py
@@ -871,18 +871,19 @@ class wvmInstance(wvmConnect):
                                         <allocation>0</allocation>
                                         <target>
                                             <format type='%s'/>
+                                            <permissions>
+                                                <owner>%s</owner>
+                                                <group>%s</group>
+                                                <mode>0644</mode>
+                                                <label>virt_image_t</label>
+                                            </permissions>
+                                            <compat>1.1</compat>
+                                            <features>
+                                                <lazy_refcounts/>
+                                            </features>
                                         </target>
-                                        <permissions>
-                                            <owner>%s</owner>
-                                            <group>%s</group>
-                                            <mode>0644</mode>
-                                            <label>virt_image_t</label>
-                                        </permissions>
-                                        <compat>1.1</compat>
-                                        <features>
-                                            <lazy_refcounts/>
-                                        </features>
                                     </volume>""" % (target_file, vol_format, owner['uid'], owner['guid'])
+
                     stg = vol.storagePoolLookupByVolume()
                     stg.createXMLFrom(vol_clone_xml, vol, meta_prealloc)