|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- export default async function initCloudrain() {
- let timeid = window.setInterval(loadJobStatus, 15000);
- $(document).ready(loadJobStatus);
- function loadJobStatus() {
- $(".job-status").each((index, job) => {
- const ID = job.dataset.jobid;
- const repoPath = job.dataset.repopath;
- // const computeResource = job.dataset.resource
- const versionname = job.dataset.version
- const status_text = $(`#${ID}-text`).text()
- const finalState = ['STOPPED','CREATE_FAILED','UNAVAILABLE','DELETED','RESIZE_FAILED','SUCCEEDED','IMAGE_FAILED','SUBMIT_FAILED','DELETE_FAILED','KILLED','COMPLETED','FAILED','CANCELED','LOST','START_FAILED','SUBMIT_MODEL_FAILED','DEPLOY_SERVICE_FAILED','CHECK_FAILED']
- if (finalState.includes(status_text)) {
- return
- }
- // const diffResource = computeResource == "NPU" ? 'modelarts/notebook' : 'cloudbrain'
- $.get(`/api/v1/repos/${repoPath}/${ID}?version_name=${versionname}`, (data) => {
- const ID = data.ID || data.JobID
- const status = data.JobStatus
- const duration = data.JobDuration
- $('#duration-'+ID).text(duration)
- if (status != status_text) {
- $('#' + ID+'-icon').removeClass().addClass(status)
- $('#' + ID+ '-text').text(status)
- finalState.includes(status) && $('#' + ID + '-stop').removeClass('blue').addClass('disabled')
- }
- if(status==="RUNNING"){
- $('#ai-debug-'+ID).removeClass('disabled').addClass('blue').text('调试').css("margin","0 1rem")
- $('#model-image-'+ID).removeClass('disabled').addClass('blue')
- }
- if(status!=="RUNNING"){
- // $('#model-debug-'+ID).removeClass('blue')
- // $('#model-debug-'+ID).addClass('disabled')
- $('#model-image-'+ID).removeClass('blue').addClass('disabled')
- }
- if(["CREATING","STOPPING","WAITING","STARTING"].includes(status)){
- $('#ai-debug-'+ID).removeClass('blue').addClass('disabled')
- }
- if(['STOPPED','FAILED','START_FAILED','CREATE_FAILED','SUCCEEDED'].includes(status)){
- $('#ai-debug-'+ID).removeClass('disabled').addClass('blue').text('再次调试').css("margin","0")
- }
- if(["RUNNING","WAITING"].includes(status)){
- $('#ai-stop-'+ID).removeClass('disabled').addClass('blue')
- }
- if(["CREATING","STOPPING","STARTING","STOPPED","FAILED","START_FAILED","SUCCEEDED","COMPLETED"].includes(status)){
- $('#ai-stop-'+ID).removeClass('blue').addClass('disabled')
- }
-
- if(["STOPPED","FAILED","START_FAILED","KILLED","COMPLETED","SUCCEEDED"].includes(status)){
- $('#ai-delete-'+ID).removeClass('disabled').addClass('blue')
- }else{
- $('#ai-delete-'+ID).removeClass('blue').addClass('disabled')
- }
- }).fail(function(err) {
- console.log(err);
- });
- });
- };
- function assertDelete(obj,versionName,repoPath) {
- if (obj.style.color == "rgb(204, 204, 204)") {
- return
- } else {
- const delId = obj.parentNode.id
- let flag = 1;
- $('.ui.basic.modal')
- .modal({
- onDeny: function() {
- flag = false
- },
- onApprove: function() {
- if(!versionName){
- document.getElementById(delId).submit()
- }
- else{
- deleteVersion(versionName,repoPath)
- }
- flag = true
- },
- onHidden: function() {
- if (flag == false) {
- $('.alert').html('您已取消操作').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut();
- }
- }
- })
- .modal('show')
- }
- }
- function deleteVersion(versionName,repoPath){
- const url = `/api/v1/repos/${repoPath}`
- $.post(url,{version_name:versionName},(data)=>{
- if(data.StatusOK===0){
- location.reload()
- }
- }).fail(function(err) {
- console.log(err);
- });
- }
- $('.ui.basic.ai_delete').click(function() {
- const repoPath = this.dataset.repopath
- const versionName = this.dataset.version
- if(repoPath && versionName){
- assertDelete(this,versionName,repoPath)
- }
- else{
- assertDelete(this)
- }
- })
- function stopDebug(ID,stopUrl){
- $.ajax({
- type:"POST",
- url:stopUrl,
- data:$('#stopForm-'+ID).serialize(),
- success:function(res){
- if(res.result_code==="0"){
- $('#' + ID+'-icon').removeClass().addClass(res.status)
- $('#' + ID+ '-text').text(res.status)
- if(res.status==="STOPPED"){
- $('#ai-debug-'+ID).removeClass('disabled').addClass('blue').text("再次调试").css("margin","0")
- $('#ai-image-'+ID).removeClass('blue').addClass('disabled')
- $('#ai-model-debug-'+ID).removeClass('blue').addClass('disabled')
- $('#ai-delete-'+ID).removeClass('disabled').addClass('blue')
- $('#ai-stop-'+ID).removeClass('blue').addClass('disabled')
- }
- else{
- $('#ai-debug-'+ID).removeClass('blue').addClass('disabled')
- $('#ai-stop-'+ID).removeClass('blue').addClass('disabled')
- }
-
- }else{
- $('.alert').html(res.error_msg).removeClass('alert-success').addClass('alert-danger').show().delay(2000).fadeOut();
- }
- },
- error :function(res){
- console.log(res)
-
- }
- })
- }
- $('.ui.basic.ai_stop').click(function() {
- const ID = this.dataset.jobid
- const repoPath = this.dataset.repopath
- stopDebug(ID,repoPath)
- })
-
- function stopVersion(version_name,ID,repoPath){
- const url = `/api/v1/repos/${repoPath}/${ID}/stop_version`
- $.post(url,{version_name:version_name},(data)=>{
- if(data.StatusOK===0){
- $('#ai-stop-'+ID).removeClass('blue')
- $('#ai-stop-'+ID).addClass('disabled')
- refreshStatus(version_name,ID,repoPath)
- }
- }).fail(function(err) {
- console.log(err);
- });
- }
- function refreshStatus(version_name,ID,repoPath){
-
- const url = `/api/v1/repos/${repoPath}/${ID}/?version_name${version_name}`
- $.get(url,(data)=>{
- $(`#${ID}-icon`).attr("class",data.JobStatus)
- // detail status and duration
- $(`#${ID}-text`).text(data.JobStatus)
- }).fail(function(err) {
- console.log(err);
- });
- }
- $('.ui.basic.ai_stop_version').click(function() {
- const ID = this.dataset.jobid
- const repoPath = this.dataset.repopath
- const versionName = this.dataset.version
- stopVersion(versionName,ID,repoPath)
- })
- function getModelInfo(repoPath,modelName,versionName,jobName){
- console.log("getModelInfo")
- $.get(`${repoPath}/modelmanage/show_model_info_api?name=${modelName}`,(data)=>{
- if(data.length===0){
- $(`#${jobName}`).popup('toggle')
- }else{
- let versionData = data.filter((item)=>{
- return item.Version === versionName
- })
- if(versionData.length==0){
- $(`#${jobName}`).popup('toggle')
- }
- else{
- location.href = `${repoPath}/modelmanage/show_model_info?name=${modelName}`
- }
- }
- })
- }
- $('.goto_modelmanage').click(function() {
- const repoPath = this.dataset.repopath
- const modelName = this.dataset.modelname
- const versionName = this.dataset.version
- const jobName = this.dataset.jobname
- getModelInfo(repoPath,modelName,versionName,jobName)
- })
- function debugAgain(ID,debugUrl,redirect_to){
- if($('#' + ID+ '-text').text()==="RUNNING"){
- window.open(debugUrl+'debug')
- }else{
- $.ajax({
- type:"POST",
- url:debugUrl+'restart?redirect_to='+redirect_to,
- data:$('#debugAgainForm-'+ID).serialize(),
- success:function(res){
- if(res['WechatRedirectUrl']){
- window.location.href=res['WechatRedirectUrl']
- }
- else if(res.result_code==="0"){
- if(res.id!==ID){
- location.reload()
- }else{
- $('#' + ID+'-icon').removeClass().addClass(res.status)
- $('#' + ID+ '-text').text(res.status)
- $('#ai-debug-'+ID).removeClass('blue').addClass('disabled')
- $('#ai-delete-'+ID).removeClass('blue').addClass('disabled')
- $('#ai-debug-'+ID).text("调试").css("margin","0 1rem")
- }
- }else{
- $('.alert').html(res.error_msg).removeClass('alert-success').addClass('alert-danger').show().delay(2000).fadeOut();
- }
- },
- error :function(res){
- console.log(res)
- }
- })
- }
- }
- $('.ui.basic.ai_debug').click(function() {
- const ID = this.dataset.jobid
- const repoPath = this.dataset.repopath
- const redirect_to = this.dataset.linkpath
- debugAgain(ID,repoPath,redirect_to)
- })
- }
-
-
|