Skip to content

Commit 5571746

Browse files
committed
Add support for NS records in the Linode provider
1 parent d7cec32 commit 5571746

File tree

2 files changed

+21
-10
lines changed

2 files changed

+21
-10
lines changed

provider/linode/linode.go

+11-4
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,13 @@ func (p *LinodeProvider) submitChanges(ctx context.Context, changes LinodeChange
241241
return nil
242242
}
243243

244-
func getWeight() *int {
244+
func getWeight(recordType linodego.DomainRecordType) *int {
245245
weight := 1
246+
247+
// NS records do not support having weight
248+
if recordType == linodego.RecordTypeNS {
249+
weight = 0
250+
}
246251
return &weight
247252
}
248253

@@ -331,7 +336,7 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
331336
Target: target,
332337
Name: getStrippedRecordName(zone, ep),
333338
Type: recordType,
334-
Weight: getWeight(),
339+
Weight: getWeight(recordType),
335340
Port: getPort(),
336341
Priority: getPriority(),
337342
TTLSec: int(ep.RecordTTL),
@@ -395,7 +400,7 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
395400
Target: target,
396401
Name: getStrippedRecordName(zone, ep),
397402
Type: recordType,
398-
Weight: getWeight(),
403+
Weight: getWeight(recordType),
399404
Port: getPort(),
400405
Priority: getPriority(),
401406
TTLSec: int(ep.RecordTTL),
@@ -419,7 +424,7 @@ func (p *LinodeProvider) ApplyChanges(ctx context.Context, changes *plan.Changes
419424
Target: target,
420425
Name: getStrippedRecordName(zone, ep),
421426
Type: recordType,
422-
Weight: getWeight(),
427+
Weight: getWeight(recordType),
423428
Port: getPort(),
424429
Priority: getPriority(),
425430
TTLSec: int(ep.RecordTTL),
@@ -515,6 +520,8 @@ func convertRecordType(recordType string) (linodego.DomainRecordType, error) {
515520
return linodego.RecordTypeTXT, nil
516521
case "SRV":
517522
return linodego.RecordTypeSRV, nil
523+
case "NS":
524+
return linodego.RecordTypeNS, nil
518525
default:
519526
return "", fmt.Errorf("invalid Record Type: %s", recordType)
520527
}

provider/linode/linode_test.go

+10-6
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ func TestLinodeConvertRecordType(t *testing.T) {
135135
require.NoError(t, err)
136136
assert.Equal(t, linodego.RecordTypeSRV, record)
137137

138+
record, err = convertRecordType("NS")
139+
require.NoError(t, err)
140+
assert.Equal(t, linodego.RecordTypeNS, record)
141+
138142
_, err = convertRecordType("INVALID")
139143
require.Error(t, err)
140144
}
@@ -333,7 +337,7 @@ func TestLinodeApplyChanges(t *testing.T) {
333337
11,
334338
linodego.DomainRecordUpdateOptions{
335339
Type: "A", Name: "", Target: "targetFoo",
336-
Priority: getPriority(), Weight: getWeight(), Port: getPort(), TTLSec: 300,
340+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(), TTLSec: 300,
337341
},
338342
).Return(&linodego.DomainRecord{}, nil).Once()
339343

@@ -343,7 +347,7 @@ func TestLinodeApplyChanges(t *testing.T) {
343347
2,
344348
linodego.DomainRecordCreateOptions{
345349
Type: "A", Name: "create", Target: "targetBar",
346-
Priority: getPriority(), Weight: getWeight(), Port: getPort(), TTLSec: 0,
350+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(), TTLSec: 0,
347351
},
348352
).Return(&linodego.DomainRecord{}, nil).Once()
349353

@@ -353,7 +357,7 @@ func TestLinodeApplyChanges(t *testing.T) {
353357
2,
354358
linodego.DomainRecordCreateOptions{
355359
Type: "A", Name: "", Target: "targetBar",
356-
Priority: getPriority(), Weight: getWeight(), Port: getPort(), TTLSec: 0,
360+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(), TTLSec: 0,
357361
},
358362
).Return(&linodego.DomainRecord{}, nil).Once()
359363

@@ -423,7 +427,7 @@ func TestLinodeApplyChangesTargetAdded(t *testing.T) {
423427
11,
424428
linodego.DomainRecordUpdateOptions{
425429
Type: "A", Name: "", Target: "targetA",
426-
Priority: getPriority(), Weight: getWeight(), Port: getPort(),
430+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(),
427431
},
428432
).Return(&linodego.DomainRecord{}, nil).Once()
429433

@@ -433,7 +437,7 @@ func TestLinodeApplyChangesTargetAdded(t *testing.T) {
433437
1,
434438
linodego.DomainRecordCreateOptions{
435439
Type: "A", Name: "", Target: "targetB",
436-
Priority: getPriority(), Weight: getWeight(), Port: getPort(),
440+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(),
437441
},
438442
).Return(&linodego.DomainRecord{}, nil).Once()
439443

@@ -482,7 +486,7 @@ func TestLinodeApplyChangesTargetRemoved(t *testing.T) {
482486
12,
483487
linodego.DomainRecordUpdateOptions{
484488
Type: "A", Name: "", Target: "targetB",
485-
Priority: getPriority(), Weight: getWeight(), Port: getPort(),
489+
Priority: getPriority(), Weight: getWeight(linodego.RecordTypeA), Port: getPort(),
486490
},
487491
).Return(&linodego.DomainRecord{}, nil).Once()
488492

0 commit comments

Comments
 (0)