[Kimchi-devel] [PATCH] UI-Template Edit: Enable user to change disk format
Crístian Viana
cristiandeives at gmail.com
Thu Apr 16 13:58:52 UTC 2015
A volume in a logical storage pool only uses the format 'raw'. Even if the
user specifies a different format type, it will be 'raw' in the end. So it
would be nice if the interface didn't allow the user to change the volume
format for a logical pool, as it will be ignored anyway.
https://libvirt.org/storage.html
On Tue, Apr 14, 2015 at 3:24 AM Rodrigo Trujillo <
rodrigo.trujillo at linux.vnet.ibm.com> wrote:
> This patch adds a new field (Disk Format) in Storage tab in Template
> edit window. Users will then be allowed to select any disk format
> supported by Libvirt and Kimchi backend.
> The default disk format is qcow2 (first option), so, for compatibility,
> if the template register in objecstore does not contain the disk format
> information, the new field is going to set 'qcow2' automatically.
> For iscsi storagepools, the new field is going to be disabled and the
> format is going to be set automatically as 'raw', just like the backend
> behaves currently, avoiding errors.
>
> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
> ---
> ui/css/theme-default/template-edit.css | 8 +++++--
> ui/js/src/kimchi.template_edit_main.js | 40
> +++++++++++++++++++++++++++++-----
> ui/pages/template-edit.html.tmpl | 16 ++++++++++++++
> 3 files changed, 56 insertions(+), 8 deletions(-)
>
> diff --git a/ui/css/theme-default/template-edit.css
> b/ui/css/theme-default/template-edit.css
> index 7abee7c..ed9f02c 100644
> --- a/ui/css/theme-default/template-edit.css
> +++ b/ui/css/theme-default/template-edit.css
> @@ -95,7 +95,7 @@
>
> #edit-template-tabs .template-storage-cell{
> display: inline-block;
> - width: 230px;
> + width: 180px;
> }
>
> #edit-template-tabs .template-storage-cell label {
> @@ -114,7 +114,11 @@
> }
>
> #form-template-storage .template-tab-body .template-storage-name {
> - width: 220px;
> + width: 170px;
> +}
> +
> +#form-template-storage .template-tab-body .template-storage-disk-format {
> + width: 160px;
> }
>
> #edit-template-tabs .template-tab-body input[readonly] {
> diff --git a/ui/js/src/kimchi.template_edit_main.js
> b/ui/js/src/kimchi.template_edit_main.js
> index 85f76cd..48ae26b 100644
> --- a/ui/js/src/kimchi.template_edit_main.js
> +++ b/ui/js/src/kimchi.template_edit_main.js
> @@ -67,7 +67,7 @@ kimchi.template_edit_main = function() {
> $('.template-tab-body',
> '#form-template-storage').append(nodeStorage);
> var storageOptions = '';
> var scsiOptions = '';
> - $('select',
> '#form-template-storage').find('option').remove();
> + $('select:first',
> '#form-template-storage').find('option').remove();
> $.each(result, function(index, storageEntities) {
> if((storageEntities.state === 'active') &&
> (storageEntities.type != 'kimchi-iso')) {
> if(storageEntities.type === 'iscsi' ||
> storageEntities.type === 'scsi') {
> @@ -77,7 +77,7 @@ kimchi.template_edit_main = function() {
> var isSlected = tmpPath === thisName
> ? ' selected' : '';
> scsiOptions += '<option' + isSlected
> + '>' + tmpPath + '</option>';
> });
> - $('select',
> '#form-template-storage').append(scsiOptions);
> + $('select:first',
> '#form-template-storage').append(scsiOptions);
> }, function() {});
> } else {
> var isSlected = storageEntities.name ===
> thisName ? ' selected' : '';
> @@ -85,8 +85,20 @@ kimchi.template_edit_main = function() {
> }
> }
> });
> - $('select',
> '#form-template-storage').append(storageOptions);
> - $('select', '#form-template-storage').change(function() {
> + $('select:first',
> '#form-template-storage').append(storageOptions);
> +
> + // Set disk format
> + $('select:last option',
> '#form-template-storage').each(function() {
> + if ($(this).text() == storageData.storageDiskFormat) {
> + $(this).prop('selected', true);
> + }
> + });
> +
> + $('select:last',
> '#form-template-storage').change(function() {
> + $('.template-storage-disk-format').val($(this).val());
> + });
> +
> + $('select:first',
> '#form-template-storage').change(function() {
> var selectedItem = $(this).parent().parent();
> var tempStorageNameFull = $(this).val();
> var tempName = tempStorageNameFull.split('/');
> @@ -99,9 +111,19 @@ kimchi.template_edit_main = function() {
> kimchi.getStoragePoolVolume(tempStorageName,
> tempName[tempName.length-1], function(info) {
> volSize = info.capacity / Math.pow(1024,
> 3);
> $('.template-storage-disk',
> selectedItem).attr('readonly', true).val(volSize);
> + $('select:last option',
> selectedItem).each(function() {
> + this.selected = (this.text == 'raw');
> + });
> + $('select:last',
> selectedItem).prop('disabled', true).change();
> });
> } else {
> $('.template-storage-disk',
> selectedItem).attr('readonly', false);
> + if ($('select:last',
> selectedItem).prop('disabled') == true) {
> + $('select:last option',
> selectedItem).each(function() {
> + this.selected = (this.text ==
> 'qcow2');
> + });
> + $('select:last',
> selectedItem).prop('disabled', false).change();
> + }
> }
> });
> });
> @@ -120,7 +142,8 @@ kimchi.template_edit_main = function() {
> editMode : 'hide',
> storageName : defaultPool,
> storageType : defaultType,
> - storageDisk : diskEntities.size
> + storageDisk : diskEntities.size,
> + storageDiskFormat : diskEntities.format ?
> diskEntities.format : 'qcow2'
> }
>
> if (diskEntities.volume) {
> @@ -131,6 +154,10 @@ kimchi.template_edit_main = function() {
> nodeData.storageDisk = volSize;
> addStorageItem(nodeData);
>
> $('.template-storage-disk').attr('readonly', true);
> + $('select:last option',
> '#form-template-storage').each(function() {
> + this.selected = (this.text == 'raw');
> + });
> + $('select:last',
> '#form-template-storage').prop('disabled', true).change();
> });
> } else {
> addStorageItem(storageNodeData);
> @@ -271,7 +298,8 @@ kimchi.template_edit_main = function() {
> origDisks[0]['volume'] && delete
> origDisks[0]['volume'];
> origDisks[0].size =
> Number($('.template-storage-disk', tmpItem).val());
> }
> - data[field] = origDisks;
> + origDisks[0].format = $('.template-storage-disk-format',
> tmpItem).val();
> + data[field] = origDisks;
> }
> else if (field == 'graphics') {
> var type = $('#form-template-general [name="' + field +
> '"]').val();
> diff --git a/ui/pages/template-edit.html.tmpl
> b/ui/pages/template-edit.html.tmpl
> index c7832c9..e64a30f 100644
> --- a/ui/pages/template-edit.html.tmpl
> +++ b/ui/pages/template-edit.html.tmpl
> @@ -104,6 +104,7 @@
> <span class="template-storage-cell">$_("Storage
> Pool")</span>
> <span class="template-storage-cell">$_("Type")</span>
> <span
> class="template-storage-cell">$_("Disk(GB)")</span>
> + <span class="template-storage-cell">$_("Disk
> Format")</span>
> <button type="button"
> id="template-edit-storage-add-button" class="action-area"></button>
> </div>
> <div class="template-tab-body">
> @@ -160,6 +161,21 @@
> <span class="template-storage-cell">
> <input class="template-storage-disk" value={storageDisk}
> type="text" />
> </span>
> + <span class="template-storage-cell">
> + <input class="template-storage-disk-format"
> value={storageDiskFormat} type="text" style="display:none" />
> + <select>
> + <option>qcow2</option>
> + <option>raw</option>
> + <option>bochs</option>
> + <option>cloop</option>
> + <option>cow</option>
> + <option>dmg</option>
> + <option>qcow</option>
> + <option>qed</option>
> + <option>vmdk</option>
> + <option>vpc</option>
> + </select>
> + </span>
> </div>
> </script>
> <script id="template-interface-tmpl" type="text/html">
> --
> 2.1.0
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20150416/e4c75f1d/attachment.html>
More information about the Kimchi-devel
mailing list