Skip to content

Commit 838d86b

Browse files
committed
add support for override_address_records for ALIAS records
1 parent 41dd13d commit 838d86b

5 files changed

+202
-2
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 2.4.4 (October 10, 2024)
2+
BUGFIX
3+
* Adds support for setting override_address_records for ALIAS records
4+
15
## 2.4.3 (October 2, 2024)
26
* Modified target regex for redirects to align with server
37

ns1/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
)
2020

2121
var (
22-
clientVersion = "2.4.3"
22+
clientVersion = "2.4.4"
2323
providerUserAgent = "tf-ns1" + "/" + clientVersion
2424
defaultRetryMax = 3
2525
)

ns1/data_source_record.go

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ func dataSourceRecord() *schema.Resource {
2323
Type: schema.TypeInt,
2424
Computed: true,
2525
},
26+
"override_address_records": {
27+
Type: schema.TypeBool,
28+
Computed: true,
29+
},
2630
"override_ttl": {
2731
Type: schema.TypeBool,
2832
Computed: true,

ns1/resource_record.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ func recordResource() *schema.Resource {
7575
Optional: true,
7676
Computed: true,
7777
},
78+
"override_address_records": {
79+
Type: schema.TypeBool,
80+
Optional: true,
81+
},
7882
"override_ttl": {
7983
Type: schema.TypeBool,
8084
Optional: true,
@@ -242,10 +246,19 @@ func recordToResourceData(d *schema.ResourceData, r *dns.Record) error {
242246
d.Set("blocked_tags", terraformBlockedTags)
243247
}
244248

249+
if r.Type == "ALIAS" {
250+
d.Set("override_address_records", false)
251+
if r.OverrideAddressRecords != nil {
252+
err := d.Set("override_address_records", *r.OverrideAddressRecords)
253+
if err != nil {
254+
return fmt.Errorf("[DEBUG] Error setting override_address_records for: %s, error: %#v", r.Domain, err)
255+
}
256+
}
257+
}
258+
245259
d.Set("override_ttl", nil)
246260
if r.Type == "ALIAS" && r.OverrideTTL != nil {
247261
err := d.Set("override_ttl", *r.OverrideTTL)
248-
249262
if err != nil {
250263
return fmt.Errorf("[DEBUG] Error setting override_ttl for: %s, error: %#v", r.Domain, err)
251264
}
@@ -407,6 +420,9 @@ func resourceDataToRecord(r *dns.Record, d *schema.ResourceData) error {
407420
}
408421

409422
if r.Type == "ALIAS" {
423+
Override_AddressRecords := d.Get("override_address_records").(bool)
424+
r.OverrideAddressRecords = &Override_AddressRecords
425+
410426
Override_TTL := d.Get("override_ttl").(bool)
411427
r.OverrideTTL = &Override_TTL
412428
}

ns1/resource_record_test.go

+176
Original file line numberDiff line numberDiff line change
@@ -861,6 +861,153 @@ func TestAccRecord_OverrideTTLTrueToFalse(t *testing.T) {
861861
})
862862
}
863863

864+
func TestAccRecord_OverrideAddressRecordsNilToTrue(t *testing.T) {
865+
var record dns.Record
866+
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
867+
868+
tfFileBasicAlias := testAccRecordBasicALIAS(rString)
869+
tfFileOverrideAddressRecordsAliasTrue := testAccRecordBasicALIASOverrideAddressRecords(rString, true)
870+
871+
resource.Test(t, resource.TestCase{
872+
PreCheck: func() { testAccPreCheck(t) },
873+
Providers: testAccProviders,
874+
CheckDestroy: testAccCheckRecordDestroy,
875+
Steps: []resource.TestStep{
876+
// Create an ALIAS record with override_address_records not set
877+
{
878+
Config: tfFileBasicAlias,
879+
Check: resource.ComposeTestCheckFunc(
880+
testAccCheckRecordExists("ns1_record.it", &record),
881+
testAccCheckRecordOverrideAddressRecords(&record, false),
882+
),
883+
},
884+
// Plan again to detect "loop" conditions
885+
{
886+
Config: tfFileBasicAlias,
887+
PlanOnly: true,
888+
ExpectNonEmptyPlan: false,
889+
},
890+
// Change override_address_records to true Plan and Apply
891+
{
892+
Config: tfFileOverrideAddressRecordsAliasTrue,
893+
PlanOnly: true,
894+
ExpectNonEmptyPlan: true,
895+
},
896+
{
897+
Config: tfFileOverrideAddressRecordsAliasTrue,
898+
Check: resource.ComposeTestCheckFunc(
899+
testAccCheckRecordExists("ns1_record.it", &record),
900+
testAccCheckRecordOverrideAddressRecords(&record, true),
901+
),
902+
},
903+
// Plan again to detect "loop" conditions
904+
{
905+
Config: tfFileOverrideAddressRecordsAliasTrue,
906+
PlanOnly: true,
907+
ExpectNonEmptyPlan: false,
908+
},
909+
},
910+
})
911+
}
912+
913+
func TestAccRecord_OverrideAddressRecordsTrueToNil(t *testing.T) {
914+
var record dns.Record
915+
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
916+
917+
tfFileBasicAlias := testAccRecordBasicALIAS(rString)
918+
tfFileOverrideAddressRecordsAliasTrue := testAccRecordBasicALIASOverrideAddressRecords(rString, true)
919+
920+
resource.Test(t, resource.TestCase{
921+
PreCheck: func() { testAccPreCheck(t) },
922+
Providers: testAccProviders,
923+
CheckDestroy: testAccCheckRecordDestroy,
924+
Steps: []resource.TestStep{
925+
// Create an ALIAS record with override_address_records true
926+
{
927+
Config: tfFileOverrideAddressRecordsAliasTrue,
928+
Check: resource.ComposeTestCheckFunc(
929+
testAccCheckRecordExists("ns1_record.it", &record),
930+
testAccCheckRecordOverrideAddressRecords(&record, true),
931+
),
932+
},
933+
// Plan again to detect "loop" conditions
934+
{
935+
Config: tfFileOverrideAddressRecordsAliasTrue,
936+
PlanOnly: true,
937+
ExpectNonEmptyPlan: false,
938+
},
939+
{
940+
Config: tfFileBasicAlias,
941+
PlanOnly: true,
942+
ExpectNonEmptyPlan: true,
943+
},
944+
// Change override_address_records from true setting to "null" results in false
945+
{
946+
Config: tfFileBasicAlias,
947+
Check: resource.ComposeTestCheckFunc(
948+
testAccCheckRecordExists("ns1_record.it", &record),
949+
testAccCheckRecordOverrideAddressRecords(&record, false),
950+
),
951+
},
952+
// Plan again to detect "loop" conditions
953+
{
954+
Config: tfFileBasicAlias,
955+
PlanOnly: true,
956+
ExpectNonEmptyPlan: false,
957+
},
958+
},
959+
})
960+
}
961+
962+
func TestAccRecord_OverrideAddressRecordsTrueToFalse(t *testing.T) {
963+
var record dns.Record
964+
rString := acctest.RandStringFromCharSet(15, acctest.CharSetAlphaNum)
965+
966+
tfFileOverrideAddressRecordsAliasTrue := testAccRecordBasicALIASOverrideAddressRecords(rString, true)
967+
tfFileDoNotOverrideAddressRecordsAliasFalse := testAccRecordBasicALIASOverrideAddressRecords(rString, false)
968+
969+
resource.Test(t, resource.TestCase{
970+
PreCheck: func() { testAccPreCheck(t) },
971+
Providers: testAccProviders,
972+
CheckDestroy: testAccCheckRecordDestroy,
973+
Steps: []resource.TestStep{
974+
// Create an ALIAS record with override_address_records true
975+
{
976+
Config: tfFileOverrideAddressRecordsAliasTrue,
977+
Check: resource.ComposeTestCheckFunc(
978+
testAccCheckRecordExists("ns1_record.it", &record),
979+
testAccCheckRecordOverrideAddressRecords(&record, true),
980+
),
981+
},
982+
// Plan again to detect "loop" conditions
983+
{
984+
Config: tfFileOverrideAddressRecordsAliasTrue,
985+
PlanOnly: true,
986+
ExpectNonEmptyPlan: false,
987+
},
988+
// Change override_address_records to false setting to false Plan and Apply
989+
{
990+
Config: tfFileDoNotOverrideAddressRecordsAliasFalse,
991+
ExpectNonEmptyPlan: true,
992+
PlanOnly: true,
993+
},
994+
{
995+
Config: tfFileDoNotOverrideAddressRecordsAliasFalse,
996+
Check: resource.ComposeTestCheckFunc(
997+
testAccCheckRecordExists("ns1_record.it", &record),
998+
testAccCheckRecordOverrideAddressRecords(&record, false),
999+
),
1000+
},
1001+
// Plan again to detect "loop" conditions
1002+
{
1003+
Config: tfFileDoNotOverrideAddressRecordsAliasFalse,
1004+
PlanOnly: true,
1005+
ExpectNonEmptyPlan: false,
1006+
},
1007+
},
1008+
})
1009+
}
1010+
8641011
func TestAccRecord_Link(t *testing.T) {
8651012
var record1 dns.Record
8661013
var record2 dns.Record
@@ -1049,6 +1196,16 @@ func ExpectOverrideTTLNotNil() bool {
10491196
return false
10501197
}
10511198

1199+
func testAccCheckRecordOverrideAddressRecords(r *dns.Record, expected bool) resource.TestCheckFunc {
1200+
return func(s *terraform.State) error {
1201+
if *r.OverrideAddressRecords != expected {
1202+
return fmt.Errorf("Override Address Records: got: %#v want: %#v", *r.OverrideAddressRecords, expected)
1203+
}
1204+
1205+
return nil
1206+
}
1207+
}
1208+
10521209
func testAccCheckRecordOverrideTTL(r *dns.Record, expectedNil bool) resource.TestCheckFunc {
10531210
return func(s *terraform.State) error {
10541211
if expectedNil {
@@ -1273,6 +1430,25 @@ resource "ns1_zone" "test" {
12731430
`, domain, zone)
12741431
}
12751432

1433+
func testAccRecordBasicALIASOverrideAddressRecords(rString string, overrideAddressRecords bool) string {
1434+
return fmt.Sprintf(`
1435+
resource "ns1_record" "it" {
1436+
zone = "${ns1_zone.test.zone}"
1437+
domain = "${ns1_zone.test.zone}"
1438+
type = "ALIAS"
1439+
ttl = 60
1440+
override_address_records = %v
1441+
answers {
1442+
answer = "test.${ns1_zone.test.zone}"
1443+
}
1444+
}
1445+
1446+
resource "ns1_zone" "test" {
1447+
zone = "terraform-test-%s.io"
1448+
}
1449+
`, overrideAddressRecords, rString)
1450+
}
1451+
12761452
func testAccRecordBasicALIASOverrideTTL(rString string, overridettl bool) string {
12771453
return fmt.Sprintf(`
12781454
resource "ns1_record" "it" {

0 commit comments

Comments
 (0)