[Kimchi-devel] [PATCH V2 1/2] Add UI support of iscsi

Zhou Zheng Sheng zhshzhou at linux.vnet.ibm.com
Thu Dec 26 02:33:52 UTC 2013


于 2013年12月25日 01:51, Rodrigo Trujillo 写道:
> On 12/23/2013 12:57 AM, zhoumeina wrote:
>> This patch is working for add iscsi type in storage pool create
>> page.
>> 1.Add iscsi server to create storage pool page.
>> 2.Add iscsi target to create storage pool page.
>>
>> Signed-off-by: zhoumeina <zhoumein at linux.vnet.ibm.com>
>> ---
>>   ui/js/src/kimchi.storagepool_add_main.js |   54
>> ++++++++++++++++++++++++-----
>>   ui/pages/i18n.html.tmpl                  |    7 ++--
>>   ui/pages/storagepool-add.html.tmpl       |   22 +++++++++++-
>>   3 files changed, 68 insertions(+), 15 deletions(-)
>>
>> diff --git a/ui/js/src/kimchi.storagepool_add_main.js
>> b/ui/js/src/kimchi.storagepool_add_main.js
>> index b31610a..cd8f1ae 100644
>> --- a/ui/js/src/kimchi.storagepool_add_main.js
>> +++ b/ui/js/src/kimchi.storagepool_add_main.js
>> @@ -35,6 +35,9 @@ kimchi.initStorageAddPage = function() {
>>       }, {
>>           label : "NFS",
>>           value : "netfs"
>> +    } ,{
>> +        label : "ISCSI",
>> +        value : "iscsi"
>>       } ];
>>       kimchi.listHostPartitions(function(data) {
>>           if (data.length > 0) {
>> @@ -57,14 +60,22 @@ kimchi.initStorageAddPage = function() {
>>                   $('.path-section').removeClass('tmpl-html');
>>                   $('.logical-section').addClass('tmpl-html');
>>                   $('.nfs-section').addClass('tmpl-html');
>> +                $('.iscsi-section').addClass('tmpl-html');
>>               } else if ($(this).val() === 'netfs') {
>>                   $('.path-section').addClass('tmpl-html');
>>                   $('.logical-section').addClass('tmpl-html');
>>                   $('.nfs-section').removeClass('tmpl-html');
>> +                $('.iscsi-section').addClass('tmpl-html');
>> +            } else if ($(this).val() === 'iscsi') {
>> +                $('.path-section').addClass('tmpl-html');
>> +                $('.logical-section').addClass('tmpl-html');
>> +                $('.nfs-section').addClass('tmpl-html');
>> +                $('.iscsi-section').removeClass('tmpl-html');
>>               } else {
>>                   $('.path-section').addClass('tmpl-html');
>>                   $('.logical-section').removeClass('tmpl-html');
>>                   $('.nfs-section').addClass('tmpl-html');
>> +                $('.iscsi-section').addClass('tmpl-html');
>>               }
>>           });
>>       });
>> @@ -85,6 +96,8 @@ kimchi.validateForm = function() {
>>           return kimchi.validateDirForm();
>>       } else if (poolType === "netfs") {
>>           return kimchi.validateNfsForm();
>> +    } else if (poolType === "iscsi") {
>> +        return kimchi.validateIscsiForm();
>>       } else {
>>           return kimchi.validateLogicalForm();
>>       }
>> @@ -107,26 +120,44 @@ kimchi.validateDirForm = function () {
>>   kimchi.validateNfsForm = function () {
>>       var nfspath = $('#nfspathId').val();
>>       var nfsserver = $('#nfsserverId').val();
>> -    if ('' === nfsserver) {
>> -        kimchi.message.error(i18n['msg.pool.edit.nfsserver.blank']);
>> +    if (!kimchi.validateServer(nfsserver)) {
>>           return false;
>>       }
>> -
>>       if ('' === nfspath) {
>>           kimchi.message.error(i18n['msg.pool.edit.nfspath.blank']);
>>           return false;
>>       }
>> -    var domain =
>> "([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6}"
>> -    var ip = "(\\d{1,3}\.){3}\\d{1,3}"
>> -    regex = new RegExp('^' + domain + '|' + ip + '$')
>> +    if (!/((\/([0-9a-zA-Z-_\.]+)))$/.test(nfspath)) {
>> +        kimchi.message.error(i18n['msg.validate.pool.edit.nfspath']);
>> +        return false;
>> +    }
>> +    return true;
>> +};
>>
>> -    if(!regex.test(nfsserver)) {
>> -        kimchi.message.error(i18n['msg.validate.pool.edit.nfsserver']);
>> +kimchi.validateIscsiForm = function() {
>> +    var iscsiServer = $('#iscsiserverId').val();
>> +    var iscsiTarget = $('#iscsiTargetId').val();
>> +    if (!kimchi.validateServer(iscsiServer)) {
>>           return false;
>>       }
>> +    if ('' === iscsiTarget) {
>> +        kimchi.message.error(i18n['msg.pool.edit.iscsitarget.blank']);
>> +        return false;
>> +    }
>> +    return true;
>> +};
>>
>> -    if (!/((\/([0-9a-zA-Z-_\.]+)))$/.test(nfspath)) {
>> -        kimchi.message.error(i18n['msg.validate.pool.edit.nfspath']);
>> +kimchi.validateServer = function(serverField) {
>> +    if ('' === serverField) {
>> +        kimchi.message.error(i18n['msg.pool.edit.server.blank']);
>> +        return false;
>> +    }
>> +    var domain =
>> "([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6}"
>> +    var ip = "(\\d{1,3}\.){3}\\d{1,3}"
>> +    regex = new RegExp('^' + domain + '|' + ip + '$')
>> +
>> +    if (!regex.test(serverField)) {
>> +        kimchi.message.error(i18n['msg.validate.pool.edit.server']);
>>           return false;
>>       }
>>       return true;
>> @@ -153,6 +184,9 @@ kimchi.addPool = function(event) {
>>                   deviceObj[0] =  formData.devices;
>>                   formData.devices = deviceObj;
>>               }
>> +        } else if (poolType === 'iscsi'){
>> +            formData.srcTarget = $('#iscsiserverId').val();
>> +            formData.srcHost = $('#iscsiTargetId').val();
>>           } else {
>>               formData.nfspath = $('#nfspathId').val();
>>               formData.nfsserver = $('#nfsserverId').val();
>> diff --git a/ui/pages/i18n.html.tmpl b/ui/pages/i18n.html.tmpl
>> index c1fc3d1..4a02e4d 100644
>> --- a/ui/pages/i18n.html.tmpl
>> +++ b/ui/pages/i18n.html.tmpl
>> @@ -94,11 +94,9 @@ var i18n = {
>>       'msg.storagepool.confirm.delete':"$_("This will permanently
>> delete the Storage Pool. Would you like to continue?")",
>>       'msg.pool.edit.name.blank':"$_("The storage pool name can not be
>> blank.")",
>>       'msg.pool.edit.path.blank':"$_("The storage pool path can not be
>> blank.")",
>> -    'msg.pool.edit.nfsserver.blank':"$_("NFS server can not be
>> blank.")",
>>       'msg.pool.edit.nfspath.blank':"$_("NFS server mount path can not
>> be blank.")",
>>       'msg.validate.pool.edit.name':"$_("Invalid Storage Pool name. 
>> It may only contain letters, numbers, underscores, and hyphens.")",
>>       'msg.validate.pool.edit.path':"$_("This is not a real linux
>> path.")",
>> -    'msg.validate.pool.edit.nfsserver':"$_("This is not a valid NFS
>> server.")",
>>       'msg.validate.pool.edit.nfspath':"$_("Invalid nfs mount path.")",
>>       'msg.kimchi.storage.pool.empty':"$_("This storage pool is
>> empty.")",
>>       'msg.kimchi.list.volume.fail':"$_("Failed to list the storage
>> pool.")",
>> @@ -121,7 +119,10 @@ var i18n = {
>>       'action_create': "$_("Create")",
>>       'msg_warning': "$_("Warning")",
>>       'msg.logicalpool.confirm.delete': "$_("It will format your disk
>> and you will loose any data in"
>> -                                      " there, are you sure to
>> continue? ")"
>> +                                      " there, are you sure to
>> continue? ")",
>> +    'msg.pool.edit.iscsitarget.blank': "$_("The iscsi target can not
>> be blank.")",
>> +    'msg.pool.edit.server.blank':"$_("Server name can not be blank.")",
>> +    'msg.validate.pool.edit.server':"$_("This is not a valid Server
>> Name or IP. please, modify it.")"
>>   };
>>   </script>
>>   </body>
>> diff --git a/ui/pages/storagepool-add.html.tmpl
>> b/ui/pages/storagepool-add.html.tmpl
>> index 3ab9ae5..2898540 100644
>> --- a/ui/pages/storagepool-add.html.tmpl
>> +++ b/ui/pages/storagepool-add.html.tmpl
>> @@ -84,8 +84,7 @@
>>                               <p class="text-help">$_("The nfs
>> exported path on nfs server")</p>
>>                               <input id="nfspathId" type="text"
>> class="text"
>>                                   style="width: 300px">
>> -                            <input type="hidden" id="localpathId"
>> class="text"
>> -                                value="none">
>> +                            <input type="hidden" id="localpathId"
>> class="text" value="none">
>>                           </div>
>>                           <div class="clear"></div>
>>                       </section>
>> @@ -104,6 +103,25 @@
>>                       <span class="text">$_("Create")</span>
>>                   </button>
>>               </div>
>> +            <div class="iscsi-section tmpl-html">
>> +                    <section class="form-section">
>> +                        <h2>3. $_("ISCSI server")</h2>
>> +                        <div class="field">
>> +                            <p class="text-help">
>> +                                $_("ISCSI server IP or hostname. It
>> should not be empty.")</p>
>> +                            <input id="iscsiserverId" type="text"
>> class="text"
>> +                                style="width: 300px">
>> +                        </div>
>> +                    </section>
>> +                    <section class="form-section">
>> +                        <h2>4. $_("Target")</h2>
>> +                        <div class="field">
>> +                            <p class="text-help">$_("The ISCSI target
>> on ISCSI server")</p>
>> +                            <input id="iscsiTargetId" type="text"
>> class="text" style="width: 300px">
>> +                        </div>
>> +                        <div class="clear"></div>
>> +                    </section>
>> +                </div>
> 
> What about iSCSI servers that need authentication ?
> Will user provide the password through UI or some config file ?
> 

kimchi transfers password in clear text, and it doesn't force https. I
think it's not safe, so I didn't add a password in the back-end. I think
there should be an overall solution for passwords (login, iSCSI CHAP,
and other). For now, the back-end implementation does not support iSCSI
authentication.

This question has been asked twice, maybe I can add password support in
the new patch set, and just transfer the password in clear text.
>>           </footer>
>>       </div>
>>       <script>
> 
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
> 


-- 
Thanks and best regards!

Zhou Zheng Sheng / 周征晟
E-mail: zhshzhou at linux.vnet.ibm.com
Telephone: 86-10-82454397




More information about the Kimchi-devel mailing list