Changeset 2582


Ignore:
Timestamp:
Oct 7, 2016, 2:16:08 PM (3 years ago)
Author:
joamuran
Message:

Added import/export/clone and edit options for image capabilities

Location:
lmd/trunk/fuentes
Files:
10 added
8 edited

Legend:

Unmodified
Added
Removed
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/module.json

    r1388 r2582  
    1616     "id":"llx-ltsconf",
    1717     "main":"llx-ltsconf.html"
     18    },
     19    {
     20     "menuEntry":"Exported Images",
     21     "id":"llx-exported",
     22     "main":"exported.html"
    1823    }
    1924  ]
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/src/i18n/ca-ES@valencia/messages.json

    r2061 r2582  
    2828    "Create.New.LTSP.Image" : ["Crea una nova imatge de client lleuger."],
    2929    "llx.ltsp.go.forward" : ["Endavant >"],
    30     "" : [""]
     30    "lmd.warning.refresh.image" : ["Aneu a regenerar la imatge "],
     31    "lmd.warning.refresh.image.sure" : [". N'esteu segurs?"],
     32    "lmd.info.modal.clone.image" : ["Escriviu el nom i la descripció per a la nova imatge: "],
     33    "llx_clone_img_names_equal" : ["El nom de la imatge clonada no ha de ser igual al de la imatge original"],
     34    "lmd.clonehere":["Clona al servidor"],
     35    "lmd.clone_title": ["Clona o exporta la imatge"],
     36    "lmd.clone_message":["Desitgeu clonar la imatge en aquest servidor o crear un fitxer per exportar-lo a atre servidor?"],
     37    "lmd.clone":["Clona"],
     38    "lmd.export":["Exporta"],
     39    "lmd.exportfile": ["Exportar a un firxer"],
     40    "lmd.cancel":["Cancel·la"],
     41    "lmd.image.options.client.type":["Tipus de client"],
     42    "lmd.image.options.client.type.help":["Llança la imatge com a client lleuger o semilleuger"],
     43    "lmd.image.options.client.type.label.default":["Per omissió"],
     44    "lmd.image.options.client.type.label.thin":["Client lleuger"],
     45    "lmd.image.options.client.type.label.fat":["Client semilleuger"],
     46    "lmd.image.options.client.language.help":["Idioma de la pantalla d'inici i la interfície d'usuari"],
     47    "lmd.image.options.client.language":["Idioma"],
     48    "lmd.image.options.client.language.default":["Per defecte"],
     49    "lmd.image.options.client.language.ca":["Valencià"],
     50    "lmd.image.options.client.language.en":["Anglès"],
     51    "lmd.image.options.client.language.es":["Castellà"],
     52    "lmd.image.options.client.ram.threshold":["Llindar de RAM"],
     53    "lmd.image.options.client.ram.threshold.help":["Exectuta aquesta imatge com a cliente lleuger quan la memoria siga inferior al llindar indicat."],
     54    "lmd.image.options.client.ram.threshold.not.apply":["No s'aplica"],
     55    "lmd_client_options_dialog.apply":["Aplicar canvis"],
     56    "lmd_client_options_dialog.success":["Els canvis s'han aplicat per a aqyuesta imatge"],
     57    "lmd_client_options_dialog_title":["Opcions de la imatge"],
     58    "lmd_options_image_name_label":["Nom"],
     59    "lmd_options_image_name_help":["Nom de la imatge"],
     60    "lmd_options_image_desc_label":["Descripció"],
     61    "lmd_options_image_desc_help":["Descripció de la imatge"],
     62    "lmd_options_image_adv_label":["Avançat"],
     63    "lmd_options_image_adv_help":["Opcions avançades de LTSP"]
    3164  }
    3265}
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/src/i18n/en-US/messages.json

    r2061 r2582  
    2828    "Create.New.LTSP.Image" : ["Create a new thin client Image."],
    2929    "llx.ltsp.go.forward" : ["Next >"],
    30     "" : [""]
     30    "lmd.warning.refresh.image" : ["You are going to refresh image "],
     31    "lmd.warning.refresh.image.sure" : [". Are you sure?"],
     32    "lmd.info.modal.clone.image" : ["Write name and description for new image: "],
     33    "llx_clone_img_names_equal" : ["Image cloned name should not be equal to original image"],
     34    "lmd.clone_title": ["Clone or export image"],
     35    "lmd.clonehere":["Clone in this server"],
     36    "lmd.clone_message":["Clone into this server or prepare a file to export?"],
     37    "lmd.exportfile":["Export to file"],
     38    "lmd.clone":["Clone"],
     39    "lmd.export":["Export"],
     40    "lmd.cancel":["Cancel"],
     41    "lmd.image.options.client.type":["Client Type"],
     42    "lmd.image.options.client.type.help":["Rus this image as a thin or fat client."],
     43    "lmd.image.options.client.type.label.default":["Default"],
     44    "lmd.image.options.client.type.label.thin":["Thin Client"],
     45    "lmd.image.options.client.type.label.fat":["Fat Client"],
     46    "lmd.image.options.client.language.help":["Language for display manager and user interface."],
     47    "lmd.image.options.client.language":["Language"],
     48    "lmd.image.options.client.language.default":["Default"],
     49    "lmd.image.options.client.language.ca":["Valencian"],
     50    "lmd.image.options.client.language.en":["English"],
     51    "lmd.image.options.client.language.es":["Spanish"],
     52    "lmd.image.options.client.ram.threshold":["RAM Threshold"],
     53    "lmd.image.options.client.ram.threshold.help":["Run this image as a thin client, if the client has less RAM memory than this threshold."],
     54    "lmd.image.options.client.ram.threshold.not.apply":["Do not apply"],
     55    "lmd_client_options_dialog.apply":["Apply"],
     56    "lmd_client_options_dialog.success":["Changes has been applied for this image"],
     57    "lmd_client_options_dialog_title":["Image Options"],
     58    "lmd_options_image_name_label":["Name"],
     59    "lmd_options_image_name_help":["Image Name"],
     60    "lmd_options_image_desc_label":["Description"],
     61    "lmd_options_image_desc_help":["Image Description"],
     62    "lmd_options_image_adv_label":["Advanced"],
     63    "lmd_options_image_adv_help":["Advanced options for LTSP"]
     64   
    3165  }
    3266}
     67
     68
     69
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/src/i18n/es-ES/messages.json

    r2061 r2582  
    2828    "Create.New.LTSP.Image" : ["Crear una nueva imagen de cliente ligero."],
    2929    "llx.ltsp.go.forward" : ["Adelante >"],
    30     "" : [""]
     30    "lmd.warning.refresh.image" : ["Se va a refresca la imagen  "],
     31    "lmd.warning.refresh.image.sure" : [". ¿Está seguro?"],
     32    "lmd.info.modal.clone.image" : ["Escriba el nombre y la descripción para la nueva imagen"],
     33    "llx_clone_img_names_equal" : ["El nombre de la imagen clonada ha de ser diferente al de la imagen original"],
     34    "lmd.clonehere":["Clonar en el servidor"],
     35    "lmd.clone_title": ["Clonar o exportar imagen"],
     36    "lmd.clone_message":["Desea clonar la imagen en este servidor o crear un fichero per exportarlo a otro?"],
     37    "lmd.exportfile":["Exportar a fichero"],
     38    "lmd.clone":["Clonar"],
     39    "lmd.export":["Exportar"],
     40    "lmd.cancel":["Cancelar"],
     41    "lmd.image.options.client.type":["Tipo de cliente"],
     42    "lmd.image.options.client.type.help":["Lanza la imagen como cliente ligero o semiligero"],
     43    "lmd.image.options.client.type.label.default":["Por defecto"],
     44    "lmd.image.options.client.type.label.thin":["Cliente ligero"],
     45    "lmd.image.options.client.type.label.fat":["Cliente semiligero"],
     46    "lmd.image.options.client.language.help":["Idioma para mostrar en la pantalla de inicio y la interfaz de usuario"],
     47    "lmd.image.options.client.language":["Idioma"],
     48    "lmd.image.options.client.language.default":["Por defecto"],
     49    "lmd.image.options.client.language.ca":["Valenciano"],
     50    "lmd.image.options.client.language.en":["Inglés"],
     51    "lmd.image.options.client.language.es":["Castellano"],
     52    "lmd.image.options.client.ram.threshold":["Umbral de RAM"],
     53    "lmd.image.options.client.ram.threshold.help":["Ejectuta esta imagen como cliente ligero cuando la memoria del cliente sea inferior a este umbral."],
     54    "lmd.image.options.client.ram.threshold.not.apply":["No se aplica"],
     55    "lmd_client_options_dialog.apply":["Aplicar cambios"],
     56    "lmd_client_options_dialog.success":["Los cambios se han aplicado para esta imagen"],
     57    "lmd_client_options_dialog_title":["Opciones de la imagen"],
     58    "lmd_options_image_name_label":["Nombre"],
     59    "lmd_options_image_name_help":["Nombre de la imagen"],
     60    "lmd_options_image_desc_label":["Descripción"],
     61    "lmd_options_image_desc_help":["Descripción de la imagen"],
     62    "lmd_options_image_adv_label":["Avanzado"],
     63    "lmd_options_image_adv_help":["Opciones avanzadas de LTSP"]
    3164  }
    3265}
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/src/images.html

    r2061 r2582  
    33<!--div id="LtspImageManagerContainer" class="jumbotron  col-lg-12"-->
    44
     5<div class="container">
    56<div class="panel panel-default">
    67<div class="panel-heading"><h2  i18n>lmd.Image.List</h2></div>
     
    126127
    127128
    128 </div></div>
     129</div></div></div>
  • lmd/trunk/fuentes/admin-center-ltsp.install/lliurex-ltsp/src/js/imageManager.js

    r2061 r2582  
    232232
    233233//ImageManager.prototype.renderImage=function renderImage(imagefile, callback=null){
     234
     235ImageManager.prototype.exportDialog=function exportDialog(targetid, is_export){
     236    var self=this;
     237    // is_export=true -> Export operation
     238    // is_export=false -> Clone operation
     239   
     240    var clone_export_button=self._("lmd.clone");
     241    if (is_export) clone_export_button=self._("lmd.export");
     242   
     243    var text=self._("lmd.info.modal.clone.image");
     244    var form="<label for='ltsp_clone_new_name'>"+self._("lmd.image.assistant.Name")+"</label><input type='text' name='ltsp_clone_new_name' class='form-control is-empty' id='ltsp_clone_new_name' value='"+targetid+"'>";
     245    form+='<label for="llx_ltsp_clone_new_desc">'+self._("lmd.image.assistant.Description")+'</label><textarea class="form-control" id="llx_ltsp_clone_new_desc" type="text"></textarea>';
     246   
     247    var dialog=bootbox.dialog({
     248        message: form,
     249        title: text,
     250        buttons:{
     251            "Ok":{
     252                label:clone_export_button,
     253                className: "btn-success btn-raised",
     254                callback: function (){
     255                var newLabel=$('#ltsp_clone_new_name').val();
     256                var newDesc=$('#llx_ltsp_clone_new_desc').val();
     257                if (newLabel==targetid && !is_export ) {
     258                    bootbox.alert(self._("llx_clone_img_names_equal"));
     259                    return false;
     260                    } else {
     261                        //alert("Export: "+is_export+" for "+targetid+" as "+newLabel+ "with desc: " + newDesc);
     262                        var credentials=[sessionStorage.username , sessionStorage.password];
     263                        var n4dclass="LmdServer";
     264                        var n4dmethod="CloneOrExportWS";
     265                       
     266                        var newid=newLabel.replace(/([^a-z0-9]+)/gi, '');
     267                        var arglist=[targetid, newid, newLabel, newDesc, is_export];
     268                        //arglist.push(id);
     269                        Utils.n4dWithLog(credentials, n4dclass, n4dmethod, arglist, function(){}); // no callback is needed
     270                       
     271                       
     272                   
     273                       }
     274                    }
     275                },
     276            cancel:{
     277                label:self._("lmd.cancel"),
     278                className: "btn-cancel btn-raised"
     279                }
     280                }
     281            });
     282           
     283           
     284            $.material.init();
     285            dialog.modal("show");
     286   
     287};
     288
     289
     290/*ImageManager.prototype.createSelect=function createSelect(item){
     291    var sel='<div class="form-group" title="'+item.help+'"  style="margin-top:30;">';
     292    sel+='<label for="'+item.id+'" class="col-md-2 control-label">'+item.label+'</label>';
     293    sel+='<div class="col-md-10">';
     294    sel+='<select id="'+item.id+'" class="form-control">';
     295    for (var i in item.options){
     296        sel+="<option value="+item.options[i].value+">"+item.options[i].label+"</option>";
     297    }
     298   
     299    sel+="</select></div></div>";
     300   
     301    return sel;
     302}*/
     303
     304ImageManager.prototype.EditImageOptions=function EditImageOptions(image){
     305    var self=this;
     306    var imagejson=JSON.parse(image);
     307    /*alert(imagejson.fat_ram_threshold);
     308    alert(imagejson.ldm_session);
     309    alert(imagejson.ldm_language);
     310    alert(imagejson.lmd_extra_params);*/
     311   
     312    // Setting up if is fat client
     313    var fatclient="default";
     314    if(imagejson.ltsp_fatclient=="false") fatclient="thin";
     315    else if (imagejson.ltsp_fatclient=="true") fatclient="fat";
     316   
     317    // Setting Up Language
     318    var imglang="default";
     319    if(imagejson.ldm_language=="ca_ES.UTF-8@valencia") imglang="ca";
     320    else if(imagejson.ldm_language=="es_ES.UTF-8") imglang="es";
     321   
     322    // Setting up local apps
     323    var use_local_apps="";
     324    if(imagejson.use_local_apps=="true") use_local_apps="checked";
     325   
     326   
     327   
     328    var content="";
     329    /*
     330    {"status": "edited", "fat_ram_threshold": "default", "name": "Client", "img": "llx-client16.png", "ldm_session": "default", "taskid": "14751445423", "template": "lliurex-ltsp-client.conf", "ltsp_fatclient": "undefined", "task_status": "DONE", "id": "Client", "lmd_extra_params": "", "desc": "Client de model d'aula LliureX (32 bits)."}
     331
     332    {"fat_ram_threshold": "256", "name": "Client", "img": "llx-client16.png", "ldm_session": "default", "ldm_language": "ca_ES.UTF-8@valencia", "use_local_apps": "true", "template": "lliurex-ltsp-client.conf", "local_apps_text": "firefox", "ltsp_fatclient": "false", "task_status": "DONE", "id": "Client", "lmd_extra_params": "Param1=\"Hola\"<br/>Param3=\"kkk\"", "desc": "Client de model d'aula LliureX (32 bits)."}
     333    */
     334   
     335    content+=Utils.formFactory.createText({"id":"ltsp_image_options_client_name",
     336                                        "label": self._("lmd_options_image_name_label"),
     337                                        "help":self._("lmd_options_image_name_help"),
     338                                        "value":imagejson.name});
     339   
     340    content+=Utils.formFactory.createTextArea({"id":"ltsp_image_options_client_desc",
     341                                        "label": self._("lmd_options_image_desc_label"),
     342                                        "help": self._("lmd_options_image_desc_help"),
     343                                        "value":imagejson.desc});
     344   
     345    content+=Utils.formFactory.createSelect({"id":"ltsp_image_options_client_type",
     346                               "label":self._("lmd.image.options.client.type"),
     347                               "help":self._("lmd.image.options.client.type.help"),
     348                               "default":fatclient,
     349                               "options":[
     350                                {"value":"default", "label":self._("lmd.image.options.client.type.label.default")},
     351                                {"value":"thin", "label":self._("lmd.image.options.client.type.label.thin")},
     352                                {"value":"fat", "label":self._("lmd.image.options.client.type.label.fat")}  ]});
     353   
     354    content+=Utils.formFactory.createSelect({"id":"ltsp_image_options_client_lang",
     355                               "help":self._("lmd.image.options.client.language.help"),
     356                               "label":self._("lmd.image.options.client.language"),
     357                               "default":imglang,
     358                               "options":[
     359                                {"value":"default", "label":self._("lmd.image.options.client.language.default")},
     360                                {"value":"ca", "label":self._("lmd.image.options.client.language.ca")},
     361                                {"value":"es", "label":self._("lmd.image.options.client.language.es")},
     362                                {"value":"en", "label":self._("lmd.image.options.client.language.en")} ]});
     363                       
     364    content+=Utils.formFactory.createSelect({"id":"ltsp_image_options_client_run_as_thin",
     365                               "help":self._("lmd.image.options.client.ram.threshold.help"),
     366                               "label":self._("lmd.image.options.client.ram.threshold"),
     367                               "default":imagejson.fat_ram_threshold,
     368                               "options":[
     369                                {"value":"default", "label":self._("lmd.image.options.client.ram.threshold.not.apply")},
     370                                {"value":"128", "label":"128 Mb"},
     371                                {"value":"256", "label":"256 Mb"},
     372                                {"value":"512", "label":"512 Mb"} ]});
     373                                               
     374    content+=Utils.formFactory.createCheckbox({"id":"ltsp_image_options_localapps",
     375                                                "label":"Use Local Apps",
     376                                                "default":use_local_apps,
     377                                                "help":"Run some apps like Firefox or Chrome as local apps."});
     378   
     379    content+=Utils.formFactory.createTextArea({"id":"lmd_options_image_advanced",
     380                                        "label": self._("lmd_options_image_adv_label"),
     381                                        "help": self._("lmd_options_image_adv_help"),
     382                                        "value":imagejson.lmd_extra_params.replace("<br/>","\n")});
     383   
     384   
     385    var dialog=bootbox.dialog({
     386        message: content,
     387        title: self._("lmd_client_options_dialog_title"),
     388        buttons:{
     389            "Apply":{
     390            label:self._("lmd_client_options_dialog.apply"),
     391            className: "btn-success btn-raised",
     392                            callback: function (){
     393                               
     394                                var name=$("#ltsp_image_options_client_name").val();
     395                                var id=imagejson.id;
     396                                var imgbg=imagejson.img;
     397                                var template=imagejson.template;
     398                                var desc=$("#ltsp_image_options_client_desc").val();
     399                                var ltsp_fatclient="undefined";
     400                                if ($("#ltsp_image_options_client_type").val()=="fat") ltsp_fatclient="true";
     401                                else if ($("#ltsp_image_options_client_type").val()=="thin") ltsp_fatclient="false";
     402                                var ldm_session="default";
     403                               
     404                                var ldm_language="en_US.UTF-8";
     405                                if ($("#ltsp_image_options_client_lang").val()=="ca") ldm_language="ca_ES.UTF-8@valencia";
     406                                else if ($("#ltsp_image_options_client_lang").val()=="es") ldm_language="es_ES.UTF-8";
     407                               
     408                                var use_local_apps="false"; // Check if ltsp_fatclient is false to avoid localapps in fat clients
     409                                if ($("#ltsp_image_options_localapps").val()=="on" && ltsp_fatclient=="false")  use_local_apps="true";
     410                               
     411                                var local_apps_text="firefox, google-chrome-stable, chromium-browser";
     412                               
     413                                var fat_ram_threshold=$("#ltsp_image_options_client_run_as_thin").val();
     414                                var lmd_extra_params=$("#lmd_options_image_advanced").val();
     415                               
     416                     
     417                                       
     418                                /*var data="{'desc': '"+desc+"',\n";
     419                                        data=data+"'id': '"+id+"',\n";
     420                                        data=data+"'template': '"+template+"',\n";
     421                                        data=data+"'name': '"+name+"',\n";
     422                                        data=data+"'img': '"+imgbg+"',\n";
     423                                        data=data+"'ltsp_fatclient': '"+ltsp_fatclient+"',\n";
     424                                        data=data+"'ldm_session': '"+ldm_session+"',\n";
     425                                        data=data+"'ldm_language': '"+ldm_language+"',\n";
     426                                        data=data+"'fat_ram_threshold': '"+fat_ram_threshold+"',\n";
     427                                        data=data+"'use_local_apps': '"+use_local_apps+"',\n";
     428                                        data=data+"'local_apps_text': '"+local_apps_text+"',\n";
     429                                        data=data+"'lmd_extra_params': '"+lmd_extra_params.replace(/"/g, '\\\"').replace(/\n/g, "<br/>")+"'\n}";
     430                                  */
     431                               
     432                                var data='{"desc": "'+desc+'",\n';
     433                                        data=data+'"id": "'+id+'",\n';
     434                                        data=data+'"template": "'+template+'",\n';
     435                                        data=data+'"name": "'+name+'",\n';
     436                                        data=data+'"img": "'+imgbg+'",\n';
     437                                        data=data+'"ltsp_fatclient": "'+ltsp_fatclient+'",\n';
     438                                        data=data+'"ldm_session": "'+ldm_session+'",\n';
     439                                        data=data+'"ldm_language": "'+ldm_language+'",\n';
     440                                        data=data+'"fat_ram_threshold": "'+fat_ram_threshold+'",\n';
     441                                        data=data+'"use_local_apps": "'+use_local_apps+'",\n';
     442                                        data=data+'"local_apps_text": "'+local_apps_text+'",\n';
     443                                        data=data+'"lmd_extra_params": "'+lmd_extra_params.replace(/"/g, '\\\"').replace(/\n/g, '<br/>')+'"\n}';
     444                                       
     445                                // PERFORM N4d CALL
     446   
     447                                var credentials=[sessionStorage.username , sessionStorage.password];
     448                                var n4dclass="LmdImageManager";
     449                                var n4dmethod="setImage";
     450                                var arglist=[];
     451                                arglist.push(id);
     452                                arglist.push(data);
     453                                try {
     454                                    Utils.n4d(credentials, n4dclass, n4dmethod, arglist, function(response){
     455                                        console.log(response);
     456                                        message=self._("lmd_client_options_dialog.success");
     457                                        Utils.msg(message, MSG_SUCCESS);
     458                                        console.log("Removing .llx-ltsp-image-file[target_id='"+id+"']");
     459                                        $.when($(".llx-ltsp-image-file[target_id='"+id+"']").remove()).then(function(){
     460                                            self.getImageList();
     461                                            });
     462                                       
     463                                       
     464                                    },0);
     465                                   }
     466                                   catch (error){
     467                                     Utils.msg(message+" "+error, MSG_ERROR);
     468                                }
     469                               
     470                               
     471                                /* PERFORM N4d CALL
     472
     473                                        $.xmlrpc({
     474                                                url: 'https://'+sessionStorage.server+':9779',
     475                                                methodName: 'setImage',
     476                                                params: [[sessionStorage.username, sessionStorage.password], "LmdImageManager", id, data],
     477                                                success: function(response,status,jqXHR){
     478                                                        self.showMe();
     479                                                        title="LMD";
     480                                                        content=i18n.gettext("imagemanager.image.info.saved");
     481                                                        CustomNofity(title, content);
     482
     483                                                        $("#dialog-edit-image-info").empty();
     484                                                        $("#dialog-edit-image-info").dialog( "close" );
     485
     486                                                },
     487                                                error: function(jqXHR, status, error) {
     488
     489                                */
     490                               
     491                               
     492                               
     493                            }
     494                        },
     495            cancel:{
     496                    label:self._("lmd.cancel"),
     497                    className: "btn-cancel btn-raised" }
     498                }
     499            });
     500               
     501             
     502        $.material.init();
     503        dialog.modal("show");
     504   
     505   
     506};
     507
    234508ImageManager.prototype.renderImage=function renderImage(imagefile){
    235509    // Creates a container for thin client image, with buttons and status   
     
    330604                //alert("Regenerate "+$(this).attr("target_id"));
    331605                var targetid=$(this).attr("target_id");
    332                 var text="You are going to refresh image "+targetid+". Are you sure?";
     606                var text=self._("lmd.warning.refresh.image")+targetid+self._("lmd.warning.refresh.image.sure");
    333607                bootbox.confirm(text, function(res){
    334608                    // Removing image with targetid
     
    338612               
    339613            $(imgOptsBt).on("click", function(){
    340                 alert("Show options for "+$(this).attr("target_id"));
     614                //alert("Show options for "+$(this).attr("target_id"));
     615               
     616                var credentials="";
     617                var n4dclass="LmdImageManager";
     618                var n4dmethod="getImage";
     619                var arglist=[$(this).attr("target_id")+".json"];
     620 
     621                Utils.n4d(credentials, n4dclass, n4dmethod, arglist, function(response){
     622                    self.EditImageOptions(response);
    341623                });
     624           });
    342625               
    343626            $(cloneImgBt).on("click", function(){
    344                 alert("Clone "+$(this).attr("target_id"));
     627                //alert("Clonerrr "+$(this).attr("target_id"));
     628                var targetid=$(this).attr("target_id");
     629               
     630                //var text=self._("Clone into this serever or export to another machine?");
     631               
     632           
     633                var txt_lmd_clone_message=self._("lmd.clone_message");
     634                var lmd_clone_title=self._("lmd.clone_title");
     635                var lmd_clonehere=self._("lmd.clonehere");
     636                var lmd_exportfile=self._("lmd.exportfile");
     637           
     638                console.log(self);
     639                console.log(self._("llx_clone_img_names_equal")+"!!");
     640                console.log(txt_lmd_clone_message+"****");
     641               
     642                var dialog=bootbox.dialog({
     643                    message: txt_lmd_clone_message,
     644                    title: lmd_clone_title,
     645                    buttons:{
     646                        "Clone":{
     647                            label:lmd_clonehere,
     648                            className: "btn-success btn-raised",
     649                            callback: function (){
     650                                self.exportDialog(targetid, false);
     651                            }
     652                        },
     653                        "Export":{
     654                            label:lmd_exportfile,
     655                            className: "btn-raised",
     656                            callback: function(){
     657                                self.exportDialog(targetid, true);
     658                            }
     659                        }
     660                    }
    345661                });
     662               
     663             
     664                $.material.init();
     665                dialog.modal("show");
     666            });
    346667                       
    347668            $(removeImgBt).on("click", function(){
     
    8911212                        "arch": arch};
    8921213   
    893         console.log("111111111111111");
     1214        //console.log("111111111111111");
    8941215        console.log(info_image);
    8951216       
  • lmd/trunk/fuentes/debian/changelog

    r2531 r2582  
     1lmd (2.4.51) UNRELEASED; urgency=hugh
     2
     3  * Added some lmd scripts for clone, export and improt images
     4  * Added export and importa capabilities from gui
     5  * Added options per ltsp image for booting
     6
     7 --  <joamuran@gmail.com>  Fri, 07 Oct 2016 14:13:03 +0200
     8
    19lmd (2.4.50) xenial; urgency=high
    210
  • lmd/trunk/fuentes/lmd-server.install/usr/share/n4d/python-plugins/LmdServer.py

    r2486 r2582  
    251251       
    252252        def export_image(self, ip, port, imgid, srv_ip='127.0.0.1'):
     253                # Deprecated: Replaced by CloneOrExportWS
    253254                try:
    254255                        # creates an image from an specified template
     
    269270
    270271        def import_image(self, ip, port, imgid, path, srv_ip='127.0.0.1'):
     272                # Deprecated: Replaced by CloneOrExportWS and extra apps...
    271273                try:
    272274                       
     
    275277                        n4d_server_ip=client.get_variable("", "VariablesManager", "SRV_IP")
    276278
    277                
    278279                        #if(ip==srv_ip)
    279280                        print ("COMPARING: "+lliurex.net.get_ip_from_host(ip)+ "and "+ n4d_server_ip);
     
    319320                        print "Except: "+str(e)
    320321                        return {"status": False, "msg": str(e)}
     322
     323
     324        def CreateImgJSON(self, imgid, newLabel, newid, description, path):
     325                #self.CreateImgJSON(targetid, newLabel, newid, newDesc, new_json_descriptor_file);
     326                try:
     327                       
     328                        # Removing previous .json into image
     329                        files=os.listdir('/opt/ltsp/'+imgid );
     330                        for i in files:
     331                                f,ext=os.path.splitext(i)
     332                                if (ext==".json"):
     333                                        os.remove('/opt/ltsp/' +imgid+"/"+i);
     334
     335                        # Create and copy new json
     336                        json_file = open('/etc/ltsp/images/' + imgid + '.json','r')
     337                        jsonClient=json.loads(json_file.read());
     338                        json_file.close();             
     339                        #print jsonClient;
     340                        jsonClient['name']=newLabel;
     341                        jsonClient['id']=newid;
     342                        jsonClient['desc']=description;
     343                       
     344                        json_file = open(path,'w')
     345                        metadata_string = unicode(json.dumps(jsonClient,indent=4,encoding="utf-8",ensure_ascii=False)).encode("utf-8")
     346                        json_file.write(metadata_string);
     347                        json_file.close();
     348                       
     349                        return {"status": True, "msg": "Saved"}
     350               
     351                except Exception as e:
     352                        print "Except: "+str(e)
     353                        return {"status": False, "msg": str(e)}
     354               
     355       
     356        def CloneOrExportWS(self, targetid, newid, newLabel, newDesc, is_export):
     357                '''
     358                Export or Clone an image via web
     359                # New Version of import/export
     360                # Last Modification: 23/09/2016
     361                '''
     362               
     363                new_json_descriptor_file="/tmp/"+newid+".json";
     364                original_path_image="/opt/ltsp/"+targetid;
     365                self.CreateImgJSON(targetid, newLabel, newid, newDesc, new_json_descriptor_file);
     366               
     367                if str(is_export)=="True": #Export to a tar.gz with lmdimg extension
     368                        #command="lmd-export-img.sh "+targetid+" "+newLabel+" "+newDesc;
     369                       
     370                        command="lmd-export-img.sh "+new_json_descriptor_file+" "+original_path_image+" "+newid+".lmdimg"
     371                else:
     372                        #command="lmd-clone-img.sh "+targetid+" "+newLabel+" "+newDesc;
     373                       
     374                        command="echo "+targetid+" "+original_path_image+" "+newid;
     375                        command="lmd-clone-img.sh "+new_json_descriptor_file+" "+original_path_image+" "+newid;
     376                       
     377               
     378                try:
     379                        ret=objects['TaskMan'].newTask(command);
     380                        if ret["status"]==True: ## Task has launched ok
     381                                # Returns true and ret.msg, that is job id
     382                                print ("**********************************************");
     383                                return {"status": True, "msg": ret["msg"]}
     384                                pass
     385                       
     386                        else:
     387                                if ret["msg"]=="SERVER_BUSY":
     388                                        return {'status':False, 'msg':'SERVER_BUSY'}
     389                                else:
     390                                        return {'status':False, 'msg':'EXCEPTION'}
     391                except Exception as e:
     392                        print "Except: "+str(e)
     393                        return {"status": False, "msg": str(e)}
     394               
     395                return {"status": True, "msg": "Done"}
    321396       
    322397        def deploy_minimal_client(self, ip, port, srv_ip='127.0.0.1'):
     398                # DEPRECATED: Replaced by deploy_minimal_clientWS
    323399                try:
    324400                        command="/usr/sbin/mini-light-client.py";
Note: See TracChangeset for help on using the changeset viewer.