Browse Source

tj

master
educoder 3 years ago
parent
commit
b7e77d49ed
8 changed files with 112 additions and 3 deletions
  1. +13
    -0
      common/src/main/java/com/imitate/common/k8s/service/RunPodService.java
  2. +1
    -1
      common/src/main/resources/common.properties
  3. +1
    -1
      common/target/classes/common.properties
  4. +0
    -1
      parent/pom.xml
  5. +5
    -0
      web/pom.xml
  6. +2
    -0
      web/src/main/java/com/imitate/web/module/game/controller/GameController.java
  7. +18
    -0
      web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java
  8. +72
    -0
      web/src/test/java/com/imitate/Test1.java

+ 13
- 0
common/src/main/java/com/imitate/common/k8s/service/RunPodService.java View File

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -508,4 +509,16 @@ public class RunPodService {
}
return pod;
}


/**
* 获取实例剩余时间
* @param
* @return 连接剩余时间
*/
public long getRemainingTime(RunPod runPod) {
return runPod.getExpireTime().toInstant(ZoneOffset.of("+8")).toEpochMilli() - System.currentTimeMillis();
}


}

+ 1
- 1
common/src/main/resources/common.properties View File

@@ -7,7 +7,7 @@ mystarter.config.student.gender=man


useMq=true
netNames=eth0
netNames=en0
#web\u56de\u8c03\u5730\u5740
educoderURL=https://www.educoder.net/api/myshixuns/training_task_status.json
simpileEducoderURL=https://www.educoder.net/api/myshixuns/code_runinng_message.json


+ 1
- 1
common/target/classes/common.properties View File

@@ -7,7 +7,7 @@ mystarter.config.student.gender=man


useMq=true
netNames=eth0
netNames=en0
#web\u56de\u8c03\u5730\u5740
educoderURL=https://www.educoder.net/api/myshixuns/training_task_status.json
simpileEducoderURL=https://www.educoder.net/api/myshixuns/code_runinng_message.json


+ 0
- 1
parent/pom.xml View File

@@ -237,7 +237,6 @@
<version>1.1.0</version>
</dependency>


</dependencies>

<build>


+ 5
- 0
web/pom.xml View File

@@ -23,6 +23,11 @@
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>




+ 2
- 0
web/src/main/java/com/imitate/web/module/game/controller/GameController.java View File

@@ -217,4 +217,6 @@ public class GameController extends BasicController {
return buildParams;
}



}

+ 18
- 0
web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java View File

@@ -7,12 +7,15 @@ import com.imitate.common.bean.ApiResult;
import com.imitate.common.constant.ApiResultCsts;
import com.imitate.common.constant.TpCsts;
import com.imitate.common.k8s.mgr.ClusterManager;
import com.imitate.common.k8s.pojo.RunPod;
import com.imitate.common.k8s.service.DiskService;
import com.imitate.common.k8s.service.RunPodService;
import com.imitate.common.k8s.util.ContainerUtil;
import com.imitate.common.sys.settings.AppConfig;
import com.imitate.common.util.Base64Util;
import com.imitate.common.util.R;
import com.imitate.common.util.ThreadUtils;
import com.imitate.common.util.TpUtils;
import com.imitate.web.module.game.service.GameService;
import com.imitate.web.module.game.service.GitService;
import com.imitate.web.module.game.service.VscodeService;
@@ -61,6 +64,11 @@ public class VscodeController {
@Autowired
private DiskService diskService;

@Autowired
private RunPodService runPodService;



@Qualifier("gitTaskExecutor")
@Autowired
private ThreadPoolTaskExecutor gitTaskExecutor;
@@ -128,6 +136,12 @@ public class VscodeController {
} else {
Map<String, Object> respData = new HashMap<>(2);
respData.put("url", targetUrl);

String podName = TpUtils.buildWebPodName(vsCodeParam.getTpiID(), vsCodeParam.getPodType());
RunPod runPod = runPodService.getRunPodByName(podName);
//存活秒数
respData.put("remainingTime",runPodService.getRemainingTime(runPod));

return R.ok(respData);
}
}
@@ -182,4 +196,8 @@ public class VscodeController {
}






}

+ 72
- 0
web/src/test/java/com/imitate/Test1.java View File

@@ -0,0 +1,72 @@
package com.imitate;


import com.imitate.common.bean.ShellResult;
import com.imitate.common.util.ShellUtil;
import com.imitate.web.WebApplication;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.yaml.snakeyaml.Yaml;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


@Slf4j
//@SpringBootTest(classes = {WebApplication.class})
//@RunWith(SpringRunner.class)
public class Test1 {



// 获取pod详情 解析 docker容器id列表
@Test
public void Test22(){
String command = "kubectl describe pod pod1";
//(docker://[A-Za-z0-9]+)
ShellResult result = ShellUtil.executeAndGetExitStatus(command);
//docker容器 允许存在 1个Pod 多个容器情况
List<String> dockerContainerIds = new LinkedList<>();
String reg = "docker://[A-Za-z0-9]+";
Matcher m;
Pattern r;
r = Pattern.compile(reg);
m = r.matcher(result.getOut());
while (m.find()){
dockerContainerIds.add(m.group().replace("docker://",""));
}
log.info("dockerContainerIds:{}",dockerContainerIds);
}


@Test
public void test33(){
String imageName = "ubuntu-vnc";
String tag = "v1.0";
String containerId = "abcdefg";
String author = "yanchao";
String comment = "ubuntu is 11";

//将容器commit成镜像
String command = String.format("docker commit -a='%s' -m='%s' %s %s:%s",author,comment,containerId,imageName,tag);
ShellUtil.executeAndGetExitStatus(command);

//检查镜像是否存在
String checkVersion = String.format("docker images |grep %s",imageName);
ShellResult r1 = ShellUtil.executeAndGetExitStatus(checkVersion);
if(r1.getOut().contains(tag)){
log.info("镜像创建成功!");
}

}



}

Loading…
Cancel
Save