Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
chain33_sdk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
harrylee2015
chain33_sdk
Commits
87e820f9
Commit
87e820f9
authored
May 07, 2018
by
lihailei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add response status_code.
parent
3aba6405
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
117 additions
and
31 deletions
+117
-31
common.go
src/common/common.go
+26
-0
const.go
src/common/const.go
+19
-0
remote_function.go
src/common/remote_function.go
+16
-3
response.go
src/common/response.go
+27
-0
server.go
src/controllers/server.go
+18
-10
task.go
src/controllers/task.go
+1
-1
healthcheck.go
src/healthcheck/healthcheck.go
+4
-4
const.go
src/models/const.go
+0
-7
task.go
src/models/task.go
+6
-6
No files found.
src/common/common.go
View file @
87e820f9
...
...
@@ -76,3 +76,29 @@ func (c *RpcCtx) ReplyData() ([]byte, error) {
}
return
data
,
nil
}
func
(
c
*
RpcCtx
)
ReplyInterface
()
(
interface
{},
error
)
{
rpc
,
err
:=
jsonrpc
.
NewJSONClient
(
c
.
Addr
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"NewJsonClient have err:%v"
,
err
.
Error
()))
return
nil
,
err
}
err
=
rpc
.
Call
(
c
.
Method
,
c
.
Params
,
c
.
Res
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"rpc.Call have err:%v"
,
err
.
Error
()))
return
nil
,
err
}
// maybe format rpc result
var
result
interface
{}
if
c
.
cb
!=
nil
{
result
,
err
=
c
.
cb
(
c
.
Res
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"rpc.CallBack have err:%v"
,
err
.
Error
()))
return
nil
,
err
}
}
else
{
result
=
c
.
Res
}
return
result
,
nil
}
src/common/const.go
View file @
87e820f9
package
common
const
(
Code_10000
=
"10000"
Code_10001
=
"10001"
Code_10002
=
"10002"
//code_10003="10003"
)
const
(
MsgOk
=
"MsgOK"
MsgErrorResponseTimeOut
=
"Response timeout"
MsgErrorRequestParam
=
"Request Parameter error"
MsgErrorReplyData
=
"ReplyData error"
)
var
MessageType
=
map
[
string
]
string
{
Code_10000
:
"MsgOK"
,
Code_10001
:
"MsgError:Parameter error"
,
Code_10002
:
"MsgError:Response timeout"
,
}
src/common/remote_function.go
View file @
87e820f9
...
...
@@ -6,6 +6,7 @@ import (
"net"
"os"
"path"
"sync/atomic"
"time"
"github.com/pkg/sftp"
...
...
@@ -276,8 +277,10 @@ func StartAll(servers ServerList) {
RemoteExec
(
cmdInfo
)
}
}
func
StopAll
(
servers
ServerList
)
{
//执行速度快,不需要多起多协程工作
func
StopAll
(
servers
ServerList
)
int64
{
var
errNum
int64
//多协程停止部署
reqC
:=
make
(
chan
struct
{},
len
(
servers
.
ServerList
))
for
_
,
s
:=
range
servers
.
ServerList
{
cmdInfo
:=
&
CmdInfo
{
hostIp
:
s
.
HostIp
,
...
...
@@ -287,8 +290,18 @@ func StopAll(servers ServerList) {
cmd
:
fmt
.
Sprintf
(
"ps -ef | grep chain33 | grep -v grep| awk '{print $2}' | xargs kill -9"
),
remoteDir
:
s
.
RemoteDir
,
}
RemoteExec
(
cmdInfo
)
go
func
()
{
err
:=
RemoteExec
(
cmdInfo
)
if
err
!=
nil
{
atomic
.
AddInt64
(
&
errNum
,
1
)
}
reqC
<-
struct
{}{}
}()
}
for
i
:=
0
;
i
<
len
(
servers
.
ServerList
);
i
++
{
<-
reqC
}
return
errNum
}
func
ClearAll
(
servers
ServerList
)
{
for
_
,
s
:=
range
servers
.
ServerList
{
...
...
src/common/response.go
0 → 100644
View file @
87e820f9
package
common
import
(
"encoding/json"
"fmt"
)
type
Response
struct
{
Status_code
string
`json:"status_code"`
Message
interface
{}
`json:"message"`
Result
interface
{}
`json:"result"`
}
func
MarshaResponse
(
code
string
,
message
interface
{},
Result
interface
{})
([]
byte
,
error
)
{
var
res
Response
if
m
,
ok
:=
message
.
(
string
);
ok
{
res
.
Message
=
m
}
res
.
Status_code
=
code
res
.
Result
=
Result
data
,
err
:=
json
.
MarshalIndent
(
res
,
""
,
" "
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"MarshalIndent have err:%v"
,
err
.
Error
()))
return
nil
,
err
}
return
data
,
nil
}
src/controllers/server.go
View file @
87e820f9
...
...
@@ -6,8 +6,8 @@ import (
//"gitlab.33.cn/chain33/chain33/types"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/common"
"gitlab.33.cn/lihailei/chain33_sdk/src/common/crypto"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/models"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/healthcheck"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/models"
"encoding/json"
"fmt"
...
...
@@ -45,7 +45,8 @@ func (c *ServerController) DeployChain() {
err
:=
json
.
Unmarshal
(
c
.
Ctx
.
Input
.
RequestBody
,
&
serverList
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"unmarshal have err:%s"
,
err
.
Error
()))
c
.
Ctx
.
ResponseWriter
.
WriteHeader
(
400
)
data
,
_
:=
MarshaResponse
(
Code_10001
,
MsgErrorRequestParam
,
""
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
return
}
else
{
//TODO:这里应该做异步响应,返回一个taskId
...
...
@@ -63,9 +64,12 @@ func (c *ServerController) DeployChain() {
return
}
go
StartAll
(
serverList
)
go
ChainCheck
(
serverList
,
task
)
c
.
Data
[
"json"
]
=
task
c
.
ServeJSON
()
go
ChainCheck
(
serverList
,
task
)
data
,
_
:=
MarshaResponse
(
Code_10000
,
"The deployment task has started."
,
task
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
//c.Data["json"] = task
//c.ServeJSON()
}
}
...
...
@@ -87,11 +91,13 @@ func (c *ServerController) StopChain() {
err
:=
json
.
Unmarshal
(
c
.
Ctx
.
Input
.
RequestBody
,
&
serverList
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"unmarshal have err:%s"
,
err
.
Error
()))
c
.
Ctx
.
ResponseWriter
.
WriteHeader
(
400
)
data
,
_
:=
MarshaResponse
(
Code_10001
,
err
.
Error
(),
""
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
return
}
else
{
go
StopAll
(
serverList
)
c
.
Ctx
.
ResponseWriter
.
WriteHeader
(
200
)
errNum
:=
StopAll
(
serverList
)
data
,
_
:=
MarshaResponse
(
Code_10000
,
fmt
.
Sprintf
(
"%d machines stopped failing."
,
errNum
),
""
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
}
}
...
...
@@ -113,10 +119,12 @@ func (c *ServerController) ClearChain() {
err
:=
json
.
Unmarshal
(
c
.
Ctx
.
Input
.
RequestBody
,
&
serverList
)
if
err
!=
nil
{
clog
.
Error
(
fmt
.
Sprintf
(
"unmarshal have err:%s"
,
err
.
Error
()))
c
.
Ctx
.
ResponseWriter
.
WriteHeader
(
400
)
data
,
_
:=
MarshaResponse
(
Code_10001
,
err
.
Error
(),
""
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
return
}
else
{
go
ClearAll
(
serverList
)
c
.
Ctx
.
ResponseWriter
.
WriteHeader
(
200
)
data
,
_
:=
MarshaResponse
(
Code_10000
,
"Chain33 related files have been cleared."
,
""
)
c
.
Ctx
.
ResponseWriter
.
Write
(
data
)
}
}
src/controllers/task.go
View file @
87e820f9
...
...
@@ -31,7 +31,7 @@ func (c *TaskController) GetTaskStatus() {
data
,
err
:=
GetData
(
taskId
)
if
err
!=
nil
{
clog
.
Error
(
"getData err:"
,
err
.
Error
())
clog
.
Error
(
"getData err:"
,
err
.
Error
())
c
.
Data
[
"json"
]
=
err
.
Error
()
c
.
ServeJSON
()
}
else
{
...
...
src/healthcheck/healthcheck.go
View file @
87e820f9
package
healthcheck
import
(
"fmt"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/common"
.
"gitlab.33.cn/lihailei/chain33_sdk/src/models"
"sync/atomic"
"time"
"fmt"
)
func
ChainCheck
(
serverList
ServerList
,
task
*
Task
)
{
...
...
@@ -23,7 +23,7 @@ func ChainCheck(serverList ServerList, task *Task) {
server
.
Port
,
}
ok
,
err
:=
RemoteViewProcIsExist
(
"chain33"
,
*
sshInfo
)
fmt
.
Println
(
"value========:"
,
ok
)
fmt
.
Println
(
"value========:"
,
ok
)
if
ok
&&
err
==
nil
{
atomic
.
AddInt64
(
&
count
,
1
)
}
...
...
@@ -38,13 +38,13 @@ func ChainCheck(serverList ServerList, task *Task) {
//fmt.Println("len():",len(serverList.ServerList))
if
count
==
int64
(
len
(
serverList
.
ServerList
))
{
task
.
TaskStatus
=
TASK_SUCESS
fmt
.
Println
(
"task:"
,
task
)
fmt
.
Println
(
"task:"
,
task
)
err
:=
PutData
(
task
)
if
err
==
nil
{
fmt
.
Println
(
"putData sucess!"
)
break
}
fmt
.
Println
(
"err==========:"
,
err
.
Error
())
fmt
.
Println
(
"err==========:"
,
err
.
Error
())
}
if
i
==
19
{
task
.
TaskStatus
=
TASK_FAIL
...
...
src/models/const.go
deleted
100644 → 0
View file @
3aba6405
package
models
type
Response
struct
{
Status_code
string
`json:"statu_code"`
Message
interface
{}
`json:"message"`
Result
interface
{}
`json:"result"`
}
src/models/task.go
View file @
87e820f9
...
...
@@ -13,8 +13,8 @@ import (
var
(
dialTimeout
=
5
*
time
.
Second
requestTimeout
=
10
*
time
.
Second
endpoints
=
[]
string
{
"10.39.0.6:2379"
,
}
EtcdURL
=
"http://localhost:2379"
endpoints
=
[]
string
{
"10.39.0.6:2379"
}
EtcdURL
=
"http://localhost:2379"
)
func
GetEtcdURL
()
string
{
...
...
@@ -52,8 +52,8 @@ func MarshalToString(data interface{}) (string, error) {
func
PutData
(
data
interface
{})
error
{
cli
,
err
:=
clientv3
.
New
(
clientv3
.
Config
{
Endpoints
:
[]
string
{
"localhost:2379"
},
DialTimeout
:
dialTimeout
,
Endpoints
:
[]
string
{
"localhost:2379"
},
DialTimeout
:
dialTimeout
,
})
if
err
!=
nil
{
return
err
...
...
@@ -75,8 +75,8 @@ func PutData(data interface{}) error {
func
GetData
(
key
string
)
([]
byte
,
error
)
{
cli
,
err
:=
clientv3
.
New
(
clientv3
.
Config
{
Endpoints
:
[]
string
{
"localhost:2379"
},
DialTimeout
:
dialTimeout
,
Endpoints
:
[]
string
{
"localhost:2379"
},
DialTimeout
:
dialTimeout
,
})
if
err
!=
nil
{
return
nil
,
err
...
...
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