Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
power-node
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Odysseus
power-node
Commits
0bbd7d42
Commit
0bbd7d42
authored
Mar 05, 2024
by
duanjinfei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update task api url parse
parent
80538796
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
41 additions
and
22 deletions
+41
-22
task_msg.go
nm/task_msg.go
+41
-22
No files found.
nm/task_msg.go
View file @
0bbd7d42
...
...
@@ -36,6 +36,8 @@ type TaskHandler struct {
IsExecStandardTask
bool
}
var
oldTaskImageName
string
func
NewTaskWorker
(
op
*
operate
.
DockerOp
)
*
TaskHandler
{
return
&
TaskHandler
{
Wg
:
&
sync
.
WaitGroup
{},
...
...
@@ -119,6 +121,16 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
}
else
if
taskMsg
.
TaskKind
==
baseV1
.
TaskKind_StandardTask
{
t
.
IsExecStandardTask
=
true
}
if
oldTaskImageName
!=
""
&&
oldTaskImageName
!=
taskCmd
.
ImageName
{
//todo: 停止标准任务容器
//containers := t.DockerOp.ListContainer()
//for _, container := range containers {
// if container.Image == taskCmd.ImageName && container.State == "running" {
// t.DockerOp.StopContainer(container.ID)
// }
//}
oldTaskImageName
=
taskCmd
.
ImageName
}
images
,
err
:=
t
.
DockerOp
.
PsImages
()
if
err
!=
nil
{
log
.
Error
(
"Ps images failed:"
,
err
)
...
...
@@ -143,26 +155,8 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
log
.
Error
(
"The image is not found:"
,
taskCmd
.
ImageName
)
return
}
containers
:=
t
.
DockerOp
.
ListContainer
()
isImageRunExist
:=
false
for
_
,
container
:=
range
containers
{
if
container
.
ImageID
==
imageId
&&
container
.
State
==
"running"
{
networks
:=
container
.
NetworkSettings
.
Networks
ip
:=
""
for
_
,
endPoint
:=
range
networks
{
ip
=
endPoint
.
IPAddress
log
.
Warn
(
"Container network ip:"
,
ip
)
}
//taskCmd.ApiUrl = fmt.Sprintf(taskCmd.ApiUrl, container.Ports[0].PublicPort)
log
.
Info
(
"Container ports:"
,
container
.
Ports
)
taskCmd
.
ApiUrl
=
fmt
.
Sprintf
(
"http://%s:%d/aigic"
,
ip
,
container
.
Ports
[
0
]
.
PrivatePort
)
//taskCmd.ApiUrl = fmt.Sprintf("http://%s:%d/aigic", "0.0.0.0", container.Ports[0].PublicPort)
log
.
Info
(
"Setting container api url:"
,
taskCmd
.
ApiUrl
)
isImageRunExist
=
true
break
}
}
if
!
isImageRunExist
{
running
,
internalIp
,
internalPort
:=
t
.
foundImageIsRunning
(
imageId
)
if
!
running
{
var
externalPort
int64
for
{
// 设置种子以确保每次运行时生成不同的随机数序列
...
...
@@ -177,7 +171,6 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
}
taskCmd
.
DockerCmd
.
HostIp
=
"0.0.0.0"
taskCmd
.
DockerCmd
.
HostPort
=
strconv
.
FormatInt
(
externalPort
,
10
)
taskCmd
.
ApiUrl
=
fmt
.
Sprintf
(
taskCmd
.
ApiUrl
,
externalPort
)
//if int64(len(containers)) == conf.GetConfig().ContainerNum {
// //todo: 待定,需要根据权重去停止哪个容器
// t.DockerOp.StopAndDeleteContainer(containers[0].ID)
...
...
@@ -188,8 +181,18 @@ func (t *TaskHandler) ComputeTaskHandler(taskMsg *nodeManagerV1.PushTaskMessage)
return
}
log
.
Infof
(
"Started container with ID %s"
,
containerId
)
time
.
Sleep
(
time
.
Second
*
10
)
running
,
internalIp
,
internalPort
=
t
.
foundImageIsRunning
(
imageId
)
if
running
{
taskCmd
.
ApiUrl
=
fmt
.
Sprintf
(
"http://%s:%d%s"
,
internalIp
,
internalPort
,
taskCmd
.
ApiUrl
)
log
.
Info
(
"Container ports:"
,
internalPort
)
log
.
WithField
(
"ApiUrl"
,
taskCmd
.
ApiUrl
)
.
Info
(
"The image is not running"
)
}
}
else
{
taskCmd
.
ApiUrl
=
fmt
.
Sprintf
(
"http://%s:%d%s"
,
internalIp
,
internalPort
,
taskCmd
.
ApiUrl
)
log
.
Info
(
"Container ports:"
,
internalPort
)
log
.
WithField
(
"ApiUrl"
,
taskCmd
.
ApiUrl
)
.
Info
(
"The image is running"
)
}
startBeforeTaskTime
:=
time
.
Now
()
reqContainerBody
:=
bytes
.
NewReader
(
taskMsg
.
TaskParam
)
post
,
err
:=
t
.
HttpClient
.
Post
(
taskCmd
.
ApiUrl
,
"application/json"
,
reqContainerBody
)
...
...
@@ -244,3 +247,19 @@ func (t *TaskHandler) GetMinerSign(msg *nodeManagerV1.PushTaskMessage, taskResul
log
.
Info
(
"Miner sign:"
,
common
.
Bytes2Hex
(
sign
))
return
reqHash
.
Bytes
(),
respHash
.
Bytes
(),
sign
}
func
(
t
*
TaskHandler
)
foundImageIsRunning
(
imageId
string
)
(
bool
,
string
,
uint16
)
{
containers
:=
t
.
DockerOp
.
ListContainer
()
for
_
,
container
:=
range
containers
{
if
container
.
ImageID
==
imageId
&&
container
.
State
==
"running"
{
networks
:=
container
.
NetworkSettings
.
Networks
ip
:=
""
for
_
,
endPoint
:=
range
networks
{
ip
=
endPoint
.
IPAddress
log
.
Warn
(
"Container network ip:"
,
ip
)
}
return
true
,
ip
,
container
.
Ports
[
0
]
.
PrivatePort
}
}
return
false
,
""
,
0
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment