实现缓存策略部分管理功能

This commit is contained in:
GoEdgeLab
2020-10-02 17:22:32 +08:00
parent e4faed22d4
commit 9f4119b892
14 changed files with 595 additions and 56 deletions

View File

@@ -2,6 +2,7 @@ package services
import (
"context"
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
@@ -32,3 +33,100 @@ func (this *HTTPCachePolicyService) FindAllEnabledHTTPCachePolicies(ctx context.
}
return &pb.FindAllEnabledHTTPCachePoliciesResponse{CachePolicies: result}, nil
}
// 创建缓存策略
func (this *HTTPCachePolicyService) CreateHTTPCachePolicy(ctx context.Context, req *pb.CreateHTTPCachePolicyRequest) (*pb.CreateHTTPCachePolicyResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
policyId, err := models.SharedHTTPCachePolicyDAO.CreateCachePolicy(req.IsOn, req.Name, req.Description, req.CapacityJSON, req.MaxKeys, req.MaxSizeJSON, req.Type, req.OptionsJSON)
if err != nil {
return nil, err
}
return &pb.CreateHTTPCachePolicyResponse{CachePolicyId: policyId}, nil
}
// 修改缓存策略
func (this *HTTPCachePolicyService) UpdateHTTPCachePolicy(ctx context.Context, req *pb.UpdateHTTPCachePolicyRequest) (*pb.RPCUpdateSuccess, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
err = models.SharedHTTPCachePolicyDAO.UpdateCachePolicy(req.CachePolicyId, req.IsOn, req.Name, req.Description, req.CapacityJSON, req.MaxKeys, req.MaxSizeJSON, req.Type, req.OptionsJSON)
if err != nil {
return nil, err
}
return rpcutils.RPCUpdateSuccess()
}
// 删除缓存策略
func (this *HTTPCachePolicyService) DeleteHTTPCachePolicy(ctx context.Context, req *pb.DeleteHTTPCachePolicyRequest) (*pb.RPCDeleteSuccess, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
err = models.SharedHTTPCachePolicyDAO.DisableHTTPCachePolicy(req.CachePolicyId)
if err != nil {
return nil, err
}
return rpcutils.RPCDeleteSuccess()
}
// 计算缓存策略数量
func (this *HTTPCachePolicyService) CountAllEnabledHTTPCachePolicies(ctx context.Context, req *pb.CountAllEnabledHTTPCachePoliciesRequest) (*pb.CountAllEnabledHTTPCachePoliciesResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
count, err := models.SharedHTTPCachePolicyDAO.CountAllEnabledHTTPCachePolicies()
if err != nil {
return nil, err
}
return &pb.CountAllEnabledHTTPCachePoliciesResponse{Count: count}, nil
}
// 列出单页的缓存策略
func (this *HTTPCachePolicyService) ListEnabledHTTPCachePolicies(ctx context.Context, req *pb.ListEnabledHTTPCachePoliciesRequest) (*pb.ListEnabledHTTPCachePoliciesResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
cachePolicies, err := models.SharedHTTPCachePolicyDAO.ListEnabledHTTPCachePolicies(req.Offset, req.Size)
if err != nil {
return nil, err
}
cachePoliciesJSON, err := json.Marshal(cachePolicies)
if err != nil {
return nil, err
}
return &pb.ListEnabledHTTPCachePoliciesResponse{CachePoliciesJSON: cachePoliciesJSON}, nil
}
// 查找单个缓存策略配置
func (this *HTTPCachePolicyService) FindEnabledHTTPCachePolicyConfig(ctx context.Context, req *pb.FindEnabledHTTPCachePolicyConfigRequest) (*pb.FindEnabledHTTPCachePolicyConfigResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
cachePolicy, err := models.SharedHTTPCachePolicyDAO.ComposeCachePolicy(req.CachePolicyId)
if err != nil {
return nil, err
}
cachePolicyJSON, err := json.Marshal(cachePolicy)
return &pb.FindEnabledHTTPCachePolicyConfigResponse{CachePolicyJSON: cachePolicyJSON}, nil
}

View File

@@ -585,7 +585,7 @@ func (this *ServerService) FindAndInitServerWebConfig(ctx context.Context, req *
}
// 计算使用某个SSL证书的服务数量
func (this *ServerService) CountServersWithSSLCertId(ctx context.Context, req *pb.CountServersWithSSLCertIdRequest) (*pb.CountServersWithSSLCertIdResponse, error) {
func (this *ServerService) CountAllEnabledServersWithSSLCertId(ctx context.Context, req *pb.CountAllEnabledServersWithSSLCertIdRequest) (*pb.CountAllEnabledServersWithSSLCertIdResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
@@ -598,19 +598,19 @@ func (this *ServerService) CountServersWithSSLCertId(ctx context.Context, req *p
}
if len(policyIds) == 0 {
return &pb.CountServersWithSSLCertIdResponse{Count: 0}, nil
return &pb.CountAllEnabledServersWithSSLCertIdResponse{Count: 0}, nil
}
count, err := models.SharedServerDAO.CountServersWithSSLPolicyIds(policyIds)
count, err := models.SharedServerDAO.CountAllEnabledServersWithSSLPolicyIds(policyIds)
if err != nil {
return nil, err
}
return &pb.CountServersWithSSLCertIdResponse{Count: count}, nil
return &pb.CountAllEnabledServersWithSSLCertIdResponse{Count: count}, nil
}
// 查找使用某个SSL证书的所有服务
func (this *ServerService) FindAllServersWithSSLCertId(ctx context.Context, req *pb.FindAllServersWithSSLCertIdRequest) (*pb.FindAllServersWithSSLCertIdResponse, error) {
func (this *ServerService) FindAllEnabledServersWithSSLCertId(ctx context.Context, req *pb.FindAllEnabledServersWithSSLCertIdRequest) (*pb.FindAllEnabledServersWithSSLCertIdResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
@@ -622,10 +622,10 @@ func (this *ServerService) FindAllServersWithSSLCertId(ctx context.Context, req
return nil, err
}
if len(policyIds) == 0 {
return &pb.FindAllServersWithSSLCertIdResponse{Servers: nil}, nil
return &pb.FindAllEnabledServersWithSSLCertIdResponse{Servers: nil}, nil
}
servers, err := models.SharedServerDAO.FindAllServersWithSSLPolicyIds(policyIds)
servers, err := models.SharedServerDAO.FindAllEnabledServersWithSSLPolicyIds(policyIds)
if err != nil {
return nil, err
}
@@ -638,5 +638,58 @@ func (this *ServerService) FindAllServersWithSSLCertId(ctx context.Context, req
Type: server.Type,
})
}
return &pb.FindAllServersWithSSLCertIdResponse{Servers: result}, nil
return &pb.FindAllEnabledServersWithSSLCertIdResponse{Servers: result}, nil
}
// 计算使用某个缓存策略的服务数量
func (this *ServerService) CountAllEnabledServersWithCachePolicyId(ctx context.Context, req *pb.CountAllEnabledServersWithCachePolicyIdRequest) (*pb.CountAllEnabledServersWithCachePolicyIdResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithCachePolicyId(req.CachePolicyId)
if err != nil {
return nil, err
}
if len(webIds) == 0 {
return &pb.CountAllEnabledServersWithCachePolicyIdResponse{Count: 0}, nil
}
countServers, err := models.SharedServerDAO.CountEnabledServersWithWebIds(webIds)
if err != nil {
return nil, err
}
return &pb.CountAllEnabledServersWithCachePolicyIdResponse{Count: countServers}, nil
}
// 查找使用某个缓存策略的所有服务
func (this *ServerService) FindAllEnabledServersWithCachePolicyId(ctx context.Context, req *pb.FindAllEnabledServersWithCachePolicyIdRequest) (*pb.FindAllEnabledServersWithCachePolicyIdResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithCachePolicyId(req.CachePolicyId)
if err != nil {
return nil, err
}
if len(webIds) == 0 {
return &pb.FindAllEnabledServersWithCachePolicyIdResponse{Servers: nil}, nil
}
servers, err := models.SharedServerDAO.FindAllEnabledServersWithWebIds(webIds)
result := []*pb.Server{}
for _, server := range servers {
result = append(result, &pb.Server{
Id: int64(server.Id),
Name: server.Name,
IsOn: server.IsOn == 1,
Type: server.Type,
})
}
return &pb.FindAllEnabledServersWithCachePolicyIdResponse{Servers: result}, nil
}

View File

@@ -0,0 +1,43 @@
package services
import (
"context"
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
)
type SysSettingService struct {
}
// 更改配置
func (this *SysSettingService) UpdateSysSetting(ctx context.Context, req *pb.UpdateSysSettingRequest) (*pb.RPCUpdateSuccess, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
err = models.SharedSysSettingDAO.UpdateSetting(req.Code, req.ValueJSON)
if err != nil {
return nil, err
}
return rpcutils.RPCUpdateSuccess()
}
// 读取配置
func (this *SysSettingService) ReadSysSetting(ctx context.Context, req *pb.ReadSysSettingRequest) (*pb.ReadSysSettingResponse, error) {
// 校验请求
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
if err != nil {
return nil, err
}
valueJSON, err := models.SharedSysSettingDAO.ReadSetting(req.Code)
if err != nil {
return nil, err
}
return &pb.ReadSysSettingResponse{ValueJSON: valueJSON}, nil
}