Skip to content

Commit

Permalink
refactor audit (erda-project#1784)
Browse files Browse the repository at this point in the history
  • Loading branch information
recallsong authored Sep 10, 2021
1 parent fc5aeb3 commit b189322
Show file tree
Hide file tree
Showing 17 changed files with 832 additions and 156 deletions.
2 changes: 1 addition & 1 deletion cmd/openapi/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import (
_ "github.com/erda-project/erda/modules/core/openapi-ng/example/custom-register"
_ "github.com/erda-project/erda/modules/core/openapi-ng/example/custom-route-source"
_ "github.com/erda-project/erda/modules/core/openapi-ng/example/publish"
_ "github.com/erda-project/erda/modules/core/openapi-ng/interceptors/audit"
_ "github.com/erda-project/erda/modules/core/openapi-ng/interceptors/common"
_ "github.com/erda-project/erda/modules/core/openapi-ng/interceptors/csrf"
_ "github.com/erda-project/erda/modules/core/openapi-ng/interceptors/dump"
Expand All @@ -43,6 +42,7 @@ import (
_ "github.com/erda-project/erda/modules/core/openapi-ng/routes/openapi-v1"
_ "github.com/erda-project/erda/modules/core/openapi-ng/routes/proto"
_ "github.com/erda-project/erda/modules/openapi"
_ "github.com/erda-project/erda/providers/audit"
_ "github.com/erda-project/erda/providers/service-discover/erda-discover"
_ "github.com/erda-project/erda/providers/service-discover/fixed-discover"
)
Expand Down
3 changes: 0 additions & 3 deletions conf/openapi/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ openapi-interceptor-auth-session-compatibility:
openapi-interceptor-user-info:
order: 900

openapi-interceptor-audit:
order: 1000

openapi-auth:
openapi-auth-ory-kratos:
_enable: ${ORY_ENABLED:false}
Expand Down
7 changes: 4 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ require (
github.com/dsnet/compress v0.0.1 // indirect
github.com/dustin/go-humanize v1.0.0
github.com/elastic/cloud-on-k8s v0.0.0-20210205172912-5ce0eca90c60
github.com/erda-project/erda-infra v0.0.0-20210907124129-709cc0069f2f
github.com/erda-project/erda-proto-go v0.0.0-20210909085352-edd80839d294
github.com/erda-project/erda-infra v0.0.0-20210910055258-e82f28947881
github.com/erda-project/erda-proto-go v0.0.0-20210910055828-89edfc75e378
github.com/extrame/ole2 v0.0.0-20160812065207-d69429661ad7 // indirect
github.com/extrame/xls v0.0.1
github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect
Expand All @@ -56,6 +56,7 @@ require (
github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
github.com/golang-jwt/jwt v3.2.1+incompatible
github.com/golang/mock v1.5.0
github.com/golang/protobuf v1.5.2
github.com/google/uuid v1.2.0
github.com/googlecloudplatform/flink-operator v0.0.0-00010101000000-000000000000
github.com/gorilla/mux v1.8.0
Expand Down Expand Up @@ -156,7 +157,7 @@ require (
k8s.io/apiserver v0.21.2
k8s.io/client-go v12.0.0+incompatible
k8s.io/kubectl v0.21.0
k8s.io/kubernetes v1.21.2
k8s.io/kubernetes v1.21.0
kmodules.xyz/monitoring-agent-api v0.0.0-20200125202117-d3b3e33ce41f
kmodules.xyz/objectstore-api v0.0.0-20200214040336-fe8f39a4210d
kmodules.xyz/offshoot-api v0.0.0-20200216080509-45ee6418d1c1
Expand Down
9 changes: 4 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -446,12 +446,11 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7
github.com/erda-project/elastic v0.0.1-ex h1:5ajfxQ5S5YjpzFqY9LzL9hiKWCn6q/JDT4n8sNv7+pU=
github.com/erda-project/elastic v0.0.1-ex/go.mod h1:iAVsas6fcmt9pxtge1+dErMhecv+RLSXlD4rnZRJVW0=
github.com/erda-project/erda-infra v0.0.0-20210706133120-0a742437972c/go.mod h1:TUQYSZ60w9dk7m0q3U3AVg7U74APj/sdEVvRWR3wYv8=
github.com/erda-project/erda-infra v0.0.0-20210901113044-1130cdf38f06/go.mod h1:YTzG9qn+ANduchImF9uA7VU1B5cRMjPK5Dhb2EjQ2E8=
github.com/erda-project/erda-infra v0.0.0-20210907124129-709cc0069f2f h1:u72lb4bVQRbnIFKeoNShBAoYtukvEO2VBIZSJld/+Hk=
github.com/erda-project/erda-infra v0.0.0-20210907124129-709cc0069f2f/go.mod h1:Aec8FrEVnfzqeAjQSQDnBuRJ/AFJjpHYEG/QpKqVeHk=
github.com/erda-project/erda-infra v0.0.0-20210910055258-e82f28947881 h1:lYPZRJVzCJMFM1bVlKFr99tsEYb90JfEoADhdR7S5G8=
github.com/erda-project/erda-infra v0.0.0-20210910055258-e82f28947881/go.mod h1:Aec8FrEVnfzqeAjQSQDnBuRJ/AFJjpHYEG/QpKqVeHk=
github.com/erda-project/erda-proto-go v0.0.0-20210820073528-bcd612c2efb7/go.mod h1:rSETXX3nKxxIhgrVn7fKDM3mla1nNlWcPz4AkepixaU=
github.com/erda-project/erda-proto-go v0.0.0-20210909085352-edd80839d294 h1:lOeCC2kdOyvxXajHJj+ZZi31OC7GqjM5dSG8zbHZjGI=
github.com/erda-project/erda-proto-go v0.0.0-20210909085352-edd80839d294/go.mod h1:tbepes1Qnq9I9ex23EZbZ4u+ImurAapGYQf0yISZRpI=
github.com/erda-project/erda-proto-go v0.0.0-20210910055828-89edfc75e378 h1:Ez5b5zCZyZxuezfOQOIXKqjrcJ/75pdT5wzA++fOkng=
github.com/erda-project/erda-proto-go v0.0.0-20210910055828-89edfc75e378/go.mod h1:l+9rt1kA1uLqqGV7Stte32wNpL2IlllCsD7KfxgOY+s=
github.com/erda-project/flink-on-k8s-operator v0.0.0-20210828094530-28e003581cf2 h1:5QKXIq0yTPulGqXzEQx96fLK6HDCb8xC1H6kOjj4hsk=
github.com/erda-project/flink-on-k8s-operator v0.0.0-20210828094530-28e003581cf2/go.mod h1:QbDTwfKi8Nd8VR7cdOqRyWM2Ymul7m0hzSaoC3xSho8=
github.com/erda-project/influxql v1.1.0-ex h1:NgP5+S5Qo234IVSIJ3N/egvzCNYJURfMAett3e8a9LE=
Expand Down
113 changes: 0 additions & 113 deletions modules/core/openapi-ng/interceptors/audit/audit.go

This file was deleted.

17 changes: 17 additions & 0 deletions modules/core/openapi-ng/proxy/proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,23 @@ func Test_buildPathToSegments(t *testing.T) {
},
},
},
{
path: "/abc/{def.gh}/ijk",
wantSegs: []*pathSegment{
{
typ: pathStatic,
name: "/abc/",
},
{
typ: pathField,
name: "def.gh",
},
{
typ: pathStatic,
name: "/ijk",
},
},
},
{
path: "/abc/{def=subpath/**}/g",
wantSegs: []*pathSegment{
Expand Down
65 changes: 42 additions & 23 deletions modules/msp/apm/checker/apis/checker.v1.service.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,12 @@ func (s *checkerV1Service) UpdateCheckerV1(ctx context.Context, req *pb.UpdateCh
if err := s.metricDB.Update(metric); err != nil {
return nil, errors.NewDatabaseError(err)
}
checker := s.ConvertToChecker(ctx, metric, metric.ProjectID)
projectID, err := s.getProjectID(metric)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
req.Data.ProjectID = projectID
checker := s.ConvertToChecker(ctx, metric, projectID)
if checker != nil {
err := s.cache.Put(checker)
if err != nil {
Expand All @@ -154,14 +159,10 @@ func (s *checkerV1Service) DeleteCheckerV1(ctx context.Context, req *pb.DeleteCh
return &pb.DeleteCheckerV1Response{}, nil
}

var projectID int64
proj, err := s.projectDB.GetByID(metric.ProjectID)
projectID, err := s.getProjectID(metric)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
if proj != nil {
projectID = proj.ProjectID
}

err = s.metricDB.Delete(req.Id)
if err != nil {
Expand All @@ -171,7 +172,6 @@ func (s *checkerV1Service) DeleteCheckerV1(ctx context.Context, req *pb.DeleteCh
if err != nil {
return nil, err
}

return &pb.DeleteCheckerV1Response{Data: &pb.CheckerV1{
Name: metric.Name,
Mode: metric.Mode,
Expand All @@ -189,17 +189,39 @@ func (s *checkerV1Service) GetCheckerV1(ctx context.Context, req *pb.GetCheckerV
if metric == nil {
return &pb.GetCheckerV1Response{}, nil
}
projectID, err := s.getProjectID(metric)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
return &pb.GetCheckerV1Response{
Data: &pb.CheckerV1{
Name: metric.Name,
Mode: metric.Mode,
Url: metric.URL,
ProjectID: metric.ProjectID,
ProjectID: projectID,
Env: metric.Env,
},
}, nil
}

func (s *checkerV1Service) getProjectID(m *db.Metric) (int64, error) {
var projectID int64 = -1
if m.Extra != "" {
_, err := strconv.ParseInt(m.Extra, 10, 64)
if err == nil {
projectID = m.ProjectID
}
}
if projectID < 0 {
proj, err := s.projectDB.GetByID(m.ProjectID)
if err != nil {
return 0, err
}
projectID = proj.ProjectID
}
return projectID, nil
}

func (s *checkerV1Service) DescribeCheckersV1(ctx context.Context, req *pb.DescribeCheckersV1Request) (*pb.DescribeCheckersV1Response, error) {
proj, err := s.projectDB.GetByProjectID(req.ProjectID)
if err != nil {
Expand All @@ -208,27 +230,24 @@ func (s *checkerV1Service) DescribeCheckersV1(ctx context.Context, req *pb.Descr
var list []*db.Metric
if proj != nil {
// history record
oldCheckers, err := s.metricDB.ListByProjectIDAndEnv(proj.ID, req.Env)
for _, checker := range oldCheckers {
if checker.Extra == "" {
list = append(list, checker)
}
}
oldMetrics, err := s.metricDB.ListByProjectIDAndEnv(proj.ID, req.Env)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
newCheckers, err := s.metricDB.ListByProjectIDAndEnv(req.ProjectID, req.Env)
for _, m := range oldMetrics {
if m.Extra == "" {
list = append(list, m)
}
}
newMetrics, err := s.metricDB.ListByProjectIDAndEnv(req.ProjectID, req.Env)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
for _, checker := range newCheckers {
if checker.Extra != "" {
extra, err := strconv.ParseInt(checker.Extra, 10, 64)
if err != nil {
return nil, errors.NewDatabaseError(err)
}
if checker.ProjectID == extra {
list = append(list, checker)
for _, m := range newMetrics {
if m.Extra != "" {
extra, err := strconv.ParseInt(m.Extra, 10, 64)
if err == nil && m.ProjectID == extra {
list = append(list, m)
}
}
}
Expand Down
31 changes: 31 additions & 0 deletions modules/msp/apm/checker/apis/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
package apis

import (
"context"

"github.com/go-redis/redis"
"github.com/jinzhu/gorm"

Expand All @@ -28,6 +30,7 @@ import (
"github.com/erda-project/erda/modules/msp/apm/checker/storage/db"
"github.com/erda-project/erda/pkg/common/apis"
perm "github.com/erda-project/erda/pkg/common/permission"
"github.com/erda-project/erda/providers/audit"
)

type config struct {
Expand All @@ -44,13 +47,15 @@ type provider struct {
Redis *redis.Client `autowired:"redis-client"`
DB *gorm.DB `autowired:"mysql-client"`
Perm perm.Interface `autowired:"permission"`
audit audit.Auditor

// implements
checkerService *checkerService
checkerV1Service *checkerV1Service
}

func (p *provider) Init(ctx servicehub.Context) error {
p.audit = audit.GetAuditor(ctx)
cache := cache.New(p.Cfg.CacheKey, p.Redis)

p.checkerService = &checkerService{p}
Expand All @@ -75,6 +80,32 @@ func (p *provider) Init(ctx servicehub.Context) error {
perm.Method(CheckerServiceV1.GetCheckerStatusV1, perm.ScopeProject, "monitor_status", perm.ActionGet, p.checkerV1Service.getProjectFromMetricID()),
perm.Method(CheckerServiceV1.GetCheckerIssuesV1, perm.ScopeProject, "monitor_status", perm.ActionGet, p.checkerV1Service.getProjectFromMetricID()),
),
p.audit.Audit(
audit.Method(CheckerServiceV1.CreateCheckerV1, audit.ProjectScope, "createInitiativeMonitor",
func(ctx context.Context, req, resp interface{}, err error) (interface{}, map[string]interface{}, error) {
r := req.(*pb.CreateCheckerV1Request)
return r.Data.ProjectID, map[string]interface{}{
"metricName": r.Data.Name,
}, nil
},
),
audit.Method(CheckerServiceV1.UpdateCheckerV1, audit.ProjectScope, "updateInitiativeMonitor",
func(ctx context.Context, req, resp interface{}, err error) (interface{}, map[string]interface{}, error) {
r := req.(*pb.CreateCheckerV1Request)
return r.Data.ProjectID, map[string]interface{}{
"metricName": r.Data.Name,
}, nil
},
),
audit.Method(CheckerServiceV1.DeleteCheckerV1, audit.ProjectScope, "deleteInitiativeMonitor",
func(ctx context.Context, req, resp interface{}, err error) (interface{}, map[string]interface{}, error) {
r := resp.(*pb.DeleteCheckerV1Response)
return r.Data.ProjectID, map[string]interface{}{
"metricName": r.Data.Name,
}, nil
},
),
),
)
}
return nil
Expand Down
Loading

0 comments on commit b189322

Please sign in to comment.