Skip to content

Commit efe1104

Browse files
committed
updates
1 parent 4a16267 commit efe1104

File tree

5 files changed

+127
-109
lines changed

5 files changed

+127
-109
lines changed

internal/services/eventgrid/client/client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"fmt"
88

99
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2023-12-15-preview/namespaces"
10-
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2023-12-15-preview/namespacetopics"
1110
eventgrid_v2025_02_15 "github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2025-02-15"
11+
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2025-02-15/namespacetopics"
1212
"github.com/hashicorp/go-azure-sdk/sdk/client/resourcemanager"
1313
"github.com/hashicorp/terraform-provider-azurerm/internal/common"
1414
)

internal/services/eventgrid/eventgrid_namespace_topic_resource.go

Lines changed: 32 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,27 @@ import (
1111

1212
"github.com/hashicorp/go-azure-helpers/lang/pointer"
1313
"github.com/hashicorp/go-azure-helpers/lang/response"
14-
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2023-12-15-preview/namespaces"
15-
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2023-12-15-preview/namespacetopics"
14+
"github.com/hashicorp/go-azure-helpers/resourcemanager/resourceids"
15+
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2025-02-15/namespaces"
16+
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2025-02-15/namespacetopics"
1617
"github.com/hashicorp/terraform-provider-azurerm/internal/sdk"
1718
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
1819
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/validation"
1920
)
2021

21-
var _ sdk.ResourceWithUpdate = EventGridNamespaceTopicResource{}
22+
//go:generate go run ../../tools/generator-tests resourceidentity -resource-name eventgrid_namespace_topic -properties "name" -compare-values "subscription_id:eventgrid_namespace_id,resource_group_name:eventgrid_namespace_id,namespace_name:eventgrid_namespace_id"
23+
24+
var (
25+
_ sdk.ResourceWithUpdate = EventGridNamespaceTopicResource{}
26+
_ sdk.ResourceWithIdentity = EventGridNamespaceTopicResource{}
27+
)
2228

2329
type EventGridNamespaceTopicResource struct{}
2430

2531
type EventGridNamespaceTopicResourceModel struct {
2632
Name string `tfschema:"name"`
27-
NamespaceId string `tfschema:"namespace_id"`
33+
EventgridNamespaceId string `tfschema:"eventgrid_namespace_id"`
2834
EventRetentionInDays int64 `tfschema:"event_retention_in_days"`
29-
InputSchema string `tfschema:"input_schema"`
30-
PublisherType string `tfschema:"publisher_type"`
3135
}
3236

3337
func (r EventGridNamespaceTopicResource) Arguments() map[string]*pluginsdk.Schema {
@@ -45,7 +49,7 @@ func (r EventGridNamespaceTopicResource) Arguments() map[string]*pluginsdk.Schem
4549
),
4650
},
4751

48-
"namespace_id": {
52+
"eventgrid_namespace_id": {
4953
Type: pluginsdk.TypeString,
5054
Required: true,
5155
ForceNew: true,
@@ -58,24 +62,6 @@ func (r EventGridNamespaceTopicResource) Arguments() map[string]*pluginsdk.Schem
5862
Default: 7,
5963
ValidateFunc: validation.IntBetween(1, 7),
6064
},
61-
62-
"input_schema": {
63-
Type: pluginsdk.TypeString,
64-
Optional: true,
65-
Default: "CloudEventSchemaV1_0",
66-
ValidateFunc: validation.StringInSlice([]string{
67-
"CloudEventSchemaV1_0",
68-
}, false),
69-
},
70-
71-
"publisher_type": {
72-
Type: pluginsdk.TypeString,
73-
Optional: true,
74-
Default: "Custom",
75-
ValidateFunc: validation.StringInSlice([]string{
76-
"Custom",
77-
}, false),
78-
},
7965
}
8066
}
8167

@@ -99,23 +85,15 @@ func (r EventGridNamespaceTopicResource) Create() sdk.ResourceFunc {
9985

10086
var model EventGridNamespaceTopicResourceModel
10187
if err := metadata.Decode(&model); err != nil {
102-
return fmt.Errorf("decoding %+v", err)
88+
return fmt.Errorf("decoding: %+v", err)
10389
}
10490

105-
subscriptionId := ""
106-
namespaceName := ""
107-
resourceGroupName := ""
108-
if v := model.NamespaceId; v != "" {
109-
namespaceId, err := namespaces.ParseNamespaceID(v)
110-
if err != nil {
111-
return err
112-
}
113-
subscriptionId = namespaceId.SubscriptionId
114-
namespaceName = namespaceId.NamespaceName
115-
resourceGroupName = namespaceId.ResourceGroupName
91+
namespaceId, err := namespaces.ParseNamespaceID(model.EventgridNamespaceId)
92+
if err != nil {
93+
return err
11694
}
11795

118-
id := namespacetopics.NewNamespaceTopicID(subscriptionId, resourceGroupName, namespaceName, model.Name)
96+
id := namespacetopics.NewNamespaceTopicID(namespaceId.SubscriptionId, namespaceId.ResourceGroupName, namespaceId.NamespaceName, model.Name)
11997

12098
existing, err := client.Get(ctx, id)
12199
if err != nil {
@@ -132,8 +110,8 @@ func (r EventGridNamespaceTopicResource) Create() sdk.ResourceFunc {
132110
Name: pointer.To(model.Name),
133111
Properties: &namespacetopics.NamespaceTopicProperties{
134112
EventRetentionInDays: pointer.To(model.EventRetentionInDays),
135-
InputSchema: pointer.To(namespacetopics.EventInputSchema(model.InputSchema)),
136-
PublisherType: pointer.To(namespacetopics.PublisherType(model.PublisherType)),
113+
InputSchema: pointer.To(namespacetopics.EventInputSchemaCloudEventSchemaVOneZero),
114+
PublisherType: pointer.To(namespacetopics.PublisherTypeCustom),
137115
},
138116
}
139117

@@ -142,8 +120,7 @@ func (r EventGridNamespaceTopicResource) Create() sdk.ResourceFunc {
142120
}
143121

144122
metadata.SetID(id)
145-
146-
return nil
123+
return pluginsdk.SetResourceIdentityData(metadata.ResourceData, &id)
147124
},
148125
}
149126
}
@@ -156,7 +133,7 @@ func (r EventGridNamespaceTopicResource) Update() sdk.ResourceFunc {
156133

157134
var model EventGridNamespaceTopicResourceModel
158135
if err := metadata.Decode(&model); err != nil {
159-
return fmt.Errorf("decoding %+v", err)
136+
return fmt.Errorf("decoding: %+v", err)
160137
}
161138

162139
id, err := namespacetopics.ParseNamespaceTopicID(metadata.ResourceData.Id())
@@ -173,11 +150,9 @@ func (r EventGridNamespaceTopicResource) Update() sdk.ResourceFunc {
173150
}
174151

175152
if err = client.UpdateThenPoll(ctx, *id, payload); err != nil {
176-
return fmt.Errorf("creating %s: %+v", *id, err)
153+
return fmt.Errorf("updating %s: %+v", id, err)
177154
}
178155

179-
metadata.SetID(id)
180-
181156
return nil
182157
},
183158
}
@@ -203,18 +178,20 @@ func (r EventGridNamespaceTopicResource) Read() sdk.ResourceFunc {
203178
}
204179

205180
state := EventGridNamespaceTopicResourceModel{
206-
Name: id.TopicName,
207-
NamespaceId: namespacetopics.NewNamespaceID(id.SubscriptionId, id.ResourceGroupName, id.NamespaceName).ID(),
181+
Name: id.TopicName,
182+
EventgridNamespaceId: namespacetopics.NewNamespaceID(id.SubscriptionId, id.ResourceGroupName, id.NamespaceName).ID(),
208183
}
209184

210185
if model := resp.Model; model != nil {
211186
if props := model.Properties; props != nil {
212-
state.EventRetentionInDays = int64(pointer.From(props.EventRetentionInDays))
213-
state.InputSchema = string(pointer.From(props.InputSchema))
214-
state.PublisherType = string(pointer.From(props.PublisherType))
187+
state.EventRetentionInDays = pointer.From(props.EventRetentionInDays)
215188
}
216189
}
217190

191+
if err := pluginsdk.SetResourceIdentityData(metadata.ResourceData, id); err != nil {
192+
return err
193+
}
194+
218195
return metadata.Encode(&state)
219196
},
220197
}
@@ -243,3 +220,7 @@ func (r EventGridNamespaceTopicResource) Delete() sdk.ResourceFunc {
243220
func (r EventGridNamespaceTopicResource) IDValidationFunc() pluginsdk.SchemaValidateFunc {
244221
return namespacetopics.ValidateNamespaceTopicID
245222
}
223+
224+
func (r EventGridNamespaceTopicResource) Identity() resourceids.ResourceId {
225+
return new(namespacetopics.NamespaceTopicId)
226+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// Copyright IBM Corp. 2014, 2025
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
package eventgrid_test
5+
6+
import (
7+
"testing"
8+
9+
"github.com/hashicorp/terraform-plugin-testing/statecheck"
10+
"github.com/hashicorp/terraform-plugin-testing/tfjsonpath"
11+
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
12+
customstatecheck "github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/statecheck"
13+
)
14+
15+
func TestAccEventgridNamespaceTopic_resourceIdentity(t *testing.T) {
16+
data := acceptance.BuildTestData(t, "azurerm_eventgrid_namespace_topic", "test")
17+
r := EventgridNamespaceTopicResource{}
18+
19+
checkedFields := map[string]struct{}{
20+
"name": {},
21+
"namespace_name": {},
22+
"resource_group_name": {},
23+
"subscription_id": {},
24+
}
25+
26+
data.ResourceIdentityTest(t, []acceptance.TestStep{
27+
{
28+
Config: r.basic(data),
29+
ConfigStateChecks: []statecheck.StateCheck{
30+
customstatecheck.ExpectAllIdentityFieldsAreChecked("azurerm_eventgrid_namespace_topic.test", checkedFields),
31+
statecheck.ExpectIdentityValueMatchesStateAtPath("azurerm_eventgrid_namespace_topic.test", tfjsonpath.New("name"), tfjsonpath.New("name")),
32+
customstatecheck.ExpectStateContainsIdentityValueAtPath("azurerm_eventgrid_namespace_topic.test", tfjsonpath.New("namespace_name"), tfjsonpath.New("eventgrid_namespace_id")),
33+
customstatecheck.ExpectStateContainsIdentityValueAtPath("azurerm_eventgrid_namespace_topic.test", tfjsonpath.New("resource_group_name"), tfjsonpath.New("eventgrid_namespace_id")),
34+
customstatecheck.ExpectStateContainsIdentityValueAtPath("azurerm_eventgrid_namespace_topic.test", tfjsonpath.New("subscription_id"), tfjsonpath.New("eventgrid_namespace_id")),
35+
},
36+
},
37+
data.ImportBlockWithResourceIdentityStep(false),
38+
data.ImportBlockWithIDStep(false),
39+
}, false)
40+
}

internal/services/eventgrid/eventgrid_namespace_topic_resource_test.go

Lines changed: 40 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ import (
99
"testing"
1010

1111
"github.com/hashicorp/go-azure-helpers/lang/pointer"
12-
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2023-12-15-preview/namespacetopics"
12+
"github.com/hashicorp/go-azure-sdk/resource-manager/eventgrid/2025-02-15/namespacetopics"
1313
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance"
1414
"github.com/hashicorp/terraform-provider-azurerm/internal/acceptance/check"
1515
"github.com/hashicorp/terraform-provider-azurerm/internal/clients"
1616
"github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk"
1717
)
1818

19-
type EventGridNamespaceTopicResource struct{}
19+
type EventgridNamespaceTopicResource struct{}
2020

21-
func TestAccEventGridNamespaceTopicResource_basic(t *testing.T) {
21+
func TestAccEventgridNamespaceTopicResource_basic(t *testing.T) {
2222
data := acceptance.BuildTestData(t, "azurerm_eventgrid_namespace_topic", "test")
23-
r := EventGridNamespaceTopicResource{}
23+
r := EventgridNamespaceTopicResource{}
2424

2525
data.ResourceTest(t, r, []acceptance.TestStep{
2626
{
@@ -33,9 +33,9 @@ func TestAccEventGridNamespaceTopicResource_basic(t *testing.T) {
3333
})
3434
}
3535

36-
func TestAccEventGridNamespaceTopicResource_requiresImport(t *testing.T) {
36+
func TestAccEventgridNamespaceTopicResource_requiresImport(t *testing.T) {
3737
data := acceptance.BuildTestData(t, "azurerm_eventgrid_namespace_topic", "test")
38-
r := EventGridNamespaceTopicResource{}
38+
r := EventgridNamespaceTopicResource{}
3939

4040
data.ResourceTest(t, r, []acceptance.TestStep{
4141
{
@@ -44,16 +44,13 @@ func TestAccEventGridNamespaceTopicResource_requiresImport(t *testing.T) {
4444
check.That(data.ResourceName).ExistsInAzure(r),
4545
),
4646
},
47-
{
48-
Config: r.requiresImport(data),
49-
ExpectError: acceptance.RequiresImportError("azurerm_eventgrid_namespace_topic"),
50-
},
47+
data.RequiresImportErrorStep(r.requiresImport),
5148
})
5249
}
5350

54-
func TestAccEventGridNamespaceTopicResource_complete(t *testing.T) {
51+
func TestAccEventgridNamespaceTopicResource_complete(t *testing.T) {
5552
data := acceptance.BuildTestData(t, "azurerm_eventgrid_namespace_topic", "test")
56-
r := EventGridNamespaceTopicResource{}
53+
r := EventgridNamespaceTopicResource{}
5754

5855
data.ResourceTest(t, r, []acceptance.TestStep{
5956
{
@@ -66,9 +63,9 @@ func TestAccEventGridNamespaceTopicResource_complete(t *testing.T) {
6663
})
6764
}
6865

69-
func TestAccEventGridNamespaceTopicResource_update(t *testing.T) {
66+
func TestAccEventgridNamespaceTopicResource_update(t *testing.T) {
7067
data := acceptance.BuildTestData(t, "azurerm_eventgrid_namespace_topic", "test")
71-
r := EventGridNamespaceTopicResource{}
68+
r := EventgridNamespaceTopicResource{}
7269

7370
data.ResourceTest(t, r, []acceptance.TestStep{
7471
{
@@ -88,7 +85,7 @@ func TestAccEventGridNamespaceTopicResource_update(t *testing.T) {
8885
})
8986
}
9087

91-
func (r EventGridNamespaceTopicResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
88+
func (r EventgridNamespaceTopicResource) Exists(ctx context.Context, clients *clients.Client, state *pluginsdk.InstanceState) (*bool, error) {
9289
id, err := namespacetopics.ParseNamespaceTopicID(state.ID)
9390
if err != nil {
9491
return nil, err
@@ -102,57 +99,55 @@ func (r EventGridNamespaceTopicResource) Exists(ctx context.Context, clients *cl
10299
return pointer.To(resp.Model != nil), nil
103100
}
104101

105-
func (r EventGridNamespaceTopicResource) template(data acceptance.TestData) string {
106-
return fmt.Sprintf(`
107-
provider "azurerm" {
108-
features {}
109-
}
110-
111-
resource "azurerm_resource_group" "test" {
112-
name = "acctestRG-%[1]d"
113-
location = "%[2]s"
114-
}
115-
116-
resource "azurerm_eventgrid_namespace" "test" {
117-
name = "acctest-egn-%[1]d"
118-
resource_group_name = azurerm_resource_group.test.name
119-
location = azurerm_resource_group.test.location
120-
}
121-
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger)
122-
}
123-
124-
func (r EventGridNamespaceTopicResource) basic(data acceptance.TestData) string {
102+
func (r EventgridNamespaceTopicResource) basic(data acceptance.TestData) string {
125103
return fmt.Sprintf(`
126104
%s
127105
128106
resource "azurerm_eventgrid_namespace_topic" "test" {
129-
name = "acctest-egnt-%d"
130-
namespace_id = azurerm_eventgrid_namespace.test.id
107+
name = "acctest-egnt-%d"
108+
eventgrid_namespace_id = azurerm_eventgrid_namespace.test.id
131109
}
132110
`, r.template(data), data.RandomInteger)
133111
}
134112

135-
func (r EventGridNamespaceTopicResource) requiresImport(data acceptance.TestData) string {
113+
func (r EventgridNamespaceTopicResource) requiresImport(data acceptance.TestData) string {
136114
return fmt.Sprintf(`
137115
%s
138116
139117
resource "azurerm_eventgrid_namespace_topic" "import" {
140-
name = azurerm_eventgrid_namespace_topic.test.name
141-
namespace_id = azurerm_eventgrid_namespace_topic.test.namespace_id
118+
name = azurerm_eventgrid_namespace_topic.test.name
119+
eventgrid_namespace_id = azurerm_eventgrid_namespace_topic.test.eventgrid_namespace_id
142120
}
143121
`, r.basic(data))
144122
}
145123

146-
func (r EventGridNamespaceTopicResource) complete(data acceptance.TestData) string {
124+
func (r EventgridNamespaceTopicResource) complete(data acceptance.TestData) string {
147125
return fmt.Sprintf(`
148126
%s
149127
150128
resource "azurerm_eventgrid_namespace_topic" "test" {
151129
name = "acctest-egnt-%d"
152-
namespace_id = azurerm_eventgrid_namespace.test.id
153-
event_retention_in_days = 1
154-
input_schema = "CloudEventSchemaV1_0"
155-
publisher_type = "Custom"
130+
eventgrid_namespace_id = azurerm_eventgrid_namespace.test.id
131+
event_retention_in_days = 1
156132
}
157133
`, r.template(data), data.RandomInteger)
158134
}
135+
136+
func (r EventgridNamespaceTopicResource) template(data acceptance.TestData) string {
137+
return fmt.Sprintf(`
138+
provider "azurerm" {
139+
features {}
140+
}
141+
142+
resource "azurerm_resource_group" "test" {
143+
name = "acctestRG-%[1]d"
144+
location = "%[2]s"
145+
}
146+
147+
resource "azurerm_eventgrid_namespace" "test" {
148+
name = "acctest-egn-%[1]d"
149+
resource_group_name = azurerm_resource_group.test.name
150+
location = azurerm_resource_group.test.location
151+
}
152+
`, data.RandomInteger, data.Locations.Primary, data.RandomInteger)
153+
}

0 commit comments

Comments
 (0)