提交 0a6ed1d9 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Print Jenkins version in the center cmd

上级 a995659f
......@@ -18,20 +18,38 @@ var centerCmd = &cobra.Command{
Long: `Manage your update center`,
Run: func(cmd *cobra.Command, args []string) {
jenkins := getCurrentJenkins()
jclient := &client.UpdateCenterManager{}
jclient.URL = jenkins.URL
jclient.UserName = jenkins.UserName
jclient.Token = jenkins.Token
if status, err := jclient.Status(); err == nil {
fmt.Println("RestartRequiredForCompletion:", status.RestartRequiredForCompletion)
if status.Jobs != nil {
for i, job := range status.Jobs {
fmt.Printf("%d, %s, %s\n", i, job.Type, job.ErrorMessage)
}
printJenkinsStatus(jenkins)
printUpdateCenter(jenkins)
},
}
func printUpdateCenter(jenkins *JenkinsServer) {
jclient := &client.UpdateCenterManager{}
jclient.URL = jenkins.URL
jclient.UserName = jenkins.UserName
jclient.Token = jenkins.Token
if status, err := jclient.Status(); err == nil {
fmt.Println("RestartRequiredForCompletion:", status.RestartRequiredForCompletion)
if status.Jobs != nil {
for i, job := range status.Jobs {
fmt.Printf("%d, %s, %s\n", i, job.Type, job.ErrorMessage)
}
} else {
log.Fatal(err)
}
},
} else {
log.Fatal(err)
}
}
func printJenkinsStatus(jenkins *JenkinsServer) {
jclient := &client.JenkinsStatusClient{}
jclient.URL = jenkins.URL
jclient.UserName = jenkins.UserName
jclient.Token = jenkins.Token
if status, err := jclient.Get(); err == nil {
fmt.Println("Jenkins Version:", status.Version)
} else {
log.Fatal(err)
}
}
......@@ -64,3 +64,8 @@ func (b *BatchOption) Confirm(message string) bool {
return true
}
// WatchOption for the resources which can be watched
type WatchOption struct {
Watch bool
}
......@@ -289,6 +289,7 @@ type SearchResultItem struct {
}
type Job struct {
Type string `json:"_class"`
Builds []JobBuild
Color string
ConcurrentBuild bool
......
package client
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
)
type AgentLabel struct {
Name string
}
type View struct {
Name string
URL string
}
type JenkinsStatus struct {
AssignedLabels []AgentLabel
Description string
Jobs []Job
Mode string
NodeDescription string
NodeName string
NumExecutors int
PrimaryView View
QuietingDown bool
SlaveAgentPort int
UseCrumbs bool
UseSecurity bool
Views []View
Version string
}
type JenkinsStatusClient struct {
JenkinsCore
}
func (q *JenkinsStatusClient) Get() (status *JenkinsStatus, err error) {
api := fmt.Sprintf("%s/api/json", q.URL)
var (
req *http.Request
response *http.Response
)
req, err = http.NewRequest("GET", api, nil)
if err == nil {
q.AuthHandle(req)
} else {
return
}
client := q.GetClient()
if response, err = client.Do(req); err == nil {
code := response.StatusCode
var data []byte
data, err = ioutil.ReadAll(response.Body)
if code == 200 {
status = &JenkinsStatus{}
if ver, ok := response.Header["X-Jenkins"]; ok && len(ver) > 0 {
status.Version = ver[0]
}
err = json.Unmarshal(data, status)
} else {
log.Fatal(string(data))
}
} else {
log.Fatal(err)
}
return
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册