Vue App
\ No newline at end of file
+Vue App
\ No newline at end of file
diff --git a/dist/js/app.cfdcf3b1.js b/dist/js/app.cfdcf3b1.js
new file mode 100644
index 0000000..b52ef60
--- /dev/null
+++ b/dist/js/app.cfdcf3b1.js
@@ -0,0 +1,2 @@
+(function(t){function e(e){for(var s,n,r=e[0],l=e[1],c=e[2],u=0,p=[];uName',sortField:"name",titleClass:"text-center aligned",visible:!0,dataClass:"center aligned",width:"20%"},{name:"nodeid",title:'nodeid',titleClass:"text-center aligned",sortField:"nodeid",visible:!0,width:"20%"},{name:"ip",title:'IP',titleClass:"text-center aligned",sortField:"swarmlabname",visible:!0,width:"13%"},{name:"role",title:'Role',titleClass:"text-center aligned",sortField:"role",visible:!0,width:"15%",formatter(t){const e=/^ondemand_playground/.test(t);if(e){var a='
";this.$swal({type:"info",html:i+s,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0})}else if("register"==t){console.log("start "+JSON.stringify("register"));s="Before you begin\n \n Before you start using the Swarmlab Hybrid API, you need a hybrid enabled account and the Swarmlab API enabled. \n \n To learn more, see Get Started with Hybrid Platform. \n ",i="
You can connect to the same contained process multiple times simultaneously, from different sessions on the Docker host. \n \n Open a terminal and Run:\n \n \n";r+=i?"docker exec -it -u"+n+" "+this.hybridshowdata.Names+" "+s:"docker exec -it "+this.hybridshowdata.Names+" "+s,r+=" ",r+=" ",r+=" Directory Maps",r+="
",r+="
Local
Container
";for(var l=a.data.test[0],c=0;c
"+l[c].Source+"
"+l[c].Destination+"
");r+="
",r+=" ",this.$swal({type:"Info",title:"Info!",icon:"info",html:r,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}else if("install"==t){e={action:"up"};e.token=this.token,e.swarmlabname=this.swarmlabname,e.git=this.swarmlabname_git,this.$socket.client.open(),this.$socket.client.emit("install",e)}else"container-stop"==t?(this.$root.$emit("SERVER_hybrid_table_start"),this.$socket.client.emit("container-stop",this.swarmlabname,this.hybridshowdata.ID)):"create-wirequard"==t?this.$socket.client.emit("create-wirequard",this.token):"stop"==t&&this.$socket.client.emit("stop",this.swarmlabname)},async socketopen(){this.$socket.client.open(),this.$socket.client.connect()},async socketauthenticate(){this.$socket.client.emit("authenticate",this.token)},async socketreconnect(){await this.socketopen();this.socketauthenticate()},async socketclose(){this.$socket.client.close()}},sockets:{connect(){console.log("socket connected socketdatasend"),this.issocket="open";f.dispatch("pipelineLLO/setsocketStatus",{status:"open"})},error(t){console.log("socket error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"})},connect_error(t){console.log("socket connect_error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketopen(),this.socketreconnect()},disconnect(t){console.log("socket disconnect "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},connect_timeout(t){console.log("socket timeout "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},reconnect(t){console.log("socket reconnect attemptNumber "+JSON.stringify(t)),this.socketreconnect()},reconnect_attempt(t){console.log("socket reconnect_attempt "+JSON.stringify(t)),this.socketreconnect()},reconnecting(t){console.log("socket reconnecting "+JSON.stringify(t)),this.socketreconnect()},reconnect_error(t){console.log("socket reconnect_error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},unauthorized(t){console.log("socket unauthorized "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"})},socket_id_emit(t){console.log("socket id from server "+JSON.stringify(t)),this.issocket="open";f.dispatch("pipelineLLO/setsocketStatus",{status:"open"})},async logdata(t){console.log(" socket from logdata "+JSON.stringify(t));f.dispatch("pipelineLLO/addlog",{log:t});var e=f.getters["pipelineLLO/getlog"];this.log_path=[...new Set(e.map(t=>t.tailed_path))];var a="";for(let i of this.log_path)if(a=e.filter(t=>t.tailed_path===i).length,s["default"].set(this.log_path_lenght,i,a),a>this.loglenghttotal)f.dispatch("pipelineLLO/taillog",{path:i})},async message(t){console.log(" socket message "+JSON.stringify(t))},async message_config(t){t.data=JSON.parse(t.data),"ok"==t.file?(console.log("server-value-file-ok "+JSON.stringify(t.data.status)),this.CONFIG.status=t.data.status,this.CONFIG.workerkey=t.data.workerkey,this.CONFIG.swarmlab_public_wgkey=t.data.swarmlab_public_wgkey,this.CONFIG.server_ip=t.data.server_ip,this.CONFIG.allowed_ips=t.data.allowed_ips,this.CONFIG.wg_port=t.data.wg_port,this.CONFIG.wg_ip=t.data.wg_ip,this.CONFIG.swarm_ip=t.data.swarm_ip,this.CONFIG.privatekey=t.data.privatekey,this.CONFIG.publickey=t.data.publickey):"nodata"==t.file&&(this.CONFIG.status="",this.CONFIG.workerkey="",this.CONFIG.swarmlab_public_wgkey="",this.CONFIG.server_ip="",this.CONFIG.allowed_ips="",this.CONFIG.wg_port="",this.CONFIG.wg_ip="",this.CONFIG.swarm_ip="",this.CONFIG.privatekey="",this.CONFIG.publickey=""),console.log("server-config "+JSON.stringify(this.CONFIG)),f.dispatch("pipelineLLO/addconfig",this.CONFIG),this.$root.$emit("hybrid_connect_server_view",this.CONFIG)},async message_out(t){console.log(" socket out "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t),this.$root.$emit("SERVER_hybrid_table_start"),this.hybridshowdata={}},async message_err(t){console.log(" socket err "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t)},async message_close(t){console.log(" socket close "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t),this.$root.$emit("hybrid_refresh_table"),this.$root.$emit("SERVER_hybrid_table_stop")},async message_hybrid_status(t){var e={};e.status=t;f.dispatch("pipelineLLO/setstatus",e);this.$root.$emit("hybrid_server_status",t),this.STATUS.swarmlabid=t.data.swarmlabid,this.STATUS.hybrid=t.data.hybrid,this.STATUS.swarmlab=t.data.swarmlab,f.dispatch("pipelineLLO/addstatusswarmlab",this.STATUS)}},actions:{}},W=X,tt=(a("4cf0"),Object(O["a"])(W,Z,Q,!1,null,null,null)),et=tt.exports,at=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[s("div",{staticClass:"author"},[s("img",{staticClass:"avatar border-white",attrs:{src:a("3606"),alt:"..."}})]),s("b-container",{staticClass:"bv-example-row",attrs:{fluid:""}},[s("div",{staticClass:" col text-center"},[s("v-wait",{attrs:{for:"myRunInstance1"}},[s("template",{slot:"waiting"},[s("div",[s("img",{attrs:{src:a("cf1c"),width:"50",height:"50"}}),t._v(" Lab_Instance... ")])])],2),t.extenderror?s("button",{staticClass:"btn btn-outline-danger btn-sm",attrs:{type:"button",round:""},on:{click:function(e){return t.runextenderror()}}},[t._v(" Error: max depth exceeded")]):t._e(),t.tryConsole?s("button",{staticClass:"btn btn-outline-warning btn-sm",attrs:{type:"button",round:""},on:{click:function(e){return t.clear()}}},[t._v(" Clear")]):t._e(),s("button",{staticClass:"btn btn-outline-info btn-sm",attrs:{type:"button",round:"",disabled:""}},[t._v(" Console")]),"sublime"==t.cmOptions.keyMap?s("button",{staticClass:"btn btn-outline-info btn-sm",attrs:{type:"button",round:""},on:{click:t.infoFilter}},[t._v(" i")]):t._e()],1),s("div",{staticClass:"codemirror"},[s("codemirror",{ref:"myCm",attrs:{value:t.code,options:t.cmOptions},on:{cursorActivity:t.onCmCursorActivity,ready:t.onCmReady,focus:t.onCmFocus,input:t.onCmCodeChange}})],1)])],1)},st=[],it=a("8f94"),ot=(a("c4e3"),a("21a6"),a("a7be"),a("eb8f"),a("b866"),a("31c5"),a("9b74"),a("f6b6"),a("3c98"),a("9c7b"),a("715d"),a("b933"),a("23de"),a("02f0"),a("8c33"),a("7289"),a("2aed"),a("d72f"),a("0b6c"),a("9a48"),a("75f8"),a("697e"),a("aedd"),a("164b"),a("4895"),a("cbc8"),a("8d70"),a("9f09"),a("a2c1"),a("56b3"),a("d7d5"),{components:{card:N,codemirror:it["codemirror"]},data(){return{socketonline:!1,extenderror:!1,tryConsole:!1,ssl:{},getinfo:"",token:"",swarmlabname:"",code:"",editchoice:"",optionsedit:[{text:"code",value:"code"},{text:"text",value:"text"}],llodesc:[{llo_url:"",llo_name:"",llo_author:"",llo_intro:""}],llo:[{id:0,rm:!1,data_info:"Asciidoc \n",data_code:"#Your source code",data_service:"",code_datafile:"url",code_name:"",code_exec:"",code_options:"",code_mime:"",code_info:"",code_code:"",code_codeout:"",code_codeoutput:"console",points:"",challenge_question:"",code_challenge_question:"",challenge_answer:"",challenge_answer_hint:"",code_challenge_answer_hint:"",challenge_answer_source:"",challenge_answer_code_out:"",challenge_answer_code:"",code_challenge_answer_code:""}],searchLLO:[],searchLLOactive:!1,ADOC_html_code:"",challenge:[],action:"",tryLLO:[],service:"os2",active:0,activecount:0,remove:"",activeField:"",bootstrap:!1,firstbootstrap:0,htmlasciitmp:"",datafile:"https://git.swarmlab.io:3000/labs/examples-mpi2/raw/branch/master/0_netstat/data",datadir:"0_netstat/data",LearningObject:"",showllo:!0,showlloedit:!0,selected:"sublime",options:[{text:"vim",value:"vim"},{text:"sublime",value:"sublime"}],optionsmime:[{text:"sh",value:"bash"},{text:"javascript",value:"javascript"},{text:"python",value:"python"},{text:"php",value:"php"},{text:"sql",value:"sq;"},{text:"xml",value:"xml"},{text:"c",value:"c"}],pValidate:!1,cmOptions:{tabSize:2,styleActiveLine:!0,lineNumbers:!1,lineSeparator:"\n",line:!0,foldGutter:!0,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],highlightSelectionMatches:{showToken:/\w/,annotateScrollbar:!0},styleSelectedText:!0,mode:"shell",hintOptions:{completeSingle:!1},keyMap:"sublime",matchBrackets:!0,showCursorWhenSelecting:!0,indentUnit:this.ADOC_html_code,lineWrapping:!0,theme:"idea",refresh:!0,readOnly:!0,autofocus:!1,extraKeys:{Ctrl:"autocomplete"}},ADOC_html:[]}},methods:{socketconnect(){this.$root.$emit("SERVER_socket_connect")},clear(){this.tryConsole=!1,this.code=""},async getdata(){var t=this.getinfo;await f.dispatch("pipelineLLO/get_data",{code:t})},async showactive(t){this.topwindow(t)},onCmReady(t){t.on("change",(t,e)=>{}),t.on("keypress",()=>{t.showHint({completeSingle:!1})})},onCmCursorActivity(t,e,a){},onCmFocus(t){},onCmCodeChange(t){this.code=t},handleChange(){},setKeymap(){this.cmOptions.keyMap=this.selected},infoFilter(){var t="
\n The current limit of 125 layers is due to the kernel\'s ARG_MAX, which limits the number of arguments / length of arguments that can be passed when mounting the layers \n \n (this limit can be raised in kernels, but is not something that could be relied on as it would make those images non-interoperable on systems that don\'t have the custom configuration)\n
\n
\n Note that not every step in a Dockerfile creates a new layer, only (RUN) steps that modify the filesystem will introduce a new layer.\n
\n\n
\n
Solution
\n \n
\n Delete all local docker images related to your dockerfile using the following:\n \n \n docker rmi -f $(docker images -a -q)\n
\n\n
\n
Description
\n \n Remove unused image \n - all images not referenced by any container -\n \n
";this.$swal({type:t,html:s+a,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})},setFilter(){this.moreParams={filter:this.searchFor,type:this.selected},s["default"].nextTick(()=>this.$refs.vuetable.refresh())},resetFilter(){this.moreParams={},this.searchFor="",s["default"].nextTick(()=>this.$refs.vuetable.refresh())},onPaginationData(t){this.$refs.pagination.setPaginationData(t),this.$refs.paginationInfo.setPaginationData(t)},onChangePage(t){this.$refs.vuetable.changePage(t)},editRow(t){alert("You clicked edit on"+JSON.stringify(t))},async onAction(t,e,a){this.actionrowindex=a,console.log("index "+this.actionrowindex),"view-item"==t||("run-more"==t?(this.hybridshowdata=e,console.log("hybrid "+JSON.stringify(e))):"delete-item"==t&&this.$swal({type:"info",html:info+winfo,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!0,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Yes, Delete it!"}))},refreshVuetable(){this.$nextTick(()=>{this.vuetablekey+=1})},playbookinfoShow(t){return this.visibility[t]=!0},playbookinfo(t){return this.playbookInfo=t},rowClicked(t,e){return{html:!0,title:()=>"Hello Popover: "+ ++this.counter,content:()=>"The date is: "+new Date+""}},loadsuccess(t){var e=t.data.data;this.fielddata=e;e.length},onLoadError(t){"401"==t.response.status&&(window.location.href="https://api-login.swarmlab.io:8089",s["default"].nextTick(()=>window.location.href="https://api-login.swarmlab.io:8089"))}},actions:{}},Tt=Dt,Ft=(a("4788"),Object(O["a"])(Tt,Pt,Bt,!1,null,null,null)),Et=Ft.exports,Gt={components:{card:N,MyconnectManageServer:Et},data(){return{loading:!1,consoleView:"off",productIndex:1}},mounted(){},beforeDestroy(){},created(){}},Vt=Gt,Jt=Object(O["a"])(Vt,It,Rt,!1,null,null,null),zt=Jt.exports,jt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[a("div",{staticClass:"row"},[a("div",{staticClass:"col-6 order-first "},[a("br"),a("mydeploy-manage-bootstrap")],1),a("div",{staticClass:"col-6 order-last"},[a("br"),a("mydeploy-manage-view")],1)])])},Mt=[],qt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[s("div",{staticClass:"author"},[s("img",{staticClass:"avatar border-white",attrs:{src:a("0ed5"),alt:"..."}})]),s("b-container",{staticClass:"bv-example-row",attrs:{fluid:""}},[s("div",{staticClass:"row text-center"},[s("div",{staticClass:"col-12"},[s("b",[t._v("Swarmlab hybrid Deploy")])])]),s("br"),s("b-row",[s("b-col",{attrs:{cols:"8"}},[s("ValidationProvider",{ref:"hybrid_image",attrs:{name:"Image",rules:"required|alpha_num_image"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.image,expression:"deploy.image"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.image,"is-invalid":2==t.isDeployValid.image},attrs:{type:"text",name:"Image","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Image"},domProps:{value:t.deploy.image},on:{keyup:function(e){return t.isValid("image")},input:function(e){e.target.composing||t.$set(t.deploy,"image",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("image")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_stackname",attrs:{name:"StackName",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.stackname,expression:"deploy.stackname"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.stackname,"is-invalid":2==t.isDeployValid.stackname},attrs:{type:"text",name:"StackName","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"StackName"},domProps:{value:t.deploy.stackname},on:{keyup:function(e){return t.isValid("stackname")},input:function(e){e.target.composing||t.$set(t.deploy,"stackname",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("stackname")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"8"}},[s("ValidationProvider",{ref:"hybrid_name",attrs:{name:"Name",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.name,expression:"deploy.name"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.name,"is-invalid":2==t.isDeployValid.name},attrs:{type:"HybridError",name:"Name","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Name"},domProps:{value:t.deploy.name},on:{keyup:function(e){return t.isValid("name")},input:function(e){e.target.composing||t.$set(t.deploy,"name",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("name")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_network",attrs:{name:"Network",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.network,expression:"deploy.network"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.network,"is-invalid":2==t.isDeployValid.network},attrs:{type:"text",name:"Network","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Network Name"},domProps:{value:t.deploy.network},on:{keyup:function(e){return t.isValid("network")},input:function(e){e.target.composing||t.$set(t.deploy,"network",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("network")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_cpu",attrs:{name:"Cpu",rules:"required|alpha_num_cpu"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.cpu,expression:"deploy.cpu"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.cpu,"is-invalid":2==t.isDeployValid.cpu},attrs:{type:"text",name:"Cpu","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Limit CPU e.g. 0.50"},domProps:{value:t.deploy.cpu},on:{keyup:function(e){return t.isValid("cpu")},input:function(e){e.target.composing||t.$set(t.deploy,"cpu",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("cpu")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_memory",attrs:{name:"Memory",rules:"required|alpha_num_memory"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.memory,expression:"deploy.memory"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.memory,"is-invalid":2==t.isDeployValid.memory},attrs:{type:"text",name:"Memory","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Limit Memory e.g. 500"},domProps:{value:t.deploy.memory},on:{keyup:function(e){return t.isValid("memory")},input:function(e){e.target.composing||t.$set(t.deploy,"memory",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("memory")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_networkport",attrs:{name:"Networkport",rules:"mybetween:1,65535"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.networkport,expression:"deploy.networkport"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.networkport,"is-invalid":2==t.isDeployValid.networkport},attrs:{type:"text",name:"Networkport","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Net Port (inside the container)"},domProps:{value:t.deploy.networkport},on:{keyup:function(e){return t.isValid("networkport")},input:function(e){e.target.composing||t.$set(t.deploy,"networkport",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("networkport")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"12"}},[s("ValidationProvider",{ref:"hybrid_url",attrs:{name:"Url",rules:"required|alpha_url"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.url,expression:"deploy.url"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.url,"is-invalid":2==t.isDeployValid.url},attrs:{type:"text",name:"Url","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"link to README file (see info button for more)"},domProps:{value:t.deploy.url},on:{keyup:function(e){return t.isValid("url")},input:function(e){e.target.composing||t.$set(t.deploy,"url",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("url")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("Start date ")])]),s("date-picker",{attrs:{type:"date",autocomplete:"off",format:"YYYY-MM-DD",lang:"en"},model:{value:t.deploy.startdate,callback:function(e){t.$set(t.deploy,"startdate",e)},expression:"deploy.startdate"}})],1)]),s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("Start time")])]),s("date-picker",{attrs:{type:"time",format:"HH:mm","show-hour":"","show-minute":"","time-picker-options":t.timePickerOptions,lang:"en"},model:{value:t.deploy.starttime,callback:function(e){t.$set(t.deploy,"starttime",e)},expression:"deploy.starttime"}})],1)])],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("End date ")])]),s("date-picker",{attrs:{type:"date",autocomplete:"off",format:"YYYY-MM-DD",lang:"en"},model:{value:t.deploy.enddate,callback:function(e){t.$set(t.deploy,"enddate",e)},expression:"deploy.enddate"}})],1)]),s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("End time")])]),s("date-picker",{attrs:{type:"time",format:"HH:mm","show-hour":"","show-minute":"","time-picker-options":t.timePickerOptions,lang:"en"},model:{value:t.deploy.endtime,callback:function(e){t.$set(t.deploy,"endtime",e)},expression:"deploy.endtime"}})],1)])],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"ti-cloud-up btn btn-outline-success",attrs:{round:"",type:"button",title:"Deploy"},on:{click:function(e){return t.add_deploy()}}},[t._v(" Deploy ")])])])]),s("b-col",{attrs:{cols:"2"}}),s("b-col",{attrs:{cols:"4"}},[s("div",{staticClass:"custom-control custom-switch"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.usersjoin,expression:"deploy.usersjoin"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customStack",value:"true","unchecked-value":"false"},domProps:{checked:Array.isArray(t.deploy.usersjoin)?t._i(t.deploy.usersjoin,"true")>-1:t.deploy.usersjoin},on:{change:function(e){var a=t.deploy.usersjoin,s=e.target,i=!!s.checked;if(Array.isArray(a)){var o="true",n=t._i(a,o);s.checked?n<0&&t.$set(t.deploy,"usersjoin",a.concat([o])):n>-1&&t.$set(t.deploy,"usersjoin",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.deploy,"usersjoin",i)}}}),s("label",{staticClass:"custom-control-label",attrs:{for:"customStack"}},[t._v("Users can join the lab instance")])])])],1)],1)],1)},Ut=[],Ht=a("ec45");a("411c");Object(R["b"])("alpha_num",P["a"]),Object(R["b"])("mybetween",P["b"]),Object(R["b"])("mybetween",{message:"The {_field_} field must be a number: 1-65535"}),Object(R["b"])("alpha_num_image",t=>{var e=new RegExp(/^[A-Za-z0-9\:\.\-\_\/]+$/,"i");return!!e.test(t)||"The {_field_} field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores"}),Object(R["b"])("alpha_num_name",t=>{var e=new RegExp(/^[A-Za-z0-9]+$/,"i");return!!e.test(t)||"The {_field_} field may contain alphabetic characters and numbers"}),Object(R["b"])("alpha_num_cpu",t=>{var e=new RegExp(/^(?!0\d)\d+(?:\.\d{1})?$/);return!!e.test(t)||"The {_field_} field may contain numbers and dots e.g 0.5"}),Object(R["b"])("alpha_num_memory",t=>{var e=new RegExp(/^[0-9]+$/,"i");return!!e.test(t)||"The {_field_} field may contain numbers e.g 500"}),Object(R["b"])("alpha_url",t=>{var e=new RegExp(/https?:\/\/(git\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/,"i");return!!e.test(t)||"The {_field_} field may contain url"}),Object(R["b"])("required",{...P["c"],message:"This field is required"});var Yt={components:{DatePicker:Ht["a"],ValidationProvider:R["a"],card:N},props:{},data(){return{isHybridError:!1,isHybridSuccess:!1,token:"",timePickerOptions:{start:"00:00",step:"00:30",end:"23:30"},deploy:{usersjoin:!0},isDeployValid:{image:3,name:3,stackname:3,network:3,url:3,cpu:3,memory:3},isDeployError:{}}},mounted(){},created(){var t=window.location.href,e=new URL(t);this.token=e.searchParams.get("token")},beforeDestroy(){},computed:{},methods:{async add_deploy(){var t=Object.entries(this.deploy),e=new Promise((e,a)=>{t.forEach((t,a,s)=>{this.isValid(s[a][0]),a===s.length-1&&e()})});e.then(()=>{(async()=>{var t=!0;for(const[a,s]of Object.entries(this.isDeployValid))1!=s&&(t=!1);if(t){await f.dispatch("pipelineLLO/adddeploy",{token:this.token,deploy:this.deploy});this.$root.$emit("hybrid_refresh_bootstrap_view"),console.log("ok");var e='
The deploy process is started
Please wait for it to finish before trying again!
See also in "Manage your deployments" table';this.$swal({type:"Info",title:"Info!",icon:"info",html:e,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}else{e="Missing required fields";this.$swal({type:"Info",title:"Info!",icon:"info",html:e,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}})()})},async showInfo(t){if("image"==t)var e='
To start, we need to have a docker image \n We have built some. You can find it here: Menu "Images"
\n \n \n The field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores\n';else if("stackname"==t)e="
To start, we need to have a Stack Name \n This will bring up all the services, volumes, networks and everything else in an isolated environment.\n\n \n \n The field may contain alphabetic characters and numbers\n";else if("network"==t)e="
To start, we need to have a Network \n This will bring up all the services, volumes, networks and everything else in an isolated network environment.\n \n \nServices running inside any of this networks containers have access (not limited by any firewall) to all other services.\n \n
\n \n \n The field may contain alphabetic characters and numbers\n\n";else if("url"==t)e="
Git Repo url
\n The location of the file describing your service. (most comonly README) \n \n\n
\n \n \n The field may contain any valid url BUT it must be under https://git.swarmlab.io\n";else if("networkport"==t)e="
Network Port
\n \n
\nBy default, when you create a container, it does not publish any of its ports to the outside world. \n \nTo make a port available to Services which are not connected to the Stack network, we use this port. \n
\n \n
\n\nTo make a service available we have to know the port number used by these service inside the container.\n\n \nPlease insert that here.\n
\n \n \n(The port for outside connections is automatically generated and you dont have to worry about it!)\n \n \n The field may contain numbers\n";else if("cpu"==t)e="
To start, we need to have a CPU Limit \n Limit the specific CPUs or cores a container can use\n\n \n \nThe field may contain numbers and dots e.g 0.5\n";else if("memory"==t)e="
To start, we need to have a Memory Limit \n
Limit the specific Memoty a container can use \ne.g 200\n \n(MB)\n\n \n \n
\n\nIt is important not to allow a running container to consume too much of the host machine’s memory.\n\n
\n \n \n The field may contain numbers\n";else if("name"==t)e="
To start, we need to have a Name \nThis name is only for your own use. The system completely disregards it!\n
";this.$swal({type:"info",html:i+s,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0})}else if("register"==t){console.log("start "+JSON.stringify("register"));s="Before you begin\n \n Before you start using the Swarmlab Hybrid API, you need a hybrid enabled account and the Swarmlab API enabled. \n \n To learn more, see Get Started with Hybrid Platform. \n ",i="
You can connect to the same contained process multiple times simultaneously, from different sessions on the Docker host. \n \n Open a terminal and Run:\n \n \n";r+=i?"docker exec -it -u"+n+" "+this.hybridshowdata.Names+" "+s:"docker exec -it "+this.hybridshowdata.Names+" "+s,r+=" ",r+=" ",r+=" Directory Maps",r+="
",r+="
Local
Container
";for(var l=a.data.test[0],c=0;c
"+l[c].Source+"
"+l[c].Destination+"
");r+="
",r+=" ",this.$swal({type:"Info",title:"Info!",icon:"info",html:r,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}else if("install"==t){e={action:"up"};e.token=this.token,e.swarmlabname=this.swarmlabname,e.git=this.swarmlabname_git,this.$socket.client.open(),this.$socket.client.emit("install",e)}else"container-stop"==t?(this.$root.$emit("SERVER_hybrid_table_start"),this.$socket.client.emit("container-stop",this.swarmlabname,this.hybridshowdata.ID)):"create-wirequard"==t?this.$socket.client.emit("create-wirequard",this.token):"stop"==t&&this.$socket.client.emit("stop",this.swarmlabname)},async socketopen(){this.$socket.client.open(),this.$socket.client.connect()},async socketauthenticate(){this.$socket.client.emit("authenticate",this.token)},async socketreconnect(){await this.socketopen();this.socketauthenticate()},async socketclose(){this.$socket.client.close()}},sockets:{connect(){console.log("socket connected socketdatasend"),this.issocket="open";f.dispatch("pipelineLLO/setsocketStatus",{status:"open"})},error(t){console.log("socket error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"})},connect_error(t){console.log("socket connect_error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketopen(),this.socketreconnect()},disconnect(t){console.log("socket disconnect "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},connect_timeout(t){console.log("socket timeout "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},reconnect(t){console.log("socket reconnect attemptNumber "+JSON.stringify(t)),this.socketreconnect()},reconnect_attempt(t){console.log("socket reconnect_attempt "+JSON.stringify(t)),this.socketreconnect()},reconnecting(t){console.log("socket reconnecting "+JSON.stringify(t)),this.socketreconnect()},reconnect_error(t){console.log("socket reconnect_error "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"});this.socketreconnect()},unauthorized(t){console.log("socket unauthorized "+JSON.stringify(t)),this.issocket="close";f.dispatch("pipelineLLO/setsocketStatus",{status:"close"})},socket_id_emit(t){console.log("socket id from server "+JSON.stringify(t)),this.issocket="open";f.dispatch("pipelineLLO/setsocketStatus",{status:"open"})},async logdata(t){console.log(" socket from logdata "+JSON.stringify(t));f.dispatch("pipelineLLO/addlog",{log:t});var e=f.getters["pipelineLLO/getlog"];this.log_path=[...new Set(e.map(t=>t.tailed_path))];var a="";for(let i of this.log_path)if(a=e.filter(t=>t.tailed_path===i).length,s["default"].set(this.log_path_lenght,i,a),a>this.loglenghttotal)f.dispatch("pipelineLLO/taillog",{path:i})},async message(t){console.log(" socket message "+JSON.stringify(t))},async message_config(t){t.data=JSON.parse(t.data),"ok"==t.file?(console.log("server-value-file-ok "+JSON.stringify(t.data.status)),this.CONFIG.status=t.data.status,this.CONFIG.workerkey=t.data.workerkey,this.CONFIG.swarmlab_public_wgkey=t.data.swarmlab_public_wgkey,this.CONFIG.server_ip=t.data.server_ip,this.CONFIG.allowed_ips=t.data.allowed_ips,this.CONFIG.wg_port=t.data.wg_port,this.CONFIG.wg_ip=t.data.wg_ip,this.CONFIG.swarm_ip=t.data.swarm_ip,this.CONFIG.privatekey=t.data.privatekey,this.CONFIG.publickey=t.data.publickey):"nodata"==t.file&&(this.CONFIG.status="",this.CONFIG.workerkey="",this.CONFIG.swarmlab_public_wgkey="",this.CONFIG.server_ip="",this.CONFIG.allowed_ips="",this.CONFIG.wg_port="",this.CONFIG.wg_ip="",this.CONFIG.swarm_ip="",this.CONFIG.privatekey="",this.CONFIG.publickey=""),console.log("server-config "+JSON.stringify(this.CONFIG)),f.dispatch("pipelineLLO/addconfig",this.CONFIG),this.$root.$emit("hybrid_connect_server_view",this.CONFIG)},async message_out(t){console.log(" socket out "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t),this.$root.$emit("SERVER_hybrid_table_start"),this.hybridshowdata={}},async message_err(t){console.log(" socket err "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t)},async message_close(t){console.log(" socket close "+JSON.stringify(t)),this.$root.$emit("hybrid_log_in",t),this.$root.$emit("hybrid_refresh_table"),this.$root.$emit("SERVER_hybrid_table_stop")},async message_hybrid_status(t){var e={};e.status=t;f.dispatch("pipelineLLO/setstatus",e);this.$root.$emit("hybrid_server_status",t),this.STATUS.swarmlabid=t.data.swarmlabid,this.STATUS.hybrid=t.data.hybrid,this.STATUS.swarmlab=t.data.swarmlab,f.dispatch("pipelineLLO/addstatusswarmlab",this.STATUS)}},actions:{}},W=X,tt=(a("4cf0"),Object(O["a"])(W,Z,Q,!1,null,null,null)),et=tt.exports,at=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[s("div",{staticClass:"author"},[s("img",{staticClass:"avatar border-white",attrs:{src:a("3606"),alt:"..."}})]),s("b-container",{staticClass:"bv-example-row",attrs:{fluid:""}},[s("div",{staticClass:" col text-center"},[s("v-wait",{attrs:{for:"myRunInstance1"}},[s("template",{slot:"waiting"},[s("div",[s("img",{attrs:{src:a("cf1c"),width:"50",height:"50"}}),t._v(" Lab_Instance... ")])])],2),t.extenderror?s("button",{staticClass:"btn btn-outline-danger btn-sm",attrs:{type:"button",round:""},on:{click:function(e){return t.runextenderror()}}},[t._v(" Error: max depth exceeded")]):t._e(),t.tryConsole?s("button",{staticClass:"btn btn-outline-warning btn-sm",attrs:{type:"button",round:""},on:{click:function(e){return t.clear()}}},[t._v(" Clear")]):t._e(),s("button",{staticClass:"btn btn-outline-info btn-sm",attrs:{type:"button",round:"",disabled:""}},[t._v(" Console")]),"sublime"==t.cmOptions.keyMap?s("button",{staticClass:"btn btn-outline-info btn-sm",attrs:{type:"button",round:""},on:{click:t.infoFilter}},[t._v(" i")]):t._e()],1),s("div",{staticClass:"codemirror"},[s("codemirror",{ref:"myCm",attrs:{value:t.code,options:t.cmOptions},on:{cursorActivity:t.onCmCursorActivity,ready:t.onCmReady,focus:t.onCmFocus,input:t.onCmCodeChange}})],1)])],1)},st=[],it=a("8f94"),ot=(a("c4e3"),a("21a6"),a("a7be"),a("eb8f"),a("b866"),a("31c5"),a("9b74"),a("f6b6"),a("3c98"),a("9c7b"),a("715d"),a("b933"),a("23de"),a("02f0"),a("8c33"),a("7289"),a("2aed"),a("d72f"),a("0b6c"),a("9a48"),a("75f8"),a("697e"),a("aedd"),a("164b"),a("4895"),a("cbc8"),a("8d70"),a("9f09"),a("a2c1"),a("56b3"),a("d7d5"),{components:{card:N,codemirror:it["codemirror"]},data(){return{socketonline:!1,extenderror:!1,tryConsole:!1,ssl:{},getinfo:"",token:"",swarmlabname:"",code:"",editchoice:"",optionsedit:[{text:"code",value:"code"},{text:"text",value:"text"}],llodesc:[{llo_url:"",llo_name:"",llo_author:"",llo_intro:""}],llo:[{id:0,rm:!1,data_info:"Asciidoc \n",data_code:"#Your source code",data_service:"",code_datafile:"url",code_name:"",code_exec:"",code_options:"",code_mime:"",code_info:"",code_code:"",code_codeout:"",code_codeoutput:"console",points:"",challenge_question:"",code_challenge_question:"",challenge_answer:"",challenge_answer_hint:"",code_challenge_answer_hint:"",challenge_answer_source:"",challenge_answer_code_out:"",challenge_answer_code:"",code_challenge_answer_code:""}],searchLLO:[],searchLLOactive:!1,ADOC_html_code:"",challenge:[],action:"",tryLLO:[],service:"os2",active:0,activecount:0,remove:"",activeField:"",bootstrap:!1,firstbootstrap:0,htmlasciitmp:"",datafile:"https://git.swarmlab.io:3000/labs/examples-mpi2/raw/branch/master/0_netstat/data",datadir:"0_netstat/data",LearningObject:"",showllo:!0,showlloedit:!0,selected:"sublime",options:[{text:"vim",value:"vim"},{text:"sublime",value:"sublime"}],optionsmime:[{text:"sh",value:"bash"},{text:"javascript",value:"javascript"},{text:"python",value:"python"},{text:"php",value:"php"},{text:"sql",value:"sq;"},{text:"xml",value:"xml"},{text:"c",value:"c"}],pValidate:!1,cmOptions:{tabSize:2,styleActiveLine:!0,lineNumbers:!1,lineSeparator:"\n",line:!0,foldGutter:!0,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],highlightSelectionMatches:{showToken:/\w/,annotateScrollbar:!0},styleSelectedText:!0,mode:"shell",hintOptions:{completeSingle:!1},keyMap:"sublime",matchBrackets:!0,showCursorWhenSelecting:!0,indentUnit:this.ADOC_html_code,lineWrapping:!0,theme:"idea",refresh:!0,readOnly:!0,autofocus:!1,extraKeys:{Ctrl:"autocomplete"}},ADOC_html:[]}},methods:{socketconnect(){this.$root.$emit("SERVER_socket_connect")},clear(){this.tryConsole=!1,this.code=""},async getdata(){var t=this.getinfo;await f.dispatch("pipelineLLO/get_data",{code:t})},async showactive(t){this.topwindow(t)},onCmReady(t){t.on("change",(t,e)=>{}),t.on("keypress",()=>{t.showHint({completeSingle:!1})})},onCmCursorActivity(t,e,a){},onCmFocus(t){},onCmCodeChange(t){this.code=t},handleChange(){},setKeymap(){this.cmOptions.keyMap=this.selected},infoFilter(){var t="
\n The current limit of 125 layers is due to the kernel\'s ARG_MAX, which limits the number of arguments / length of arguments that can be passed when mounting the layers \n \n (this limit can be raised in kernels, but is not something that could be relied on as it would make those images non-interoperable on systems that don\'t have the custom configuration)\n
\n
\n Note that not every step in a Dockerfile creates a new layer, only (RUN) steps that modify the filesystem will introduce a new layer.\n
\n\n
\n
Solution
\n \n
\n Delete all local docker images related to your dockerfile using the following:\n \n \n docker rmi -f $(docker images -a -q)\n
\n\n
\n
Description
\n \n Remove unused image \n - all images not referenced by any container -\n \n
";this.$swal({type:t,html:s+a,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})},setFilter(){this.moreParams={filter:this.searchFor,type:this.selected},s["default"].nextTick(()=>this.$refs.vuetable.refresh())},resetFilter(){this.moreParams={},this.searchFor="",s["default"].nextTick(()=>this.$refs.vuetable.refresh())},onPaginationData(t){this.$refs.pagination.setPaginationData(t),this.$refs.paginationInfo.setPaginationData(t)},onChangePage(t){this.$refs.vuetable.changePage(t)},editRow(t){alert("You clicked edit on"+JSON.stringify(t))},async onAction(t,e,a){this.actionrowindex=a,console.log("index "+this.actionrowindex),"view-item"==t||("run-more"==t?(this.hybridshowdata=e,console.log("hybrid "+JSON.stringify(e))):"delete-item"==t&&this.$swal({type:"info",html:info+winfo,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!0,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Yes, Delete it!"}))},refreshVuetable(){this.$nextTick(()=>{this.vuetablekey+=1})},playbookinfoShow(t){return this.visibility[t]=!0},playbookinfo(t){return this.playbookInfo=t},rowClicked(t,e){return{html:!0,title:()=>"Hello Popover: "+ ++this.counter,content:()=>"The date is: "+new Date+""}},loadsuccess(t){var e=t.data.data;this.fielddata=e;e.length},onLoadError(t){"401"==t.response.status&&(window.location.href="https://api-login.swarmlab.io:8089",s["default"].nextTick(()=>window.location.href="https://api-login.swarmlab.io:8089"))}},actions:{}},Tt=Dt,Ft=(a("4788"),Object(O["a"])(Tt,Pt,Bt,!1,null,null,null)),Et=Ft.exports,Gt={components:{card:N,MyconnectManageServer:Et},data(){return{loading:!1,consoleView:"off",productIndex:1}},mounted(){},beforeDestroy(){},created(){}},Vt=Gt,Jt=Object(O["a"])(Vt,It,Rt,!1,null,null,null),zt=Jt.exports,jt=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[a("div",{staticClass:"row"},[a("div",{staticClass:"col-6 order-first "},[a("br"),a("mydeploy-manage-bootstrap")],1),a("div",{staticClass:"col-6 order-last"},[a("br"),a("mydeploy-manage-view")],1)])])},Mt=[],qt=function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("card",{staticClass:"card-user",staticStyle:{"max-height":"100%"}},[s("div",{staticClass:"author"},[s("img",{staticClass:"avatar border-white",attrs:{src:a("0ed5"),alt:"..."}})]),s("b-container",{staticClass:"bv-example-row",attrs:{fluid:""}},[s("div",{staticClass:"row text-center"},[s("div",{staticClass:"col-12"},[s("b",[t._v("Swarmlab hybrid Deploy")])])]),s("br"),s("b-row",[s("b-col",{attrs:{cols:"8"}},[s("ValidationProvider",{ref:"hybrid_image",attrs:{name:"Image",rules:"required|alpha_num_image"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.image,expression:"deploy.image"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.image,"is-invalid":2==t.isDeployValid.image},attrs:{type:"text",name:"Image","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Image"},domProps:{value:t.deploy.image},on:{keyup:function(e){return t.isValid("image")},input:function(e){e.target.composing||t.$set(t.deploy,"image",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("image")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_stackname",attrs:{name:"StackName",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.stackname,expression:"deploy.stackname"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.stackname,"is-invalid":2==t.isDeployValid.stackname},attrs:{type:"text",name:"StackName","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"StackName"},domProps:{value:t.deploy.stackname},on:{keyup:function(e){return t.isValid("stackname")},input:function(e){e.target.composing||t.$set(t.deploy,"stackname",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("stackname")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"8"}},[s("ValidationProvider",{ref:"hybrid_name",attrs:{name:"Name",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.name,expression:"deploy.name"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.name,"is-invalid":2==t.isDeployValid.name},attrs:{type:"HybridError",name:"Name","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Name"},domProps:{value:t.deploy.name},on:{keyup:function(e){return t.isValid("name")},input:function(e){e.target.composing||t.$set(t.deploy,"name",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("name")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_network",attrs:{name:"Network",rules:"required|alpha_num_name"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.network,expression:"deploy.network"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.network,"is-invalid":2==t.isDeployValid.network},attrs:{type:"text",name:"Network","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Network Name"},domProps:{value:t.deploy.network},on:{keyup:function(e){return t.isValid("network")},input:function(e){e.target.composing||t.$set(t.deploy,"network",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("network")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_cpu",attrs:{name:"Cpu",rules:"required|alpha_num_cpu"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.cpu,expression:"deploy.cpu"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.cpu,"is-invalid":2==t.isDeployValid.cpu},attrs:{type:"text",name:"Cpu","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Limit CPU e.g. 0.50"},domProps:{value:t.deploy.cpu},on:{keyup:function(e){return t.isValid("cpu")},input:function(e){e.target.composing||t.$set(t.deploy,"cpu",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("cpu")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_memory",attrs:{name:"Memory",rules:"required|alpha_num_memory"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.memory,expression:"deploy.memory"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.memory,"is-invalid":2==t.isDeployValid.memory},attrs:{type:"text",name:"Memory","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Limit Memory e.g. 500"},domProps:{value:t.deploy.memory},on:{keyup:function(e){return t.isValid("memory")},input:function(e){e.target.composing||t.$set(t.deploy,"memory",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("memory")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1),s("b-col",{attrs:{cols:"4"}},[s("ValidationProvider",{ref:"hybrid_networkport",attrs:{name:"Networkport",rules:"mybetween:1,65535"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.networkport,expression:"deploy.networkport"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.networkport,"is-invalid":2==t.isDeployValid.networkport},attrs:{type:"text",name:"Networkport","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"Net Port (inside the container)"},domProps:{value:t.deploy.networkport},on:{keyup:function(e){return t.isValid("networkport")},input:function(e){e.target.composing||t.$set(t.deploy,"networkport",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("networkport")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"12"}},[s("ValidationProvider",{ref:"hybrid_url",attrs:{name:"Url",rules:"required|alpha_url"},scopedSlots:t._u([{key:"default",fn:function(e){var a=e.errors;e.ariaMsg,e.ariaInput,e.valid,e.invalid;return[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.url,expression:"deploy.url"}],staticClass:"form-control",class:{"is-valid":1==t.isDeployValid.url,"is-invalid":2==t.isDeployValid.url},attrs:{type:"text",name:"Url","aria-label":"Small","aria-describedby":"inputGroup-sizing-sm",placeholder:"link to README file (see info button for more)"},domProps:{value:t.deploy.url},on:{keyup:function(e){return t.isValid("url")},input:function(e){e.target.composing||t.$set(t.deploy,"url",e.target.value)}}}),s("div",{staticClass:"input-group-append"},[s("button",{staticClass:"ti-info btn btn-outline-secondary",attrs:{round:"",type:"button"},on:{click:function(e){return t.showInfo("url")}}})])]),s("span",{staticClass:"hybrid-field-error"},[t._v(t._s(a[0]))])]}}])})],1)],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("Start date ")])]),s("date-picker",{attrs:{type:"date",autocomplete:"off",format:"YYYY-MM-DD",lang:"en"},model:{value:t.deploy.startdate,callback:function(e){t.$set(t.deploy,"startdate",e)},expression:"deploy.startdate"}})],1)]),s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("Start time")])]),s("date-picker",{attrs:{type:"time",format:"HH:mm","show-hour":"","show-minute":"","time-picker-options":t.timePickerOptions,lang:"en"},model:{value:t.deploy.starttime,callback:function(e){t.$set(t.deploy,"starttime",e)},expression:"deploy.starttime"}})],1)])],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("End date ")])]),s("date-picker",{attrs:{type:"date",autocomplete:"off",format:"YYYY-MM-DD",lang:"en"},model:{value:t.deploy.enddate,callback:function(e){t.$set(t.deploy,"enddate",e)},expression:"deploy.enddate"}})],1)]),s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm mb-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"btn btn-outline-secondary",attrs:{type:"button"}},[t._v("End time")])]),s("date-picker",{attrs:{type:"time",format:"HH:mm","show-hour":"","show-minute":"","time-picker-options":t.timePickerOptions,lang:"en"},model:{value:t.deploy.endtime,callback:function(e){t.$set(t.deploy,"endtime",e)},expression:"deploy.endtime"}})],1)])],1),s("b-row",[s("b-col",{attrs:{cols:"6"}},[s("div",{staticClass:"input-group input-group-sm sm-3"},[s("div",{staticClass:"input-group-prepend"},[s("button",{staticClass:"ti-cloud-up btn btn-outline-success",attrs:{round:"",type:"button",title:"Deploy"},on:{click:function(e){return t.add_deploy()}}},[t._v(" Deploy ")])])])]),s("b-col",{attrs:{cols:"2"}}),s("b-col",{attrs:{cols:"4"}},[s("div",{staticClass:"custom-control custom-switch"},[s("input",{directives:[{name:"model",rawName:"v-model",value:t.deploy.usersjoin,expression:"deploy.usersjoin"}],staticClass:"custom-control-input",attrs:{type:"checkbox",id:"customStack",value:"true","unchecked-value":"false"},domProps:{checked:Array.isArray(t.deploy.usersjoin)?t._i(t.deploy.usersjoin,"true")>-1:t.deploy.usersjoin},on:{change:function(e){var a=t.deploy.usersjoin,s=e.target,i=!!s.checked;if(Array.isArray(a)){var o="true",n=t._i(a,o);s.checked?n<0&&t.$set(t.deploy,"usersjoin",a.concat([o])):n>-1&&t.$set(t.deploy,"usersjoin",a.slice(0,n).concat(a.slice(n+1)))}else t.$set(t.deploy,"usersjoin",i)}}}),s("label",{staticClass:"custom-control-label",attrs:{for:"customStack"}},[t._v("Users can join the lab instance")])])])],1)],1)],1)},Ut=[],Ht=a("ec45");a("411c");Object(R["b"])("alpha_num",P["a"]),Object(R["b"])("mybetween",P["b"]),Object(R["b"])("mybetween",{message:"The {_field_} field must be a number: 1-65535"}),Object(R["b"])("alpha_num_image",t=>{var e=new RegExp(/^[A-Za-z0-9\:\.\-\_\/]+$/,"i");return!!e.test(t)||"The {_field_} field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores"}),Object(R["b"])("alpha_num_name",t=>{var e=new RegExp(/^[A-Za-z0-9]+$/,"i");return!!e.test(t)||"The {_field_} field may contain alphabetic characters and numbers"}),Object(R["b"])("alpha_num_cpu",t=>{var e=new RegExp(/^(?!0\d)\d+(?:\.\d{1})?$/);return!!e.test(t)||"The {_field_} field may contain numbers and dots e.g 0.5"}),Object(R["b"])("alpha_num_memory",t=>{var e=new RegExp(/^[0-9]+$/,"i");return!!e.test(t)||"The {_field_} field may contain numbers e.g 500"}),Object(R["b"])("alpha_url",t=>{var e=new RegExp(/https?:\/\/(git\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/,"i");return!!e.test(t)||"The {_field_} field may contain url"}),Object(R["b"])("required",{...P["c"],message:"This field is required"});var Yt={components:{DatePicker:Ht["a"],ValidationProvider:R["a"],card:N},props:{},data(){return{isHybridError:!1,isHybridSuccess:!1,token:"",timePickerOptions:{start:"00:00",step:"00:30",end:"23:30"},deploy:{usersjoin:!0},isDeployValid:{image:3,name:3,stackname:3,network:3,url:3,cpu:3,memory:3},isDeployError:{}}},mounted(){},created(){var t=window.location.href,e=new URL(t);this.token=e.searchParams.get("token")},beforeDestroy(){},computed:{},methods:{async add_deploy(){var t=Object.entries(this.deploy),e=new Promise((e,a)=>{t.forEach((t,a,s)=>{this.isValid(s[a][0]),a===s.length-1&&e()})});e.then(()=>{(async()=>{var t=!0;for(const[a,s]of Object.entries(this.isDeployValid))1!=s&&(t=!1);if(t){await f.dispatch("pipelineLLO/adddeploy",{token:this.token,deploy:this.deploy});this.$root.$emit("hybrid_refresh_bootstrap_view"),console.log("ok");var e='
The deploy process is started
Please wait for it to finish before trying again!
See also in "Manage your deployments" table';this.$swal({type:"Info",title:"Info!",icon:"info",html:e,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}else{e="Missing required fields";this.$swal({type:"Info",title:"Info!",icon:"info",html:e,showCloseButton:!0,showLoaderOnConfirm:!1,allowOutsideClick:!1,cancelButtonText:"No, cancel!",showCancelButton:!1,showLoaderOnConfirm:!1,reverseButtons:!0,focusCancel:!0,confirmButtonText:"Ok!"})}})()})},async showInfo(t){if("image"==t)var e='
To start, we need to have a docker image \n We have built some. You can find it here: Menu "Images"
\n \n \n The field may contain alphabetic characters, numbers, colons, hyphens, slashes, dots and underscores\n';else if("stackname"==t)e="
To start, we need to have a Stack Name \n This will bring up all the services, volumes, networks and everything else in an isolated environment.\n\n \n \n The field may contain alphabetic characters and numbers\n";else if("network"==t)e="
To start, we need to have a Network \n This will bring up all the services, volumes, networks and everything else in an isolated network environment.\n \n \nServices running inside any of this networks containers have access (not limited by any firewall) to all other services.\n \n
\n \n \n The field may contain alphabetic characters and numbers\n\n";else if("url"==t)e="
Git Repo url
\n The location of the file describing your service. (most comonly README) \n \n\n
\n \n \n The field may contain any valid url BUT it must be under https://git.swarmlab.io\n";else if("networkport"==t)e="
Network Port
\n \n
\nBy default, when you create a container, it does not publish any of its ports to the outside world. \n \nTo make a port available to Services which are not connected to the Stack network, we use this port. \n
\n \n
\n\nTo make a service available we have to know the port number used by these service inside the container.\n\n \nPlease insert that here.\n
\n \n \n(The port for outside connections is automatically generated and you dont have to worry about it!)\n \n \n The field may contain numbers\n";else if("cpu"==t)e="
To start, we need to have a CPU Limit \n Limit the specific CPUs or cores a container can use\n\n \n \nThe field may contain numbers and dots e.g 0.5\n";else if("memory"==t)e="
To start, we need to have a Memory Limit \n
Limit the specific Memoty a container can use \ne.g 200\n \n(MB)\n\n \n \n
\n\nIt is important not to allow a running container to consume too much of the host machine’s memory.\n\n
\n \n \n The field may contain numbers\n";else if("name"==t)e="
To start, we need to have a Name \nThis name is only for your own use. The system completely disregards it!\n