Skip to content

Commit 7449a76

Browse files
committed
chore: format code about gocyclo,gosec
Signed-off-by: chaosi-zju <[email protected]>
1 parent 2cbf2eb commit 7449a76

File tree

5 files changed

+174
-149
lines changed

5 files changed

+174
-149
lines changed

cmd/api/app/routes/overview/misc.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ package overview
1919
import (
2020
"bytes"
2121
"context"
22+
"crypto/rand"
2223
"errors"
23-
"math/rand"
24+
"math/big"
2425
"strings"
25-
"time"
2626

2727
"github.com/karmada-io/karmada/pkg/version"
2828
corev1 "k8s.io/api/core/v1"
@@ -59,9 +59,11 @@ func GetControllerManagerVersionInfo() (*version.Info, error) {
5959
if len(podListResult.Items) == 0 {
6060
return nil, errors.New("no valid pod for karmada-controller-manager")
6161
}
62-
r := rand.New(rand.NewSource(time.Now().UnixNano()))
63-
n := r.Intn(len(podListResult.Items))
64-
pod := podListResult.Items[n]
62+
nBig, err := rand.Int(rand.Reader, big.NewInt(int64(len(podListResult.Items))))
63+
if err != nil {
64+
return nil, err
65+
}
66+
pod := podListResult.Items[int(nBig.Int64())]
6567

6668
req := kubeClient.CoreV1().RESTClient().Post().
6769
Resource("pods").

cmd/metrics-scraper/app/routes/metrics/handlerqueries.go

Lines changed: 142 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -65,127 +65,138 @@ func QueryMetrics(c *gin.Context) {
6565

6666
switch queryType {
6767
case "mname":
68-
rows, err := tx.Query(fmt.Sprintf("SELECT DISTINCT name FROM %s", sanitizedPodName))
69-
if err != nil {
70-
log.Printf("Error querying metric names: %v, SQL Error: %v", err, err)
71-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query metric names"})
68+
queryMetricNames(c, tx, sanitizedPodName)
69+
case "details":
70+
queryMetricDetailsByName(c, tx, sanitizedPodName, metricName)
71+
case "metricsdetails":
72+
queryMetricDetails(c, appName)
73+
}
74+
}
75+
76+
func queryMetricNames(c *gin.Context, tx *sql.Tx, sanitizedPodName string) {
77+
rows, err := tx.Query(fmt.Sprintf("SELECT DISTINCT name FROM %s", sanitizedPodName))
78+
if err != nil {
79+
log.Printf("Error querying metric names: %v, SQL Error: %v", err, err)
80+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query metric names"})
81+
return
82+
}
83+
defer rows.Close()
84+
85+
var metricNames []string
86+
for rows.Next() {
87+
var metricName string
88+
if err := rows.Scan(&metricName); err != nil {
89+
log.Printf("Error scanning metric name: %v", err)
90+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan metric name"})
7291
return
7392
}
74-
defer rows.Close()
75-
76-
var metricNames []string
77-
for rows.Next() {
78-
var metricName string
79-
if err := rows.Scan(&metricName); err != nil {
80-
log.Printf("Error scanning metric name: %v", err)
81-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan metric name"})
82-
return
83-
}
84-
metricNames = append(metricNames, metricName)
85-
}
93+
metricNames = append(metricNames, metricName)
94+
}
8695

87-
c.JSON(http.StatusOK, gin.H{"metricNames": metricNames})
96+
c.JSON(http.StatusOK, gin.H{"metricNames": metricNames})
97+
}
8898

89-
case "details":
90-
if metricName == "" {
91-
c.JSON(http.StatusBadRequest, gin.H{"error": "Metric name required for details"})
92-
return
93-
}
94-
query := fmt.Sprintf(`
99+
func queryMetricDetailsByName(c *gin.Context, tx *sql.Tx, sanitizedPodName, metricName string) {
100+
if metricName == "" {
101+
c.JSON(http.StatusBadRequest, gin.H{"error": "Metric name required for details"})
102+
return
103+
}
104+
query := `
95105
SELECT
96106
m.currentTime,
97107
m.name,
98108
v.value,
99109
v.measure,
100110
v.id
101-
FROM %s m
102-
INNER JOIN %s_values v ON m.id = v.metric_id
111+
FROM ? m
112+
INNER JOIN ? v ON m.id = v.metric_id
103113
WHERE m.name = ?
104-
`, sanitizedPodName, sanitizedPodName)
105-
rows, err := tx.Query(query, metricName)
106-
if err != nil {
107-
log.Printf("Error querying metric details: %v", err)
108-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query metric details"})
109-
return
110-
}
111-
defer rows.Close()
114+
`
115+
rows, err := tx.Query(query, sanitizedPodName, fmt.Sprintf("%s_values", sanitizedPodName), metricName)
116+
if err != nil {
117+
log.Printf("Error querying metric details: %v", err)
118+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query metric details"})
119+
return
120+
}
121+
defer rows.Close()
112122

113-
type MetricValue struct {
114-
Value string `json:"value"`
115-
Measure string `json:"measure"`
116-
Labels map[string]string `json:"labels"`
117-
}
123+
type MetricValue struct {
124+
Value string `json:"value"`
125+
Measure string `json:"measure"`
126+
Labels map[string]string `json:"labels"`
127+
}
118128

119-
type MetricDetails struct {
120-
Name string `json:"name"`
121-
Values []MetricValue `json:"values"`
122-
}
129+
type MetricDetails struct {
130+
Name string `json:"name"`
131+
Values []MetricValue `json:"values"`
132+
}
123133

124-
detailsMap := make(map[string]MetricDetails)
134+
detailsMap := make(map[string]MetricDetails)
125135

126-
for rows.Next() {
127-
var currentTime time.Time
128-
var name, value, measure string
129-
var valueID int
130-
if err := rows.Scan(&currentTime, &name, &value, &measure, &valueID); err != nil {
131-
log.Printf("Error scanning metric details: %v", err)
132-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan metric details"})
133-
return
134-
}
136+
for rows.Next() {
137+
var currentTime time.Time
138+
var name, value, measure string
139+
var valueID int
140+
if err := rows.Scan(&currentTime, &name, &value, &measure, &valueID); err != nil {
141+
log.Printf("Error scanning metric details: %v", err)
142+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan metric details"})
143+
return
144+
}
135145

136-
labelsQuery := fmt.Sprintf("SELECT key, value FROM %s_labels WHERE value_id = ?", sanitizedPodName)
137-
labelsRows, err := tx.Query(labelsQuery, valueID)
138-
if err != nil {
139-
log.Printf("Error querying labels: %v", err)
140-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query labels"})
146+
labelsQuery := "SELECT key, value FROM ? WHERE value_id = ?"
147+
labelsRows, err := tx.Query(labelsQuery, fmt.Sprintf("%s_labels", sanitizedPodName), valueID)
148+
if err != nil {
149+
log.Printf("Error querying labels: %v", err)
150+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query labels"})
151+
return
152+
}
153+
defer labelsRows.Close()
154+
155+
labels := make(map[string]string)
156+
for labelsRows.Next() {
157+
var labelKey, labelValue string
158+
if err := labelsRows.Scan(&labelKey, &labelValue); err != nil {
159+
log.Printf("Error scanning labels: %v", err)
160+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan labels"})
141161
return
142162
}
143-
defer labelsRows.Close()
144-
145-
labels := make(map[string]string)
146-
for labelsRows.Next() {
147-
var labelKey, labelValue string
148-
if err := labelsRows.Scan(&labelKey, &labelValue); err != nil {
149-
log.Printf("Error scanning labels: %v", err)
150-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to scan labels"})
151-
return
152-
}
153-
labels[labelKey] = labelValue
154-
}
163+
labels[labelKey] = labelValue
164+
}
155165

156-
timeKey := currentTime.Format(time.RFC3339)
166+
timeKey := currentTime.Format(time.RFC3339)
157167

158-
detail, exists := detailsMap[timeKey]
159-
if !exists {
160-
detail = MetricDetails{
161-
Name: name,
162-
Values: []MetricValue{},
163-
}
168+
detail, exists := detailsMap[timeKey]
169+
if !exists {
170+
detail = MetricDetails{
171+
Name: name,
172+
Values: []MetricValue{},
164173
}
174+
}
165175

166-
detail.Values = append(detail.Values, MetricValue{
167-
Value: value,
168-
Measure: measure,
169-
Labels: labels,
170-
})
176+
detail.Values = append(detail.Values, MetricValue{
177+
Value: value,
178+
Measure: measure,
179+
Labels: labels,
180+
})
171181

172-
detailsMap[timeKey] = detail
173-
}
182+
detailsMap[timeKey] = detail
183+
}
174184

175-
c.JSON(http.StatusOK, gin.H{"details": detailsMap})
185+
c.JSON(http.StatusOK, gin.H{"details": detailsMap})
186+
}
176187

177-
case "metricsdetails":
178-
// Handle metricsdetails query type
179-
db, err := sql.Open("sqlite", strings.ReplaceAll(appName, "-", "_")+".db")
180-
if err != nil {
181-
log.Printf("Error opening database: %v", err)
182-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to open database"})
183-
return
184-
}
185-
defer db.Close()
188+
func queryMetricDetails(c *gin.Context, appName string) {
189+
// Handle metricsdetails query type
190+
db, err := sql.Open("sqlite", strings.ReplaceAll(appName, "-", "_")+".db")
191+
if err != nil {
192+
log.Printf("Error opening database: %v", err)
193+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to open database"})
194+
return
195+
}
196+
defer db.Close()
186197

187-
// Get all relevant tables
188-
rows, err := db.Query(`
198+
// Get all relevant tables
199+
rows, err := db.Query(`
189200
SELECT name
190201
FROM sqlite_master
191202
WHERE type='table'
@@ -194,55 +205,53 @@ func QueryMetrics(c *gin.Context) {
194205
AND name NOT LIKE '%_time_load'
195206
AND name != 'sqlite_sequence'
196207
`)
197-
if err != nil {
198-
log.Printf("Error querying tables: %v", err)
199-
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query tables"})
200-
return
201-
}
202-
defer rows.Close()
208+
if err != nil {
209+
log.Printf("Error querying tables: %v", err)
210+
c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to query tables"})
211+
return
212+
}
213+
defer rows.Close()
203214

204-
result := make(map[string]map[string]MetricInfo)
215+
result := make(map[string]map[string]MetricInfo)
205216

206-
// Process each table (pod)
207-
for rows.Next() {
208-
var tableName string
209-
if err := rows.Scan(&tableName); err != nil {
210-
log.Printf("Error scanning table name: %v", err)
211-
continue
212-
}
217+
// Process each table (pod)
218+
for rows.Next() {
219+
var tableName string
220+
if err := rows.Scan(&tableName); err != nil {
221+
log.Printf("Error scanning table name: %v", err)
222+
continue
223+
}
213224

214-
// Get metrics for this pod
215-
metricRows, err := db.Query(fmt.Sprintf(`
225+
// Get metrics for this pod
226+
metricRows, err := db.Query(fmt.Sprintf(`
216227
SELECT DISTINCT name, help, type
217228
FROM %s
218229
GROUP BY name
219230
`, tableName))
220-
if err != nil {
221-
log.Printf("Error querying metrics for table %s: %v", tableName, err)
231+
if err != nil {
232+
log.Printf("Error querying metrics for table %s: %v", tableName, err)
233+
continue
234+
}
235+
defer metricRows.Close()
236+
237+
podMetrics := make(map[string]MetricInfo)
238+
239+
// Process each metric
240+
for metricRows.Next() {
241+
var name, help, metricType string
242+
if err := metricRows.Scan(&name, &help, &metricType); err != nil {
243+
log.Printf("Error scanning metric info: %v", err)
222244
continue
223245
}
224-
defer metricRows.Close()
225-
226-
podMetrics := make(map[string]MetricInfo)
227-
228-
// Process each metric
229-
for metricRows.Next() {
230-
var name, help, metricType string
231-
if err := metricRows.Scan(&name, &help, &metricType); err != nil {
232-
log.Printf("Error scanning metric info: %v", err)
233-
continue
234-
}
235-
236-
podMetrics[name] = MetricInfo{
237-
Help: help,
238-
Type: metricType,
239-
}
240-
}
241246

242-
result[tableName] = podMetrics
247+
podMetrics[name] = MetricInfo{
248+
Help: help,
249+
Type: metricType,
250+
}
243251
}
244252

245-
c.JSON(http.StatusOK, result)
246-
return
253+
result[tableName] = podMetrics
247254
}
255+
256+
c.JSON(http.StatusOK, result)
248257
}

0 commit comments

Comments
 (0)