#89 #27, #11, 以及 查看'等待中'训练任务的运行信息弹出'系统错误'bug修复

Merged
liwei03 merged 5 commits from openioctopus/octopus:initInfo into master 2 years ago
  1. +16
    -0
      deploy/charts/octopus/values.yaml
  2. +4
    -3
      openai-portal/src/api/modelDev.js
  3. +93
    -16
      openai-portal/src/views/modelDev/components/notebook/notebookInfo.vue
  4. +7
    -46
      openai-portal/src/views/modelDev/components/notebook/notebookList.vue
  5. +9
    -14
      openai-portal/src/views/trainingManager/components/detailDialog/taskInfo.vue
  6. +1
    -0
      server/admin-server/api/v1/develop.proto
  7. +1
    -0
      server/base-server/api/v1/develop.proto
  8. +1
    -0
      server/openai-server/api/v1/develop.proto

+ 16
- 0
deploy/charts/octopus/values.yaml View File

@@ -331,6 +331,22 @@ nginx-ingress-controller:
- key: beta.kubernetes.io/arch
operator: In
values: ["amd64", "x64", "x86-64", "x86_64"]
defaultBackend:
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: kubernetes.io/arch
operator: In
values: ["amd64", "x64", "x86-64", "x86_64"]
- weight: 100
preference:
matchExpressions:
- key: beta.kubernetes.io/arch
operator: In
values: ["amd64", "x64", "x86-64", "x86_64"]

# influxdb
influxdb:


+ 4
- 3
openai-portal/src/api/modelDev.js View File

@@ -25,10 +25,11 @@ export async function getNotebookList(payload) {
return res
}

export async function getNotebookInfo(id) {
export async function getNotebookInfo(params) {
const res = await request({
url: `/v1/developmanage/notebook/${id}`,
method: 'get'
url: `/v1/developmanage/notebookevent`,
method: 'get',
params
})
return res
}


+ 93
- 16
openai-portal/src/views/modelDev/components/notebook/notebookInfo.vue View File

@@ -2,44 +2,121 @@
<div>
<el-dialog
title="启动信息"
width="55%"
width="80%"
:visible.sync="infoVisible"
:before-close="handleDialogClose"
:close-on-click-modal="false"
>
<div v-html="initInfo"></div>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="confirm">确 定</el-button>
</div>
<div>
<el-input
v-if="showInfo"
v-model="subTaskInfo"
type="textarea"
:readonly="true"
:autosize="true"
/>
</div>

<div class="block">
<el-pagination
v-if="showInfo"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 80]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>

<div slot="footer" class="dialog-footer" />
</el-dialog>
</div>
</template>

<script>
import { getNotebookInfo } from "@/api/modelDev";
export default {
name: "NotebookInfo",
props: {
initInfo: {
type: String,
default: ""
notebookData: {
type: Object,
default: () => {}
}
},
data() {
return {
infoVisible: true
showInfo: false,
infoVisible: true,
subTaskInfo: "",
total: 0,
pageIndex: 1,
pageSize: 10,
taskIndex: 1,
replicaIndex: 1
}
},
created() {
this.getNotebookInfo()
},
methods: {
getNotebookInfo(){
const param = {
id: this.notebookData.notebookJobId,
pageIndex: this.pageIndex,
pageSize: this.pageSize,
taskIndex: this.taskIndex,
replicaIndex: this.replicaIndex
}
getNotebookInfo(param).then(response => {
if (!response.success) {
this.$message({
message: "暂无相关运行信息",
type: 'warning'
});
return
}

this.showInfo = response.payload.notebookEvents.length
this.total = response.payload.totalSize

let infoMessage = ""

response.payload.notebookEvents.forEach(function(element) {
const title = element.reason
const message = element.message
infoMessage += "\n" + "[" + title + "]"
infoMessage += "\n" + "[" + message + "]" + "\n"
})

this.subTaskInfo = infoMessage
}).catch(err => {
console.log("err:", err)
this.$message({
message: "未知错误",
type: 'warning'
});
});
},
handleDialogClose() {
this.$emit('close', false)
},
cancel() {
this.$emit('cancel', false)
handleSizeChange(val) {
this.pageSize = val
this.getNotebookInfo()
},
confirm() {
this.$emit('confirm', false)
handleCurrentChange(val) {
this.pageIndex = val
this.getNotebookInfo()
}
}
},
}
</script>
</script>

<style lang="scss" scoped>
.block {
float: right;
margin: 20px;
}
</style>

+ 7
- 46
openai-portal/src/views/modelDev/components/notebook/notebookList.vue View File

@@ -73,7 +73,7 @@
>
停止
</el-button>
<el-button slot="reference" type="text" @click="getNotebookInfo(scope.row)">
<el-button slot="reference" type="text" @click="showNotebookInfo(scope.row)">
信息
</el-button>
</template>
@@ -93,7 +93,7 @@

<notebookInfo
v-if="notebookInfoVisible"
:init-info="initInfo"
:notebook-data="notebookData"
@confirm="confirm"
@cancel="cancel"
@close="close"
@@ -106,7 +106,7 @@
import notebookCreation from "./notebookCreation.vue"
import notebookInfo from "./notebookInfo.vue"
import searchForm from '@/components/search/index.vue'
import { getNotebookInfo, getNotebookList, stopNotebook, deleteNotebook, startNotebook } from "@/api/modelDev";
import { getNotebookList, stopNotebook, deleteNotebook, startNotebook } from "@/api/modelDev";
import { parseTime } from '@/utils/index'
import { getResourceList } from "@/api/trainingManager"
import { getErrorMsg } from '@/error/index'
@@ -126,7 +126,7 @@
data() {
return {
row: {},
initInfo: "",
notebookData: {},
notebookVisible: false,
notebookInfoVisible: false,
total: undefined,
@@ -277,45 +277,9 @@
});
});
},
getNotebookInfo(row) {
getNotebookInfo(row.id).then(response => {
if (response.success) {
this.notebookInfoVisible = true
const notebookDialogString = response.payload.notebook.initInfo ? response.payload.notebook.initInfo.replace(/\n/g, "<br>") : ''
const notebookDialogData = JSON.parse(notebookDialogString)
for (const pid in notebookDialogData['podEvents']) {
const eventList = notebookDialogData['podEvents'][pid]
const roleName = notebookDialogData['podRoleName'][pid]
if (roleName == "") {
continue
}
let message = ""
for (const key in eventList) {
const event = eventList[key]
if (event['reason'] == "" && event['message'] == "") {
continue
}
message += "[" + event['reason'] + "]" + "<br>"
message += event['message'] + "<br><br>"
}
for (const key in notebookDialogData['extras']) {
const event = notebookDialogData['extras'][key]
if (event['reason'] == "" && event['message'] == "") {
continue
}
message += "[" + event['reason'] + "]" + "<br>"
message += event['message'] + "<br><br>"
}
message += "<br>"
this.initInfo = message
}
} else {
this.$message({
message: this.getErrorMsg(response.error.subcode),
type: 'warning'
})
}
})
showNotebookInfo(row) {
this.notebookInfoVisible = true
this.notebookData = row
},
handleStop(row) {
stopNotebook(row.id).then(response => {
@@ -368,19 +332,16 @@
close(val) {
this.notebookVisible = val;
this.notebookInfoVisible = val;
this.initInfo = ""
this.getNotebookList(this.searchData);
},
cancel(val) {
this.notebookVisible = val;
this.notebookInfoVisible = val;
this.initInfo = ""
this.getNotebookList(this.searchData);
},
confirm(val) {
this.notebookVisible = val
this.notebookInfoVisible = val;
this.initInfo = ""
this.getNotebookList(this.searchData);
}
}


+ 9
- 14
openai-portal/src/views/trainingManager/components/detailDialog/taskInfo.vue View File

@@ -44,14 +44,14 @@

<div class="block">
<el-pagination
v-if="showInfo"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 80]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
v-if="showInfo"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 80]"
:page-size="pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
@@ -59,7 +59,6 @@

<script>
import { getTempalteInfo } from '@/api/trainingManager'
import { getErrorMsg } from '@/error/index'
export default {
name: "TaskInfo",
props: {
@@ -96,10 +95,6 @@
}
},
methods: {
// 错误码
getErrorMsg(code) {
return getErrorMsg(code)
},
selectedSubTaskOption() {
const param = {
id: this.row.id,
@@ -122,7 +117,7 @@
this.subTaskInfo = infoMessage
} else {
this.$message({
message: this.getErrorMsg(response.error.subcode),
message: "暂无相关运行信息",
type: 'warning'
});
}


+ 1
- 0
server/admin-server/api/v1/develop.proto View File

@@ -66,6 +66,7 @@ message Notebook {
string datasetVersion = 20;
string datasetName = 21;
uint32 resourceSpecPrice = 22;
string notebookJobId = 23;
}

message ListNotebookReply {


+ 1
- 0
server/base-server/api/v1/develop.proto View File

@@ -100,6 +100,7 @@ message Notebook {
string datasetVersion = 18;
string datasetName = 19;
uint32 resourceSpecPrice = 20;
string notebookJobId = 21;
}

message ListNotebookReply {


+ 1
- 0
server/openai-server/api/v1/develop.proto View File

@@ -133,6 +133,7 @@ message Notebook {
string datasetVersion = 18;
string datasetName = 19;
uint32 resourceSpecPrice = 20;
string notebookJobId = 21;
}

message ListNotebookReply {


Loading…
Cancel
Save