in pkg/provider/alibaba/alb/rule.go [166:247]
func (m *ALBProvider) updateALBRuleAttribute(ctx context.Context, resLR *alb.ListenerRule, sdkLR *albsdk.Rule, judger ListenerRuleUpdateAnalyzer) (*albsdk.UpdateRuleAttributeResponse, error) {
traceID := ctx.Value(util.TraceID)
ruleReq := albsdk.CreateUpdateRuleAttributeRequest()
ruleReq.RuleId = sdkLR.RuleId
if judger.ruleNameNeedUpdate {
m.logger.V(util.MgrLogLevel).Info("RuleName update",
"res", resLR.Spec.RuleName,
"sdk", sdkLR.RuleName,
"ruleID", sdkLR.RuleId,
"traceID", traceID)
ruleReq.RuleName = resLR.Spec.RuleName
}
if judger.ruleActionsNeedUpdate {
m.logger.V(util.MgrLogLevel).Info("Actions update",
"res", resLR.Spec.RuleActions,
"sdk", sdkLR.RuleActions,
"ruleID", sdkLR.RuleId,
"traceID", traceID)
actions, err := transModelActionsToSDKUpdateRule(resLR.Spec.RuleActions)
if err != nil {
return nil, err
}
ruleReq.RuleActions = actions
}
if judger.ruleConditionsNeedUpdate {
m.logger.V(util.MgrLogLevel).Info("Conditions update",
"res", resLR.Spec.RuleConditions,
"sdk", sdkLR.RuleConditions,
"ruleID", sdkLR.RuleId,
"traceID", traceID)
ruleReq.RuleConditions = transSDKConditionsToUpdateRule(resLR.Spec.RuleConditions)
}
if judger.priorityNeedUpdate {
m.logger.V(util.MgrLogLevel).Info("Priority update",
"res", resLR.Spec.Priority,
"sdk", sdkLR.Priority,
"ruleID", sdkLR.RuleId,
"traceID", traceID)
ruleReq.Priority = requests.NewInteger(resLR.Spec.Priority)
}
var updateRuleResp *albsdk.UpdateRuleAttributeResponse
if err := util.RetryImmediateOnError(m.waitLSExistencePollInterval, m.waitLSExistenceTimeout, isVipStatusNotSupportError, func() error {
startTime := time.Now()
m.logger.V(util.MgrLogLevel).Info("updating rule attribute",
"stackID", resLR.Stack().StackID(),
"resourceID", resLR.ID(),
"traceID", traceID,
"ruleID", sdkLR.RuleId,
"startTime", startTime,
util.Action, util.UpdateALBRuleAttribute)
var err error
updateRuleResp, err = m.auth.ALB.UpdateRuleAttribute(ruleReq)
if err != nil {
m.logger.V(util.MgrLogLevel).Info("updating rule attribute",
"stackID", resLR.Stack().StackID(),
"resourceID", resLR.ID(),
"traceID", traceID,
"ruleID", sdkLR.RuleId,
"error", err.Error(),
"requestID", updateRuleResp.RequestId,
"startTime", startTime,
util.Action, util.UpdateALBRuleAttribute)
return err
}
m.logger.V(util.MgrLogLevel).Info("updated rule attribute",
"stackID", resLR.Stack().StackID(),
"resourceID", resLR.ID(),
"traceID", traceID,
"ruleID", sdkLR.RuleId,
"requestID", updateRuleResp.RequestId,
"elapsedTime", time.Since(startTime).Milliseconds(),
util.Action, util.UpdateALBRuleAttribute)
return nil
}); err != nil {
return nil, errors.Wrap(err, "failed to update listener rule")
}
return updateRuleResp, nil
}