From 62f69be50f0b96622789c102498cd1cf6b1fc488 Mon Sep 17 00:00:00 2001
From: 30404 <3040471803@qq.com>
Date: Wed, 10 Jul 2024 20:05:41 +0800
Subject: [PATCH] 12
---
.../pages/ListPages/Training/Operation1.jsx | 24 ++++-
.../pages/ListPages/Training/Operation2.jsx | 5 +-
python/app.py | 2 -
python/k8s_func.py | 94 +++++++++++++++++++
python/student_func.py | 7 +-
python/test.py | 10 +-
6 files changed, 135 insertions(+), 7 deletions(-)
create mode 100644 python/k8s_func.py
diff --git a/app-dm/src/pages/ListPages/Training/Operation1.jsx b/app-dm/src/pages/ListPages/Training/Operation1.jsx
index f54716b..9109436 100644
--- a/app-dm/src/pages/ListPages/Training/Operation1.jsx
+++ b/app-dm/src/pages/ListPages/Training/Operation1.jsx
@@ -146,6 +146,7 @@ function Operation1() {
localStorage.setItem('answeredJudge',answeredJudge)
localStorage.setItem('TrainData',JSON.stringify(TrainData))
localStorage.setItem('score',score)
+ localStorage.setItem('succeed',succeed)
};
@@ -183,26 +184,43 @@ function Operation1() {
//不包含实训分数
const [score,setscore]=useState(0)
+ const [succeed,setsucceed]=useState([])
//提交按钮,或者下一页
const submit=()=>{
let CHO_sum=0;
let COM_sum=0;
let JUD_sum=0;
+
for(let item of TrainData['operateID'][0]){
if(item[0][6]===choice_answer[CHO_sum]){
setscore(prevscore=>prevscore+5)
+ }else{
+ const itemText = item[0][9];
+ if (!succeed.includes(itemText)) {
+ setsucceed((prevSucceed) => [...prevSucceed, itemText]);
+ }
}
CHO_sum++
}
for(let item of TrainData['operateID'][1]){
if (item[0][2]===completion_answer[COM_sum]) {
setscore(prevscore=>prevscore+5)
+ }else{
+ const itemText = item[0][5];
+ if (!succeed.includes(itemText)) {
+ setsucceed((prevSucceed) => [...prevSucceed, itemText]);
+ }
}
COM_sum++
}
for(let item of TrainData['operateID'][2]){
if (item[0][2]===judge_answer[JUD_sum]) {
setscore(prevscore=>prevscore+5)
+ }else{
+ const itemText = item[0][5];
+ if (!succeed.includes(itemText)) {
+ setsucceed((prevSucceed) => [...prevSucceed, itemText]);
+ }
}
JUD_sum++
}
@@ -351,10 +369,14 @@ function Operation1() {
)}
-
+
+
diff --git a/app-dm/src/pages/ListPages/Training/Operation2.jsx b/app-dm/src/pages/ListPages/Training/Operation2.jsx
index 9f4eb17..6277032 100644
--- a/app-dm/src/pages/ListPages/Training/Operation2.jsx
+++ b/app-dm/src/pages/ListPages/Training/Operation2.jsx
@@ -16,7 +16,7 @@ function Operation2() {
const { operateID } = useParams();
const [isTrue,setisTrue]=useState(false)
const [TrainScore,serTrainScore]=(null)
-
+ const succeed=localStorage.getItem('succeed')
const TrainData=JSON.parse(localStorage.getItem('TrainData'))
//获取链接
@@ -98,7 +98,8 @@ function Operation2() {
score,
TrainScore,
operateID,
- student_ID
+ student_ID,
+ succeed
})
}catch{
alert('submitTrainSrc出错')
diff --git a/python/app.py b/python/app.py
index 0f93cdc..8696c0e 100644
--- a/python/app.py
+++ b/python/app.py
@@ -346,8 +346,6 @@ def getTrainData():
return jsonify({'data': data})
-
-
# @app.route("/api/teacher/list_pods",methods=['POST']) # 列出pod
# def teacher_list_pods():
# return list_pods()
diff --git a/python/k8s_func.py b/python/k8s_func.py
new file mode 100644
index 0000000..c9f76e7
--- /dev/null
+++ b/python/k8s_func.py
@@ -0,0 +1,94 @@
+import json
+import traceback
+
+import yaml
+from kubernetes import client, config
+from flask import jsonify
+import dmPython
+
+# Load in-cluster config
+
+config.load_incluster_config()
+v1 = client.CoreV1Api()
+namespace = open("/var/run/secrets/kubernetes.io/serviceaccount/namespace").read()
+IP = "36.138.114.105"
+
+
+def list_pods():
+ ret = v1.list_namespaced_pod(namespace, watch=False)
+ return ({
+ "list": [{
+ "name": item.metadata.name,
+ "ip": item.status.pod_ip
+ } for item in ret.items]
+ })
+
+
+def list_services():
+ ret = v1.list_namespaced_service(namespace)
+ return {
+ "list": [{
+ "ip": item.spec.cluster_ip,
+ "name": item.metadata.name,
+ "ports": [port.to_dict() for port in item.spec.ports]
+ } for item in ret.items]
+ }
+
+
+def create_pod(type, name):
+ # 读取 pod yaml 文件
+ with open(f"assets/type{type}-pod.yaml") as f:
+ pod_manifest = yaml.safe_load(f)
+ pod_manifest["metadata"]["name"] = name
+ pod_manifest["metadata"]["labels"]["app"] = name
+ # 创建 Pod
+ resp = v1.create_namespaced_pod(
+ body=pod_manifest,
+ namespace=namespace
+ )
+ # print(f"pod '{resp.metadata.name}' 创建成功")
+ # 创建 Service
+ with open(f"assets/type{type}-service.yaml") as f:
+ service_pod = yaml.safe_load(f)
+ service_pod["metadata"]["name"] = name + "-service"
+ service_pod["spec"]["selector"]["app"] = name
+
+ resp = v1.create_namespaced_service(
+ body=service_pod,
+ namespace=namespace
+ )
+ # print(f"服务 '{resp.metadata.name}' 创建成功")
+ if type == 1:
+ # 创建成功,再次查询,拿到端口
+ service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
+ # print(service)
+ # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port))
+ else:
+ service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
+ # print(service)
+ # print("访问地址:" + IP + ":" + str(service.spec.ports[0].node_port))
+ return "cjcg"
+
+
+# create_pod(0,'20240101-zt-9-0')
+
+def delete_pod(name):
+ v1.delete_namespaced_pod(name=name, namespace=namespace)
+ print('deleting pod ' + name)
+ v1.delete_namespaced_service(name=name + "-service", namespace=namespace)
+ return "删除成功"
+
+
+def check_dm(name):
+ try:
+ service = v1.read_namespaced_service(name=name + "-service", namespace=namespace)
+ print(service.spec.cluster_ip)
+ db = dmPython.connect(user='SYSDBA', password='SYSDBA', host=service.spec.cluster_ip)
+ cursor = db.cursor()
+ records = cursor.execute("SELECT * FROM V$VERSION").fetchall()
+ for record in records:
+ print(record)
+ return "OK"
+ except:
+ traceback.print_exc()
+ return "NO"
diff --git a/python/student_func.py b/python/student_func.py
index 668c835..6426e2f 100644
--- a/python/student_func.py
+++ b/python/student_func.py
@@ -342,7 +342,12 @@ def FindTrain1SrcFunc(ID,testID):
# FindTrain1SrcFunc('20240101','54')
-def AddTrainScoreFunc(ID,testID,score,trainResult):
+def AddTrainScoreFunc(ID,testID,score,trainResult,succeed):
+ a=[]
+ for i in succeed:
+ a.append(succeed[i])
+ a=set(a)
+ print(a)
cursor=db.cursor()
cursor.execute("UPDATE TRAINSCORE SET TF='true', RESULT=(?), TRAINRESULT=(?) WHERE STUDENT_ID=(?) AND TEST_ID=(?)",(score,trainResult,ID,testID))
db.commit()
diff --git a/python/test.py b/python/test.py
index 5f8bcf9..7e589c5 100644
--- a/python/test.py
+++ b/python/test.py
@@ -1,4 +1,12 @@
-print('a')
+a=[]
+succeed={0:'计算机基础', 1:'计算机概念', 2:'通信技术', 3:'计算机网络'}
+for i in succeed:
+ a.append(succeed[i])
+
+result_string = ','.join(set(a))
+
+print(result_string+'需要加强')
+