2024-03-01 17:34:57 +08:00
|
|
|
package cmd
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
2024-03-01 23:44:25 +08:00
|
|
|
"path/filepath"
|
2024-03-01 18:05:16 +08:00
|
|
|
"time"
|
2024-03-01 17:34:57 +08:00
|
|
|
|
|
|
|
"git.apinb.com/bsm-sdk/engine/env"
|
|
|
|
"git.apinb.com/bsm-sdk/engine/utils"
|
2024-03-02 00:17:29 +08:00
|
|
|
"git.apinb.com/bsm-sdk/engine/vars"
|
2024-03-01 17:34:57 +08:00
|
|
|
"github.com/modood/table"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
)
|
|
|
|
|
2024-03-02 15:53:58 +08:00
|
|
|
type Releases struct {
|
|
|
|
Msg string `json:"msg"`
|
|
|
|
Code int `json:"code"`
|
|
|
|
Data []Service `json:"data"`
|
2024-03-01 18:05:16 +08:00
|
|
|
}
|
|
|
|
|
2024-03-02 15:53:58 +08:00
|
|
|
type Service struct {
|
2024-03-01 18:05:16 +08:00
|
|
|
ID uint `gorm:"primarykey"`
|
|
|
|
CreatedAt time.Time
|
|
|
|
UpdatedAt time.Time
|
2024-03-01 17:34:57 +08:00
|
|
|
Identity string
|
|
|
|
Origin string
|
|
|
|
ServiceKey string
|
|
|
|
Version string
|
|
|
|
FullName string
|
|
|
|
OssUrl string
|
|
|
|
EtcPath string
|
|
|
|
FilePath string
|
|
|
|
ImagePath string
|
|
|
|
}
|
|
|
|
|
|
|
|
type PsTable struct {
|
2024-03-02 00:05:57 +08:00
|
|
|
ServiceKey string `table:"Service Key"`
|
2024-03-01 17:34:57 +08:00
|
|
|
Origin string
|
|
|
|
Status string
|
2024-03-02 00:14:14 +08:00
|
|
|
PID string
|
2024-03-01 17:34:57 +08:00
|
|
|
Performance string
|
2024-03-02 00:24:38 +08:00
|
|
|
CurrentVersion string `table:"Local Version"`
|
|
|
|
RegisterVersion string `table:"Registry Version"`
|
2024-03-02 00:17:29 +08:00
|
|
|
UpdatedAt string `table:"Updated At"`
|
2024-03-01 17:34:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
var psCmd = &cobra.Command{
|
|
|
|
Use: "ps",
|
|
|
|
Short: "list restiry and local installed microservice.",
|
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
|
|
psExecute()
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
func psExecute() {
|
2024-03-01 18:05:16 +08:00
|
|
|
fmt.Println("Blocks Registry:", registryUrl)
|
2024-03-01 17:34:57 +08:00
|
|
|
pt := make([]PsTable, 0)
|
|
|
|
body, err := utils.HttpGet(registryUrl)
|
|
|
|
checkError(err)
|
|
|
|
|
2024-03-02 15:53:58 +08:00
|
|
|
var ms Releases
|
2024-03-01 17:34:57 +08:00
|
|
|
err = json.Unmarshal(body, &ms)
|
|
|
|
checkError(err)
|
|
|
|
|
2024-03-01 23:12:35 +08:00
|
|
|
if len(ms.Data) == 0 {
|
|
|
|
pt = append(pt, PsTable{})
|
|
|
|
}
|
|
|
|
|
2024-03-01 18:05:16 +08:00
|
|
|
for _, v := range ms.Data {
|
2024-03-01 17:34:57 +08:00
|
|
|
srvLine := getSrvStatus(v.ServiceKey)
|
|
|
|
srvLine.ServiceKey = v.ServiceKey
|
|
|
|
srvLine.Origin = v.Origin
|
|
|
|
srvLine.RegisterVersion = v.Version
|
2024-03-02 00:17:29 +08:00
|
|
|
srvLine.UpdatedAt = v.UpdatedAt.Format(vars.YYYY_MM_DD_HH_MM_SS)
|
2024-03-01 17:34:57 +08:00
|
|
|
pt = append(pt, srvLine)
|
|
|
|
}
|
|
|
|
|
|
|
|
// Output to stdout
|
|
|
|
table.Output(pt)
|
|
|
|
}
|
|
|
|
|
|
|
|
func getSrvStatus(srv string) PsTable {
|
2024-03-01 23:12:35 +08:00
|
|
|
|
2024-03-01 17:34:57 +08:00
|
|
|
var status string = " - "
|
2024-03-02 15:53:58 +08:00
|
|
|
execbin := filepath.Join(env.MeshEnv.Prefix, srv)
|
|
|
|
binExists := utils.PathExists(execbin)
|
2024-03-01 23:12:35 +08:00
|
|
|
if binExists {
|
2024-03-02 00:19:29 +08:00
|
|
|
//status = "\033[32mRunning\033[0m"
|
|
|
|
status = "Running"
|
2024-03-01 17:34:57 +08:00
|
|
|
}
|
|
|
|
|
2024-03-01 23:12:35 +08:00
|
|
|
isRun := checkProcessRunning(srv)
|
|
|
|
if binExists && !isRun {
|
2024-03-02 00:19:29 +08:00
|
|
|
//status = "\033[31mStop\033[0m"
|
|
|
|
status = "Stop"
|
2024-03-01 23:12:35 +08:00
|
|
|
}
|
|
|
|
|
2024-03-02 00:14:14 +08:00
|
|
|
pid, cm := getProcessInfo(srv)
|
2024-03-01 23:53:20 +08:00
|
|
|
|
2024-03-01 17:34:57 +08:00
|
|
|
return PsTable{
|
|
|
|
Status: status,
|
|
|
|
CurrentVersion: getCurrentVersion(srv),
|
2024-03-02 00:14:14 +08:00
|
|
|
PID: pid,
|
2024-03-01 23:53:20 +08:00
|
|
|
Performance: cm,
|
2024-03-01 17:34:57 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|