Skip to content

Commit b50b0a5

Browse files
committed
refactor aws adjustEndpointAndAaaaIfNeeded
Signed-off-by: u-kai <76635578+u-kai@users.noreply.github.com>
1 parent 7fda240 commit b50b0a5

File tree

1 file changed

+77
-2
lines changed

1 file changed

+77
-2
lines changed

provider/aws/aws.go

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -835,8 +835,83 @@ func (p *AWSProvider) AdjustEndpoints(endpoints []*endpoint.Endpoint) ([]*endpoi
835835
}
836836

837837
func (p *AWSProvider) adjustEndpointAndNewAaaaIfNeeded(ep *endpoint.Endpoint) *endpoint.Endpoint {
838-
// TODO: implement new logic here
839-
return p.oldAdjustEndpointAndNewAaaaIfNeeded(ep)
838+
setAliasConf := func(ep *endpoint.Endpoint) {
839+
if ep.RecordTTL.IsConfigured() {
840+
log.Debugf("Modifying endpoint: %v, setting ttl=%v", ep, defaultTTL)
841+
ep.RecordTTL = defaultTTL
842+
}
843+
if prop, ok := ep.GetProviderSpecificProperty(providerSpecificEvaluateTargetHealth); ok {
844+
if prop != "true" && prop != "false" {
845+
ep.SetProviderSpecificProperty(providerSpecificEvaluateTargetHealth, "false")
846+
}
847+
} else {
848+
ep.SetProviderSpecificProperty(providerSpecificEvaluateTargetHealth, strconv.FormatBool(p.evaluateTargetHealth))
849+
}
850+
}
851+
cnameAliasCase := func(ep *endpoint.Endpoint) *endpoint.Endpoint {
852+
setAliasConf(ep)
853+
result := &endpoint.Endpoint{
854+
DNSName: ep.DNSName,
855+
Targets: ep.Targets,
856+
RecordType: endpoint.RecordTypeAAAA,
857+
RecordTTL: ep.RecordTTL,
858+
Labels: ep.Labels,
859+
ProviderSpecific: ep.ProviderSpecific,
860+
SetIdentifier: ep.SetIdentifier,
861+
}
862+
ep.RecordType = endpoint.RecordTypeA
863+
return result
864+
}
865+
866+
var additionalAAAA *endpoint.Endpoint
867+
switch ep.RecordType {
868+
case endpoint.RecordTypeA, endpoint.RecordTypeAAAA:
869+
aliasString, ok := ep.GetProviderSpecificProperty(providerSpecificAlias)
870+
switch aliasString {
871+
case "true":
872+
setAliasConf(ep)
873+
case "":
874+
if ok {
875+
ep.DeleteProviderSpecificProperty(providerSpecificAlias)
876+
}
877+
ep.DeleteProviderSpecificProperty(providerSpecificEvaluateTargetHealth)
878+
default:
879+
ep.DeleteProviderSpecificProperty(providerSpecificAlias)
880+
ep.DeleteProviderSpecificProperty(providerSpecificEvaluateTargetHealth)
881+
}
882+
case endpoint.RecordTypeCNAME:
883+
aliasString, _ := ep.GetProviderSpecificProperty(providerSpecificAlias)
884+
switch aliasString {
885+
case "true":
886+
additionalAAAA = cnameAliasCase(ep)
887+
case "":
888+
alias := useAlias(ep, p.preferCNAME)
889+
log.Debugf("Modifying endpoint: %v, setting %s=%v", ep, providerSpecificAlias, alias)
890+
ep.SetProviderSpecificProperty(providerSpecificAlias, strconv.FormatBool(alias))
891+
if alias {
892+
additionalAAAA = cnameAliasCase(ep)
893+
} else {
894+
ep.DeleteProviderSpecificProperty(providerSpecificEvaluateTargetHealth)
895+
}
896+
default:
897+
ep.SetProviderSpecificProperty(providerSpecificAlias, "false")
898+
ep.DeleteProviderSpecificProperty(providerSpecificEvaluateTargetHealth)
899+
}
900+
default:
901+
// TODO fix
902+
aliasString, _ := ep.GetProviderSpecificProperty(providerSpecificAlias)
903+
switch aliasString {
904+
case "true":
905+
ep.DeleteProviderSpecificProperty(providerSpecificAlias)
906+
setAliasConf(ep)
907+
default:
908+
ep.DeleteProviderSpecificProperty(providerSpecificAlias)
909+
ep.DeleteProviderSpecificProperty(providerSpecificEvaluateTargetHealth)
910+
}
911+
}
912+
913+
adjustGeoProximityLocationEndpoint(ep)
914+
return additionalAAAA
840915
}
841916

842917
func (p *AWSProvider) oldAdjustEndpointAndNewAaaaIfNeeded(ep *endpoint.Endpoint) *endpoint.Endpoint {

0 commit comments

Comments
 (0)