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

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

Location:
lmd/trunk/fuentes/lmd-server.install/usr
Files:
9 added
1 edited

Legend:

Unmodified
Added
Removed
  • 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.