mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-14 20:41:15 +08:00
Merge branch 'feature/data-mask' into 'main'
update service publish See merge request apipark/APIPark!116
This commit is contained in:
+11
-16
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user