diff --git a/src-local/llo/new.js b/src-local/llo/new.js index 2d03b62..63b30d3 100644 --- a/src-local/llo/new.js +++ b/src-local/llo/new.js @@ -639,6 +639,142 @@ app.get('/dockerservices', (req, res, next) => { }); +app.get('/dockerimages', (req, res, next) => { + + var RES = new Object(); + const page = req.query["page"] + const per_page = req.query["per_page"] + var sort = req.query["sort"] + var filter = req.query["filter"] + var type = req.query["type"] + var sort = req.query["sort"] + var sorttmp1 = sort.split('|'); + var sortname = sorttmp1[0]; + var sortorder = sorttmp1[1]; + + var showexec = `docker image ls --format "{{json . }}" | jq . -s ` + exec(showexec, (err, stdout, stderr) => { + if (err) { + console.error(`exec error: ${err}`); + return; + } + + var nn = [] + var string = stdout.toString() + var datajson = JSON.parse(string); + + var results = [] + if(filter !== 'NULL'){ + var grep = new RegExp(filter); + var datalenth = datajson.length + for (var i=0 ; i < datalenth ; i++) + { + if(grep.test(datajson[i]['Repository'])){ + results.push(datajson[i]); + } + } + datajson=results + } + + + + // sort by title + if(sortname == 'Repository'){ + datajson.sort(function (a, b) { + if(sortorder == 'asc'){ + return a.Repository.localeCompare(b.Repository); + }else{ + return b.Repository.localeCompare(a.Repository); + } + }); + }else if(sortname == 'Size'){ + datajson.sort(function (a, b) { + if(sortorder == 'asc'){ + return a.Size.localeCompare(b.Size); + }else{ + return b.Size.localeCompare(a.Size); + } + }); + } + + + + + + + var resultid = [] + var datalenth2 = datajson.length + for (var i=0 ; i < datalenth2 ; i++) + { + datajson[i].id=i + datajson[i]._id=i + resultid.push(datajson[i]); + } + datajson=resultid + + //console.log('Number of files ' + stdout); + //console.log('Number string ' + string); + //console.log('stringify ' + JSON.stringify(datajson)); + var total = datajson.length; + var perpage = per_page + //var page = 1 + var lastpage = total/perpage; + + if(lastpage <= 1) { + lastpage=1 + }else{ + lastpage++ + } + lastpage = Math.trunc(lastpage); + + var next=(page+1); + if(next >= lastpage){ + next=lastpage; + } + var prev=(page-1); + if(prev == 0){ + prev=1; + } + var from=((page-1)*perpage)+1; + var to=(perpage*page) + + + var myplaybooks = new Object(); + var links = ` + { + "pagination": { + "total": ${total}, + "per_page": ${perpage}, + "current_page": ${page}, + "last_page": ${lastpage}, + "next_page_url": "?page=${next}", + "prev_page_url": "?page=${prev}", + "from": ${from}, + "to": ${to}, + "frommongo": ${from}, + "tomongo": ${to} + } + } + ` + //"next_page_url": "?page="+${next}, + //"prev_page_url": "?page="+${prev}, +//console.log(JSON.stringify(links)) + //myplaybooks.links = links + myplaybooks.links = JSON.parse(links); + from-- + myplaybooks.data = datajson.slice(from,to); + //myplaybooks.data = datajson; + + var RES = new Object(); + RES.code = req.query["action"] + RES.token = req.query["token"] + RES.error = false + RES.error_msg = "ok" + RES.data = myplaybooks; + res.json(RES.data) + }); + +}); app.get('/buildservices', (req, res, next) => { @@ -792,6 +928,96 @@ app.get('/getjupyterinfo', (req, res, next) => { }); +app.get('/hybrid_rmimage', (req, res, next) => { + + var RES = new Object(); + RES.instance = req.query["instance"] + var showexec = `docker rmi ${RES.instance} -f` + //console.log(JSON.stringify(showexec)) + exec(showexec, (err, stdout, stderr) => { + if (err) { + console.error(`exec error: ${err}`); + var string = err.toString() + RES.error = false + RES.error_msg = "ok" + RES.test = string; + //RES.data = found; + res.json(RES) + return; + } + if (stdout) { + var string = stdout.toString() + RES.error = false + RES.error_msg = "ok" + RES.test = 'ok'; + RES.out = string; + //RES.data = found; + res.json(RES) + + }else{ + var found = 'no' + RES.error = false + RES.error_msg = "ok" + RES.test = 'ok'; + RES.out = string; + //RES.data = found; + res.json(RES) + } + }); + +}); + +app.get('/hybrid_rmall', (req, res, next) => { + +// docker rmi $(docker image ls -q) -f; docker container prune -f; docker image prune -f; docker volume prune -f + + var RES = new Object(); + RES.action = req.query["action"] + var showexec = '' + if( RES.action == 'images'){ + showexec = 'docker rmi $(docker image ls -q) -f; docker image prune -f' + } else if( RES.action == 'containers'){ + showexec = ' docker container prune -f' + } else if( RES.action == 'volumes'){ + showexec = ' docker volume prune -f' + } + if(showexec != ''){ + //console.log(JSON.stringify(showexec)) + exec(showexec, (err, stdout, stderr) => { + if (err) { + console.error(`exec error: ${err}`); + var string = err.toString() + RES.error = 'yes' + RES.error_msg = string + RES.out = string; + RES.out = 'no'; + //RES.data = found; + res.json(RES) + return; + } + if (stdout) { + var string = stdout.toString() + RES.error = 'no' + RES.error_msg = "ok" + RES.out = string; + res.json(RES) + + }else{ + RES.error = 'no' + RES.error_msg = "ok" + RES.out = string; + res.json(RES) + } + }); + }else{ + RES.error = 'no' + RES.error_msg = "ok" + RES.out = 'no action'; + res.json(RES) + } + +}); + app.get('/getmountinfo', (req, res, next) => { var mypath1 = process.cwd() @@ -1706,6 +1932,10 @@ function docker_image_rm(swarmlabname,project){ } + + + + function myserverStatus(){ var serverStatus = '/bin/bash ./hybrid/connect/status.sh swarmlab0'; exec(serverStatus, (err, stdout, stderr) => { diff --git a/src/components/mynetwork.vue b/src/components/mynetwork.vue index fbb4f9b..4cacabd 100644 --- a/src/components/mynetwork.vue +++ b/src/components/mynetwork.vue @@ -3,13 +3,26 @@