Merge branch 'feature/data-mask' into 'main'

update service publish

See merge request apipark/APIPark!116
This commit is contained in:
刘健
2024-12-06 10:40:20 +08:00
6 changed files with 40 additions and 49 deletions
+11 -16
View File
@@ -59,27 +59,11 @@ func (p *ProjectClient) online(ctx context.Context, project *gateway.ProjectRele
"project": project.Id,
}
if project.Upstream != nil {
//upstreams, err := matchLabels[entity.Service](ctx, p.client, gateway.ProfessionService, matches)
//if err != nil {
// if !errors.Is(err, proto.Nil) {
// return err
// }
//}
//upstreamMap := utils.SliceToMap(upstreams, func(t *entity.Service) string {
// return t.ID
//})
upstreamId := genWorkerID(project.Upstream.ID, gateway.ProfessionService)
err := p.client.Set(ctx, upstreamId, entity.ToService(project.Upstream, project.Version, matches))
if err != nil {
return err
}
//for id := range upstreamMap {
// err = p.client.Del(ctx, id)
// if err != nil {
// return err
// }
//}
}
routers, err := matchLabels[entity.Router](ctx, p.client, gateway.ProfessionRouter, matches)
@@ -106,6 +90,17 @@ func (p *ProjectClient) online(ctx context.Context, project *gateway.ProjectRele
}
delete(routerMap, id)
}
// 发布策略
for _, s := range project.Strategies {
if s.Config.IsDelete {
p.client.Del(ctx, genWorkerID(s.Config.Name, gateway.ProfessionStrategy))
continue
}
err := p.client.Set(ctx, genWorkerID(s.Config.Name, gateway.ProfessionStrategy), s)
if err != nil {
return err
}
}
// 删除多余配置
for _, v := range routerMap {
err := driver.ApiDelete(ctx, p.client, v)
+7 -2
View File
@@ -6,8 +6,13 @@ import (
)
type DriverConfig struct {
URL string `json:"url"`
Header map[string]string `json:"headers"`
URL string `json:"url"`
Header []*Param `json:"headers"`
}
type Param struct {
Key string `json:"key"`
Value string `json:"value"`
}
func (d *DriverConfig) Check() error {
+5 -1
View File
@@ -45,9 +45,13 @@ func NewDriver(config string) (*Driver, error) {
if err != nil {
return nil, err
}
headers := map[string]string{}
for _, h := range cfg.Header {
headers[h.Key] = h.Value
}
return &Driver{
url: cfg.URL,
headers: cfg.Header,
headers: headers,
}, nil
}
+1 -1
View File
@@ -208,7 +208,7 @@ func (m *imlPublishModule) getProjectRelease(ctx context.Context, projectID stri
IsDelete: s.IsDelete || s.IsStop,
}, map[string][]string{
"provider": {projectID},
}, 5000))
}, 0))
}
r.Strategies = strategyReleases
}
+15 -28
View File
@@ -5,7 +5,7 @@ import (
"errors"
"fmt"
"github.com/google/uuid"
strategy_dto "github.com/APIParkLab/APIPark/module/strategy/dto"
"github.com/APIParkLab/APIPark/service/strategy"
@@ -55,27 +55,13 @@ func (m *imlReleaseModule) latestStrategyCommits(ctx context.Context, serviceId
if err != nil {
return nil, fmt.Errorf("get latest strategy failed:%w", err)
}
return utils.SliceToSlice(list, func(s *strategy.Strategy) *commit.Commit[strategy.Commit] {
key := fmt.Sprintf("service-%s", s.Id)
return &commit.Commit[strategy.Commit]{
UUID: uuid.NewString(),
Target: s.Id,
Key: key,
Data: &strategy.Commit{
Id: s.Id,
Name: s.Name,
Priority: s.Priority,
Filters: s.Filters,
Config: s.Config,
Driver: s.Driver,
IsStop: s.IsStop,
Version: s.UpdateAt.Format("20060102150405"),
},
for _, s := range list {
err = m.strategyService.CommitStrategy(ctx, strategy_dto.ScopeService, serviceId, s.Id, s)
if err != nil {
return nil, err
}
}, func(s *strategy.Strategy) bool {
return !s.IsDelete
}), nil
}
return m.strategyService.ListLatestStrategyCommit(ctx, strategy_dto.ScopeService, serviceId)
}
func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input *dto.CreateInput) (string, error) {
@@ -136,13 +122,6 @@ func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input *
return c.Key, c.UUID
})
})
strategies, err := m.latestStrategyCommits(ctx, serviceId)
if err != nil {
return "", err
}
strategyCommits := utils.SliceToMapO(strategies, func(c *commit.Commit[strategy.Commit]) (string, string) {
return c.Target, c.UUID
})
var newRelease *release.Release
err = m.transaction.Transaction(ctx, func(ctx context.Context) error {
@@ -197,6 +176,14 @@ func (m *imlReleaseModule) Create(ctx context.Context, serviceId string, input *
return err
}
strategies, err := m.latestStrategyCommits(ctx, serviceId)
if err != nil {
return err
}
strategyCommits := utils.SliceToMapO(strategies, func(c *commit.Commit[strategy.Commit]) (string, string) {
return c.Target, c.UUID
})
if !m.releaseService.Completeness(utils.SliceToSlice(clusters, func(s *cluster.Cluster) string {
return s.Uuid
}), apiUUIDS, requestCommits, apiProxy, upstreams) {
+1 -1
View File
@@ -331,7 +331,7 @@ func (i *imlStrategyModule) Publish(ctx context.Context, driver string, scope st
return err
}
}
publishStrategies = append(publishStrategies, d.ToRelease(strategy_dto.ToStrategy(l), nil, 0))
publishStrategies = append(publishStrategies, d.ToRelease(strategy_dto.ToStrategy(l), nil, 5000))
err = i.strategyService.CommitStrategy(txCtx, scope, target, l.Id, l)
if err != nil {