From ca3c97fdfe2fc37ea521aeeb7f7776a5a7a3b3f9 Mon Sep 17 00:00:00 2001 From: zeus Date: Fri, 3 Dec 2021 00:04:49 +0200 Subject: [PATCH] image and clear menou --- src-local/llo/new.js | 230 +++++++++ src/components/mynetwork.vue | 19 +- src/components/mynetwork/images.vue | 603 ++++++++++++++++++++++++ src/store/modules/create_pipelineLLO.js | 62 +++ 4 files changed, 912 insertions(+), 2 deletions(-) create mode 100644 src/components/mynetwork/images.vue 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 @@
-
+
+
+
+
+
+
+ View and Manage your local system +
+
+
+
+ + +
@@ -28,6 +41,7 @@ import {mapState, mapGetters, mapActions} from 'vuex' import ViewNetwork from "./mynetwork/mytable.vue"; import AdhocView from "./mynetwork/AdhocView.vue"; import DockerServices from "./mynetwork/dockerservices.vue"; +import DockerImages from "./mynetwork/images.vue"; import card from '@/components/Card.vue' //import AvailableServices from "./mynetwork/availableservices.vue"; export default { @@ -35,7 +49,8 @@ export default { ViewNetwork, AdhocView, card, - DockerServices + DockerServices, + DockerImages // AvailableServices }, data () { diff --git a/src/components/mynetwork/images.vue b/src/components/mynetwork/images.vue new file mode 100644 index 0000000..513532d --- /dev/null +++ b/src/components/mynetwork/images.vue @@ -0,0 +1,603 @@ + + + diff --git a/src/store/modules/create_pipelineLLO.js b/src/store/modules/create_pipelineLLO.js index 7d1de3e..ab32c51 100644 --- a/src/store/modules/create_pipelineLLO.js +++ b/src/store/modules/create_pipelineLLO.js @@ -336,6 +336,68 @@ export default { return R; } } + }, + async hybrid_rmimage({commit,rootGetters}, value) { + //console.log('value '+JSON.stringify(value)) + try { + var token = value.token + var params = { + instance: value.instance + } + var options = { + params: params, + headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, + }; + var sock_server_l = ApiConfig.url_80+'/hybrid_rmimage' + var p = await axios.get(sock_server_l,options); + //var p = await axios.get('https://localhost:3000/getservicesinfo',options); + return p + //console.log(JSON.stringify(p)) + //console.log(value.token) + //console.log(value.swarmlabname) + } catch (e) { + if(e.message == "Request failed with status code 401" || /401/i.test(e.message)){ + //console.log('error '+JSON.stringify(e)) + window.location.href = 'https://api-login.swarmlab.io:8089'; + }else{ + var R = { + ERROR_str: e, + ERROR: 'yes' + } + return R; + } + } + }, + async hybrid_rmall({commit,rootGetters}, value) { + //console.log('value '+JSON.stringify(value)) + try { + var token = value.token + var params = { + action: value.action + } + var options = { + params: params, + headers: { 'content-type': 'application/x-www-form-urlencoded',Authorization: `Bearer ${token}` }, + }; + var sock_server_l = ApiConfig.url_80+'/hybrid_rmall' + var p = await axios.get(sock_server_l,options); + //var p = await axios.get('https://localhost:3000/getservicesinfo',options); + return p + //console.log(JSON.stringify(p)) + //console.log(value.token) + //console.log(value.swarmlabname) + } catch (e) { + if(e.message == "Request failed with status code 401" || /401/i.test(e.message)){ + //console.log('error '+JSON.stringify(e)) + window.location.href = 'https://api-login.swarmlab.io:8089'; + }else{ + var R = { + ERROR_str: e, + ERROR: 'yes' + } + return R; + } + } }, async getmountinfo({commit,rootGetters}, value) { //console.log('value '+JSON.stringify(value))