Skip to content

Commit 8e5243e

Browse files
committed
NSOF-5772 metaports: add notification channel support for metaport and metaport failover
1 parent 627c900 commit 8e5243e

16 files changed

Lines changed: 152 additions & 40 deletions

File tree

docs/data-sources/metaport.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,6 @@ output "metaport" {
3737
- **enabled** (Boolean)
3838
- **mapped_elements** (Set of String) List of mapped element IDs
3939
- **name** (String)
40+
- **notification_channels** (List of String) List of notification channel IDs
4041

4142

docs/data-sources/metaport_failover.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ output "metaport_failover" {
3939
- **failover** (List of Object) Secondary to primary cluster switchover. (see [below for nested schema](#nestedatt--failover))
4040
- **mapped_elements** (Set of String) List of mapped element IDs
4141
- **name** (String)
42+
- **notification_channels** (List of String) List of notification channel IDs
4243

4344
<a id="nestedatt--failback"></a>
4445
### Nested Schema for `failback`

docs/resources/metaport.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,20 @@ resource "pfptmeta_network_element" "mapped-subnet" {
1818
mapped_subnets = ["0.0.0.0/0"]
1919
}
2020
21+
resource "pfptmeta_notification_channel" "mail" {
22+
name = "mail-channel"
23+
description = "mail channel description"
24+
email_config {
25+
recipients = ["user1@example.com", "user2@example.com"]
26+
}
27+
}
28+
2129
resource "pfptmeta_metaport" "metaport1" {
22-
name = "metaport name1"
23-
description = "some details about the metaport"
24-
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
25-
allow_support = false
30+
name = "metaport name1"
31+
description = "some details about the metaport"
32+
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
33+
allow_support = false
34+
notification_channels = [pfptmeta_notification_channel.mail.id]
2635
}
2736
```
2837

@@ -39,6 +48,7 @@ resource "pfptmeta_metaport" "metaport1" {
3948
- **description** (String)
4049
- **enabled** (Boolean)
4150
- **mapped_elements** (Set of String) List of mapped element IDs
51+
- **notification_channels** (List of String) List of notification channel IDs
4252

4353
### Read-Only
4454

docs/resources/metaport_failover.md

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,21 @@ resource "pfptmeta_metaport_cluster" "metaport_cluster2" {
3636
metaports = [pfptmeta_metaport.metaport2.id]
3737
}
3838
39+
resource "pfptmeta_notification_channel" "mail" {
40+
name = "mail-channel"
41+
description = "mail channel description"
42+
email_config {
43+
recipients = ["user1@example.com", "user2@example.com"]
44+
}
45+
}
46+
3947
resource "pfptmeta_metaport_failover" "failover" {
40-
name = "metaport failover name"
41-
description = "metaport failover description"
42-
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
43-
cluster_1 = pfptmeta_metaport_cluster.metaport_cluster1
44-
cluster_2 = pfptmeta_metaport_cluster.metaport_cluster2
48+
name = "metaport failover name"
49+
description = "metaport failover description"
50+
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
51+
cluster_1 = pfptmeta_metaport_cluster.metaport_cluster1
52+
cluster_2 = pfptmeta_metaport_cluster.metaport_cluster2
53+
notification_channels = [pfptmeta_notification_channel.mail.id]
4554
failback {
4655
trigger = "auto"
4756
}
@@ -68,6 +77,7 @@ resource "pfptmeta_metaport_failover" "failover" {
6877
- **failback** (Block List, Max: 1) Primary to secondary cluster switchover. (see [below for nested schema](#nestedblock--failback))
6978
- **failover** (Block List, Max: 1) Secondary to primary cluster switchover. (see [below for nested schema](#nestedblock--failover))
7079
- **mapped_elements** (Set of String) List of mapped element IDs
80+
- **notification_channels** (List of String) List of notification channel IDs
7181

7282
### Read-Only
7383

examples/resources/pfptmeta_metaport/resource.tf

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,18 @@ resource "pfptmeta_network_element" "mapped-subnet" {
33
mapped_subnets = ["0.0.0.0/0"]
44
}
55

6+
resource "pfptmeta_notification_channel" "mail" {
7+
name = "mail-channel"
8+
description = "mail channel description"
9+
email_config {
10+
recipients = ["user1@example.com", "user2@example.com"]
11+
}
12+
}
13+
614
resource "pfptmeta_metaport" "metaport1" {
7-
name = "metaport name1"
8-
description = "some details about the metaport"
9-
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
10-
allow_support = false
15+
name = "metaport name1"
16+
description = "some details about the metaport"
17+
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
18+
allow_support = false
19+
notification_channels = [pfptmeta_notification_channel.mail.id]
1120
}

examples/resources/pfptmeta_metaport_failover/resource.tf

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,21 @@ resource "pfptmeta_metaport_cluster" "metaport_cluster2" {
2121
metaports = [pfptmeta_metaport.metaport2.id]
2222
}
2323

24+
resource "pfptmeta_notification_channel" "mail" {
25+
name = "mail-channel"
26+
description = "mail channel description"
27+
email_config {
28+
recipients = ["user1@example.com", "user2@example.com"]
29+
}
30+
}
31+
2432
resource "pfptmeta_metaport_failover" "failover" {
25-
name = "metaport failover name"
26-
description = "metaport failover description"
27-
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
28-
cluster_1 = pfptmeta_metaport_cluster.metaport_cluster1
29-
cluster_2 = pfptmeta_metaport_cluster.metaport_cluster2
33+
name = "metaport failover name"
34+
description = "metaport failover description"
35+
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
36+
cluster_1 = pfptmeta_metaport_cluster.metaport_cluster1
37+
cluster_2 = pfptmeta_metaport_cluster.metaport_cluster2
38+
notification_channels = [pfptmeta_notification_channel.mail.id]
3039
failback {
3140
trigger = "auto"
3241
}

internal/client/metaport.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ const (
1515
)
1616

1717
type Metaport struct {
18-
ID string `json:"id,omitempty"`
19-
Name string `json:"name,omitempty"`
20-
Description string `json:"description,omitempty"`
21-
Enabled *bool `json:"enabled,omitempty"`
22-
AllowSupport *bool `json:"allow_support,omitempty"`
23-
MappedElements []string `json:"mapped_elements"`
18+
ID string `json:"id,omitempty"`
19+
Name string `json:"name,omitempty"`
20+
Description string `json:"description,omitempty"`
21+
Enabled *bool `json:"enabled,omitempty"`
22+
AllowSupport *bool `json:"allow_support,omitempty"`
23+
MappedElements []string `json:"mapped_elements"`
24+
NotificationChannels []string `json:"notification_channels"`
2425
}
2526

2627
func NewMetaport(d *schema.ResourceData) *Metaport {
@@ -40,6 +41,12 @@ func NewMetaport(d *schema.ResourceData) *Metaport {
4041

4142
mes := d.Get("mapped_elements")
4243
res.MappedElements = ResourceTypeSetToStringSlice(mes.(*schema.Set))
44+
nc := d.Get("notification_channels").([]interface{})
45+
nChannel := make([]string, len(nc))
46+
for i, org := range nc {
47+
nChannel[i] = org.(string)
48+
}
49+
res.NotificationChannels = nChannel
4350

4451
return res
4552
}

internal/client/metaport_failover.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@ type FailOver struct {
2424
}
2525

2626
type MetaportFailover struct {
27-
ID string `json:"id,omitempty"`
28-
Name string `json:"name,omitempty"`
29-
Description string `json:"description,omitempty"`
30-
MappedElements []string `json:"mapped_elements"`
31-
Cluster1 *string `json:"cluster_1"`
32-
Cluster2 *string `json:"cluster_2"`
33-
ActiveCluster *string `json:"active_cluster,omitempty"`
34-
FailBack *FailBack `json:"failback,omitempty"`
35-
FailOver *FailOver `json:"failover,omitempty"`
27+
ID string `json:"id,omitempty"`
28+
Name string `json:"name,omitempty"`
29+
Description string `json:"description,omitempty"`
30+
MappedElements []string `json:"mapped_elements"`
31+
Cluster1 *string `json:"cluster_1"`
32+
Cluster2 *string `json:"cluster_2"`
33+
ActiveCluster *string `json:"active_cluster,omitempty"`
34+
FailBack *FailBack `json:"failback,omitempty"`
35+
FailOver *FailOver `json:"failover,omitempty"`
36+
NotificationChannels []string `json:"notification_channels"`
3637
}
3738

3839
func (mf *MetaportFailover) ReqBody() ([]byte, error) {
@@ -80,6 +81,12 @@ func NewMetaportFailover(d *schema.ResourceData) *MetaportFailover {
8081
res.FailOver = &FailOver{Delay: uint8(delay), Threshold: uint8(threshold), Trigger: trigger}
8182
}
8283
}
84+
nc := d.Get("notification_channels").([]interface{})
85+
nChannel := make([]string, len(nc))
86+
for i, org := range nc {
87+
nChannel[i] = org.(string)
88+
}
89+
res.NotificationChannels = nChannel
8390
return res
8491
}
8592

internal/provider/acc_tests/metaport_failover_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ func TestAccResourceMetaportFailover(t *testing.T) {
3737
resource.TestCheckResourceAttr(
3838
"pfptmeta_metaport_failover.failover", "failover.0.trigger", "auto",
3939
),
40+
resource.TestMatchResourceAttr(
41+
"pfptmeta_metaport_failover.failover", "notification_channels.0", regexp.MustCompile("^nch-.+$"),
42+
),
4043
),
4144
},
4245
{
@@ -58,6 +61,9 @@ func TestAccResourceMetaportFailover(t *testing.T) {
5861
resource.TestCheckResourceAttr(
5962
"pfptmeta_metaport_failover.failover", "failover.0.trigger", "auto",
6063
),
64+
resource.TestCheckNoResourceAttr(
65+
"pfptmeta_metaport_failover.failover", "notification_channels.0",
66+
),
6167
),
6268
},
6369
{
@@ -133,9 +139,18 @@ func TestAccDataSourceMetaportFailover(t *testing.T) {
133139
}
134140

135141
const testAccMetaportFailoverStep1 = `
142+
resource "pfptmeta_notification_channel" "mail" {
143+
name = "mail-channel"
144+
description = "mail channel description"
145+
email_config {
146+
recipients = ["user1@example.com", "user2@example.com"]
147+
}
148+
}
149+
136150
resource "pfptmeta_metaport_failover" "failover" {
137151
name = "mf-name"
138152
description = "mf-description"
153+
notification_channels = [pfptmeta_notification_channel.mail.id]
139154
failback {
140155
trigger = "manual"
141156
}

internal/provider/acc_tests/metaport_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ func TestAccResourceMetaport(t *testing.T) {
3131
resource.TestCheckResourceAttr(
3232
"pfptmeta_metaport.metaport", "allow_support", "true",
3333
),
34+
resource.TestMatchResourceAttr(
35+
"pfptmeta_metaport.metaport", "notification_channels.0", regexp.MustCompile("^nch-.+$"),
36+
),
3437
),
3538
},
3639
{
@@ -43,6 +46,7 @@ func TestAccResourceMetaport(t *testing.T) {
4346
"pfptmeta_metaport.metaport", "description", "metaport description1",
4447
),
4548
resource.TestCheckNoResourceAttr("pfptmeta_metaport.metaport", "mapped_elements"),
49+
resource.TestCheckNoResourceAttr("pfptmeta_metaport.metaport", "notification_channels.0"),
4650
resource.TestCheckResourceAttr("pfptmeta_metaport.metaport", "allow_support", "false"),
4751
),
4852
},
@@ -86,10 +90,19 @@ resource "pfptmeta_network_element" "mapped-subnet" {
8690
mapped_subnets = ["0.0.0.0/0"]
8791
}
8892
93+
resource "pfptmeta_notification_channel" "mail" {
94+
name = "mail-channel"
95+
description = "mail channel description"
96+
email_config {
97+
recipients = ["user1@example.com", "user2@example.com"]
98+
}
99+
}
100+
89101
resource "pfptmeta_metaport" "metaport" {
90102
name = "metaport name"
91103
description = "metaport description"
92104
mapped_elements = [pfptmeta_network_element.mapped-subnet.id]
105+
notification_channels = [pfptmeta_notification_channel.mail.id]
93106
}
94107
`
95108

0 commit comments

Comments
 (0)