调整 Grafana Folder 名称

This commit is contained in:
巴拉迪维 2022-04-24 16:33:52 +08:00
parent 14584ac2d6
commit 7b43576e0e
7 changed files with 52 additions and 50 deletions

View File

@ -9,17 +9,14 @@
package network
import (
"fmt"
"log"
"repostats/utils"
"time"
"github.com/go-resty/resty/v2"
)
const (
CONTENT_TYPE = "application/json"
USER_AGENT = "RepoStats https://gitee.com/barat | https://github.com/barats"
)
type OauthToken struct {
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
@ -49,8 +46,8 @@ func NewNetworkClient(token string) *resty.Client {
SetAuthToken(token)
client.SetHeaders(map[string]string{
"Content-Type": CONTENT_TYPE,
"User-Agent": USER_AGENT,
"Content-Type": "application/json",
"User-Agent": fmt.Sprintf("RepoStats/%s build %s", utils.Version, utils.Build),
})
client.OnError(func(r *resty.Request, err error) {

View File

@ -14,6 +14,7 @@ import (
"encoding/json"
"fmt"
"html/template"
"log"
"net/http"
gitee_model "repostats/model/gitee"
"repostats/utils"
@ -22,12 +23,12 @@ import (
)
const (
GRAFANA_API_TOKEN = "grafana_api_token.json"
GRAFANA_DATASOURCE = "grafana_datasource.json"
GRAFANA_FOLDER = "grafana_folder.json"
REPOSTATS_FOLDER_NAME = "RepoStats"
REPOSTATS_HOMEDASHBOARD_NAME = "Overview"
REPOSTATS_HOMEDASHBOARD_FILE = "grafana_home_dashboard.json"
GRAFANA_API_TOKEN = "grafana_api_token.json"
GRAFANA_DATASOURCE = "grafana_datasource.json"
GRAFANA_FOLDER = "grafana_folder.json"
REPOSTATS_GITEE_FOLDER_NAME = "Gitee"
// REPOSTATS_HOMEDASHBOARD_NAME = "Overview"
// REPOSTATS_HOMEDASHBOARD_FILE = "grafana_home_dashboard.json"
)
//go:embed templates/*.tmpl
@ -157,11 +158,11 @@ func CreateDatasource(token GrafanaToken, dbConfig utils.DatabaseConfigInfo) err
"database": "%s",
"basicAuth": true,
"basicAuthUser": "%s",
"readOnly": true,
"readOnly": true,
"withCredentials": false,
"isDefault": true,
"isDefault": true,
"secureJsonData": {
"password": "%s",
"password": "%s",
"basicAuthPassword": "%s"
},
"jsonData": {
@ -200,7 +201,7 @@ func RetrieveGrafanaDatasource() (GrafanaDatasource, error) {
return datasource, json.Unmarshal(data, &datasource)
}
func CreateRepoDashboard(token GrafanaToken, folder GrafanaFolder, datasource GrafanaDatasource, repo gitee_model.Repository) error {
func CreateGiteeRepoDashboard(token GrafanaToken, folder GrafanaFolder, datasource GrafanaDatasource, repo gitee_model.Repository) error {
data := map[string]string{
"datasource": datasource.UID,
"folder": folder.UID,
@ -212,7 +213,7 @@ func CreateRepoDashboard(token GrafanaToken, folder GrafanaFolder, datasource Gr
}
var tp bytes.Buffer
tmpl, err := template.ParseFS(grafanaFS, "templates/repo-dashboard.tmpl")
tmpl, err := template.ParseFS(grafanaFS, "templates/gitee-repo-dashboard.tmpl")
if err != nil {
return err
}
@ -227,16 +228,16 @@ func CreateRepoDashboard(token GrafanaToken, folder GrafanaFolder, datasource Gr
}
if code != http.StatusOK {
return fmt.Errorf("grafana home dashboard creation failed. status code: %d , response : %s", code, rs)
return fmt.Errorf("grafana gitee remo dashboard creation failed. status code: %d , response : %s", code, rs)
}
var rawMap map[string]json.RawMessage
json.Unmarshal([]byte(rs), &rawMap)
return utils.WriteRepoStatsFile(fmt.Sprintf("gitee-repo-%d.json", repo.ID), []byte(rawMap["dashboard"]))
// var rawMap map[string]json.RawMessage
// json.Unmarshal([]byte(rs), &rawMap)
// return utils.WriteRepoStatsFile(fmt.Sprintf("gitee-repo-%d.json", repo.ID), []byte(rawMap["dashboard"]))
return nil
}
func CreateHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasource GrafanaDatasource) error {
func CreateGiteeHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasource GrafanaDatasource) error {
data := map[string]string{
"datasource": datasource.UID,
"folder": folder.UID,
@ -244,7 +245,7 @@ func CreateHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasource Gr
}
var tp bytes.Buffer
tmpl, err := template.ParseFS(grafanaFS, "templates/home-dashboard.tmpl")
tmpl, err := template.ParseFS(grafanaFS, "templates/gitee-home-dashboard.tmpl")
if err != nil {
return err
}
@ -253,6 +254,8 @@ func CreateHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasource Gr
return err
}
log.Println(tp.String())
code, rs, err := HttpPost(token.Key, fmt.Sprintf("http://%s:%s/api/dashboards/db", token.Host, token.Port), nil, tp.String())
if err != nil {
return err
@ -262,17 +265,17 @@ func CreateHomeDashboard(token GrafanaToken, folder GrafanaFolder, datasource Gr
return fmt.Errorf("grafana home dashboard creation failed. status code: %d , response : %s", code, rs)
}
var rawMap map[string]json.RawMessage
json.Unmarshal([]byte(rs), &rawMap)
return utils.WriteRepoStatsFile(REPOSTATS_HOMEDASHBOARD_FILE, []byte(rawMap["dashboard"]))
// var rawMap map[string]json.RawMessage
// json.Unmarshal([]byte(rs), &rawMap)
// return utils.WriteRepoStatsFile(REPOSTATS_HOMEDASHBOARD_FILE, []byte(rawMap["dashboard"]))
return nil
}
//创建 RepoStats 使用的 Folder
//
func CreateRepostatsFolder(token GrafanaToken) error {
func CreateGiteeRepostatsFolder(token GrafanaToken) error {
url := fmt.Sprintf("http://%s:%s/api/folders", token.Host, token.Port)
data := fmt.Sprintf(`{"title":"%s"}`, REPOSTATS_FOLDER_NAME)
data := fmt.Sprintf(`{"title":"%s"}`, REPOSTATS_GITEE_FOLDER_NAME)
code, rs, err := HttpPost(token.Key, url, nil, data)
if err != nil {
return err
@ -286,7 +289,7 @@ func CreateRepostatsFolder(token GrafanaToken) error {
}
// 获取本地存储的 Folder 信息
func RetrieveRepostatsFolder() (GrafanaFolder, error) {
func RetrieveGiteeRepostatsFolder() (GrafanaFolder, error) {
var folder GrafanaFolder
data, _ := utils.ReadRepoStatsFile(GRAFANA_FOLDER)
return folder, json.Unmarshal(data, &folder)

View File

@ -62,7 +62,7 @@ func TestCreateRepostatsFolder(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := CreateRepostatsFolder(tt.args.token); (err != nil) != tt.wantErr {
if err := CreateGiteeRepostatsFolder(tt.args.token); (err != nil) != tt.wantErr {
t.Errorf("CreateRepostatsFolder() error = %v, wantErr %v", err, tt.wantErr)
}
})
@ -80,7 +80,7 @@ func TestCreateHomeDashboard(t *testing.T) {
datasource, err := RetrieveGrafanaDatasource()
utils.ExitOnError(err)
folder, err := RetrieveRepostatsFolder()
folder, err := RetrieveGiteeRepostatsFolder()
utils.ExitOnError(err)
type args struct {
@ -97,7 +97,7 @@ func TestCreateHomeDashboard(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := CreateHomeDashboard(tt.args.token, tt.args.folder, tt.args.datasource); (err != nil) != tt.wantErr {
if err := CreateGiteeHomeDashboard(tt.args.token, tt.args.folder, tt.args.datasource); (err != nil) != tt.wantErr {
t.Errorf("CreateHomeDashboard() error = %v, wantErr %v", err, tt.wantErr)
}
})
@ -115,11 +115,11 @@ func TestCreateRepoDashboard(t *testing.T) {
datasource, err := RetrieveGrafanaDatasource()
utils.ExitOnError(err)
folder, err := RetrieveRepostatsFolder()
folder, err := RetrieveGiteeRepostatsFolder()
utils.ExitOnError(err)
// repos, err := GetGiteeUserRepos("barat")
repos, err := GetGiteeOrgRepos("openharmony")
repos, err := GetGiteeUserRepos("barat")
// repos, err := GetGiteeOrgRepos("openharmony")
utils.ExitOnError(err)
type args struct {
@ -142,7 +142,7 @@ func TestCreateRepoDashboard(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := CreateRepoDashboard(tt.args.token, tt.args.folder, tt.args.datasource, tt.args.repo); (err != nil) != tt.wantErr {
if err := CreateGiteeRepoDashboard(tt.args.token, tt.args.folder, tt.args.datasource, tt.args.repo); (err != nil) != tt.wantErr {
t.Errorf("CreateRepoDashboard() error = %v, wantErr %v", err, tt.wantErr)
}
})

View File

@ -1,9 +1,9 @@
{{define "home-dashboard.tmpl"}}
{{define "gitee-home-dashboard.tmpl"}}
{
"message": "Home Dashboard Update at {{.time}}",
"dashboard": {
"title": "RepoStats Overview",
"tags": [ "RepoStats" ],
"title": "Gitee Overview",
"tags": ["RepoStats","Gitee"],
"timezone": "browser",
"refresh": "2h",
"time": {

View File

@ -1,9 +1,9 @@
{{define "repo-dashboard.tmpl"}}
{{define "gitee-repo-dashboard.tmpl"}}
{
"message": "Repo Dashboard Update at {{.time}}",
"dashboard": {
"title": "{{.repo_human_name}}",
"tags": [ "RepoStats","Gitee","{{.repo_path}}","{{.repo_owner}}"],
"tags": ["RepoStats","Gitee","{{.repo_path}}","{{.repo_owner}}"],
"timezone": "browser",
"refresh": "2h",
"time": {

View File

@ -26,9 +26,6 @@ import (
)
var (
Version = "1.0"
Build = "2204111911"
//go:embed assets/* templates/*
FS embed.FS
@ -39,8 +36,8 @@ func main() {
flag.StringVar(&cmdConfig, "c", "repostats.ini", "config file path")
flag.Usage = func() {
fmt.Fprintf(os.Stdout, `RepoStats version:%s build %s
Usage: repostats [-c config_file_path]`, Version, Build)
fmt.Fprintf(os.Stdout, `RepoStats v:%s build %s
Usage: repostats [-c config_file_path]`, utils.Version, utils.Build)
flag.PrintDefaults()
}
@ -57,7 +54,7 @@ func main() {
initRouter(router)
log.Println(fmt.Sprintf("[RepoStats v%s build:%s] starts at http://localhost:%d", Version, Build, utils.RepoStatsConfig.AdminPort))
log.Println(fmt.Sprintf("[RepoStats v%s build:%s] starts at http://localhost:%d", utils.Version, utils.Build, utils.RepoStatsConfig.AdminPort))
router.Run(fmt.Sprintf("localhost:%d", utils.RepoStatsConfig.AdminPort))
}

View File

@ -18,6 +18,11 @@ import (
"strings"
)
var (
Version = "1.0"
Build = "2204111911"
)
func ExitOnError(err error) {
if err != nil {
log.Fatalln(err)