mirror of
https://github.com/rancher/steve.git
synced 2025-04-27 02:51:10 +00:00
Adds a validate phase to the CI which runs a linter. Also fixes linter issues discovered during the initial run
67 lines
2.5 KiB
Go
67 lines
2.5 KiB
Go
package metrics
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/rancher/apiserver/pkg/types"
|
|
"github.com/rancher/steve/pkg/metrics"
|
|
)
|
|
|
|
type Store struct {
|
|
Store types.Store
|
|
}
|
|
|
|
func NewMetricsStore(store types.Store) *Store {
|
|
return &Store{
|
|
Store: store,
|
|
}
|
|
}
|
|
|
|
func (s *Store) ByID(apiOp *types.APIRequest, schema *types.APISchema, id string) (types.APIObject, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiObject, err := s.Store.ByID(apiOp, schema, id)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiObject, err
|
|
}
|
|
|
|
func (s *Store) List(apiOp *types.APIRequest, schema *types.APISchema) (types.APIObjectList, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiObjectList, err := s.Store.List(apiOp, schema)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiObjectList, err
|
|
}
|
|
|
|
func (s *Store) Create(apiOp *types.APIRequest, schema *types.APISchema, data types.APIObject) (types.APIObject, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiObject, err := s.Store.Create(apiOp, schema, data)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiObject, err
|
|
}
|
|
|
|
func (s *Store) Update(apiOp *types.APIRequest, schema *types.APISchema, data types.APIObject, id string) (types.APIObject, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiObject, err := s.Store.Update(apiOp, schema, data, id)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiObject, err
|
|
}
|
|
|
|
func (s *Store) Delete(apiOp *types.APIRequest, schema *types.APISchema, id string) (types.APIObject, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiObject, err := s.Store.Delete(apiOp, schema, id)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiObject, err
|
|
}
|
|
|
|
func (s *Store) Watch(apiOp *types.APIRequest, schema *types.APISchema, w types.WatchRequest) (chan types.APIEvent, error) {
|
|
m := metrics.MetricLogger{Resource: apiOp.Schema.ID, Method: apiOp.Method}
|
|
storeStart := time.Now()
|
|
apiEvent, err := s.Store.Watch(apiOp, schema, w)
|
|
m.RecordProxyStoreResponseTime(err, float64(time.Since(storeStart).Milliseconds()))
|
|
return apiEvent, err
|
|
}
|