Skip to content

Commit 326f08e

Browse files
authored
Merge pull request #1741 from ioito/automated-cherry-pick-of-#1738-upstream-release-4.0.2
Automated cherry pick of #1738: fix(aws): dns record create with id
2 parents b488760 + e78fd5d commit 326f08e

File tree

3 files changed

+32
-32
lines changed

3 files changed

+32
-32
lines changed

pkg/multicloud/aws/dnsrecord.go

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,18 @@ type SAliasTarget struct {
3333
HostedZoneId string `xml:"HostedZoneId"`
3434
}
3535

36+
type SResourceRecord struct {
37+
Value string `xml:"Value"`
38+
}
39+
3640
type SDnsRecord struct {
3741
multicloud.SDnsRecordBase
3842
zone *SDnsZone
3943

40-
Name string `xml:"Name"`
41-
Type string `xml:"Type"`
42-
TTL int64 `xml:"TTL"`
43-
ResourceRecords []struct {
44-
Value string `xml:"Value"`
45-
} `xml:"ResourceRecords>ResourceRecord"`
44+
Name string `xml:"Name"`
45+
Type string `xml:"Type"`
46+
TTL int64 `xml:"TTL"`
47+
ResourceRecords []SResourceRecord `xml:"ResourceRecords>ResourceRecord"`
4648

4749
AliasTarget SAliasTarget `xml:"AliasTarget"`
4850
GeoLocation GeoLocationDetails `xml:"GeoLocation"`
@@ -113,14 +115,13 @@ func (self *SDnsRecord) Delete() error {
113115
for _, r := range self.ResourceRecords {
114116
values = append(values, r.Value)
115117
}
116-
_, err := self.zone.client.ChangeResourceRecordSets("DELETE", self.zone.Id, self.Name, self.SetIdentifier, cloudprovider.DnsRecord{
118+
return self.zone.client.ChangeResourceRecordSets("DELETE", self.zone.Id, self.Name, self.SetIdentifier, cloudprovider.DnsRecord{
117119
DnsType: cloudprovider.TDnsType(self.Type),
118120
Ttl: self.TTL,
119121
DnsValue: strings.Join(values, "\n"),
120122
PolicyType: self.GetPolicyType(),
121123
PolicyValue: self.GetPolicyValue(),
122124
})
123-
return err
124125
}
125126

126127
func (self *SDnsRecord) GetDnsType() cloudprovider.TDnsType {
@@ -199,7 +200,7 @@ func (self *SDnsRecord) GetMxPriority() int64 {
199200
return 0
200201
}
201202

202-
func (self *SAwsClient) ChangeResourceRecordSets(action, zoneId, name, id string, opts cloudprovider.DnsRecord) (string, error) {
203+
func (self *SAwsClient) ChangeResourceRecordSets(action, zoneId, name, id string, opts cloudprovider.DnsRecord) error {
203204
record := &SDnsRecord{Name: id, Type: string(opts.DnsType)}
204205
params := map[string]string{
205206
"Id": zoneId,
@@ -234,7 +235,7 @@ func (self *SAwsClient) ChangeResourceRecordSets(action, zoneId, name, id string
234235
case cloudprovider.DnsPolicyTypeByGeoLocation:
235236
locations, err := self.ListGeoLocations()
236237
if err != nil {
237-
return "", errors.Wrapf(err, "ListGeoLocations")
238+
return errors.Wrapf(err, "ListGeoLocations")
238239
}
239240
find := false
240241
for i := range locations {
@@ -252,27 +253,18 @@ func (self *SAwsClient) ChangeResourceRecordSets(action, zoneId, name, id string
252253
}
253254
}
254255
if !find {
255-
return "", errors.Errorf("invalid policy value %s %s", opts.PolicyType, opts.PolicyValue)
256+
return errors.Errorf("invalid policy value %s %s", opts.PolicyType, opts.PolicyValue)
256257
}
257258
case cloudprovider.DnsPolicyTypeFailover:
258-
return "", cloudprovider.ErrNotImplemented
259+
return cloudprovider.ErrNotImplemented
259260
case cloudprovider.DnsPolicyTypeWeighted:
260261
params["ChangeBatch.Changes.0.Change.ResourceRecordSet.Weight"] = string(opts.PolicyValue)
261262
case cloudprovider.DnsPolicyTypeMultiValueAnswer:
262263
params["ChangeBatch.Changes.0.Change.ResourceRecordSet.MultiValueAnswer"] = "true"
263264
case cloudprovider.DnsPolicyTypeLatency:
264265
params["ChangeBatch.Changes.0.Change.ResourceRecordSet.Region"] = string(opts.PolicyValue)
265266
}
266-
ret := struct {
267-
ChangeInfo struct {
268-
Id string `xml:"Id"`
269-
} `xml:"ChangeInfo"`
270-
}{}
271-
err := self.dnsRequest("ChangeResourceRecordSets", params, &ret)
272-
if err != nil {
273-
return "", err
274-
}
275-
return record.GetGlobalId(), nil
267+
return self.dnsRequest("ChangeResourceRecordSets", params, nil)
276268
}
277269

278270
// trafficpolicy 信息
@@ -339,6 +331,5 @@ func (self *SDnsRecord) Disable() error {
339331
}
340332

341333
func (self *SDnsRecord) Update(opts *cloudprovider.DnsRecord) error {
342-
_, err := self.zone.client.ChangeResourceRecordSets("UPSERT", self.zone.Id, self.Name, self.SetIdentifier, *opts)
343-
return err
334+
return self.zone.client.ChangeResourceRecordSets("UPSERT", self.zone.Id, self.Name, self.SetIdentifier, *opts)
344335
}

pkg/multicloud/aws/dnszone.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,20 @@ func (self *SDnsZone) AddDnsRecord(opts *cloudprovider.DnsRecord) (string, error
340340
if len(opts.DnsName) > 1 && opts.DnsName != "@" {
341341
name = opts.DnsName + "." + self.Name
342342
}
343-
id := stringutils.UUID4()
344-
return self.client.ChangeResourceRecordSets("CREATE", self.Id, name, id, *opts)
343+
id := ""
344+
if opts.PolicyType != cloudprovider.DnsPolicyTypeSimple {
345+
id = stringutils.UUID4()
346+
}
347+
err := self.client.ChangeResourceRecordSets("CREATE", self.Id, name, id, *opts)
348+
if err != nil {
349+
return "", errors.Wrapf(err, "ChangeResourceRecordSets")
350+
}
351+
record := &SDnsRecord{Name: name, Type: string(opts.DnsType), SetIdentifier: id}
352+
record.ResourceRecords = []SResourceRecord{
353+
{Value: opts.DnsValue},
354+
}
355+
record.zone = self
356+
return record.GetGlobalId(), nil
345357
}
346358

347359
func (self *SDnsZone) GetDnsProductType() cloudprovider.TDnsProductType {

pkg/multicloud/aws/shell/dnszone.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,7 @@ func init() {
142142
opts.DnsType = cloudprovider.TDnsType(args.TYPE)
143143
opts.DnsValue = args.VALUE
144144
opts.Ttl = args.TTL
145-
_, err := cli.GetClient().ChangeResourceRecordSets("CREATE", args.HOSTEDZONEID, args.NAME, args.Id, opts)
146-
return err
145+
return cli.GetClient().ChangeResourceRecordSets("CREATE", args.HOSTEDZONEID, args.NAME, args.Id, opts)
147146
})
148147

149148
type DnsRecordSetupdateOptions struct {
@@ -160,8 +159,7 @@ func init() {
160159
opts.DnsType = cloudprovider.TDnsType(args.TYPE)
161160
opts.DnsValue = args.VALUE
162161
opts.Ttl = args.TTL
163-
_, err := cli.GetClient().ChangeResourceRecordSets("UPSERT", args.HOSTEDZONEID, args.NAME, args.Identify, opts)
164-
return err
162+
return cli.GetClient().ChangeResourceRecordSets("UPSERT", args.HOSTEDZONEID, args.NAME, args.Identify, opts)
165163
})
166164

167165
type DnsRecordDeleteOptions struct {
@@ -170,8 +168,7 @@ func init() {
170168
cloudprovider.DnsRecord
171169
}
172170
shellutils.R(&DnsRecordDeleteOptions{}, "dns-record-delete", "delete dnsrecordset", func(cli *aws.SRegion, args *DnsRecordDeleteOptions) error {
173-
_, err := cli.GetClient().ChangeResourceRecordSets("DELETE", args.HOSTEDZONEID, args.DnsName, args.ID, args.DnsRecord)
174-
return err
171+
return cli.GetClient().ChangeResourceRecordSets("DELETE", args.HOSTEDZONEID, args.DnsName, args.ID, args.DnsRecord)
175172
})
176173

177174
}

0 commit comments

Comments
 (0)