Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Azure Video Analyzer Edge Module resource #12911

5 changes: 5 additions & 0 deletions internal/services/videoanalyzer/client/client.go
Expand Up @@ -7,13 +7,18 @@ import (

type Client struct {
VideoAnalyzersClient *videoanalyzer.VideoAnalyzersClient
EdgeModulesClient *videoanalyzer.EdgeModulesClient
}

func NewClient(o *common.ClientOptions) *Client {
VideoAnalyzersClient := videoanalyzer.NewVideoAnalyzersClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)
EdgeModulesClient := videoanalyzer.NewEdgeModulesClientWithBaseURI(o.ResourceManagerEndpoint, o.SubscriptionId)

o.ConfigureClient(&VideoAnalyzersClient.Client, o.ResourceManagerAuthorizer)
o.ConfigureClient(&EdgeModulesClient.Client, o.ResourceManagerAuthorizer)

return &Client{
VideoAnalyzersClient: &VideoAnalyzersClient,
EdgeModulesClient: &EdgeModulesClient,
}
}
75 changes: 75 additions & 0 deletions internal/services/videoanalyzer/parse/edge_modules.go
@@ -0,0 +1,75 @@
package parse

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"fmt"
"strings"

"github.com/hashicorp/terraform-provider-azurerm/helpers/azure"
)

type EdgeModulesId struct {
SubscriptionId string
ResourceGroup string
VideoAnalyzerName string
EdgeModuleName string
}

func NewEdgeModulesID(subscriptionId, resourceGroup, videoAnalyzerName, edgeModuleName string) EdgeModulesId {
return EdgeModulesId{
SubscriptionId: subscriptionId,
ResourceGroup: resourceGroup,
VideoAnalyzerName: videoAnalyzerName,
EdgeModuleName: edgeModuleName,
}
}

func (id EdgeModulesId) String() string {
segments := []string{
fmt.Sprintf("Edge Module Name %q", id.EdgeModuleName),
fmt.Sprintf("Video Analyzer Name %q", id.VideoAnalyzerName),
fmt.Sprintf("Resource Group %q", id.ResourceGroup),
}
segmentsStr := strings.Join(segments, " / ")
return fmt.Sprintf("%s: (%s)", "Edge Modules", segmentsStr)
}

func (id EdgeModulesId) ID() string {
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Media/videoAnalyzers/%s/edgeModules/%s"
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.VideoAnalyzerName, id.EdgeModuleName)
}

// EdgeModulesID parses a EdgeModules ID into an EdgeModulesId struct
func EdgeModulesID(input string) (*EdgeModulesId, error) {
id, err := azure.ParseAzureResourceID(input)
if err != nil {
return nil, err
}

resourceId := EdgeModulesId{
SubscriptionId: id.SubscriptionID,
ResourceGroup: id.ResourceGroup,
}

if resourceId.SubscriptionId == "" {
return nil, fmt.Errorf("ID was missing the 'subscriptions' element")
}

if resourceId.ResourceGroup == "" {
return nil, fmt.Errorf("ID was missing the 'resourceGroups' element")
}

if resourceId.VideoAnalyzerName, err = id.PopSegment("videoAnalyzers"); err != nil {
return nil, err
}
if resourceId.EdgeModuleName, err = id.PopSegment("edgeModules"); err != nil {
return nil, err
}

if err := id.ValidateNoEmptySegments(input); err != nil {
return nil, err
}

return &resourceId, nil
}
128 changes: 128 additions & 0 deletions internal/services/videoanalyzer/parse/edge_modules_test.go
@@ -0,0 +1,128 @@
package parse

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"testing"

"github.com/hashicorp/terraform-provider-azurerm/internal/resourceid"
)

var _ resourceid.Formatter = EdgeModulesId{}

func TestEdgeModulesIDFormatter(t *testing.T) {
actual := NewEdgeModulesID("12345678-1234-9876-4563-123456789012", "resGroup1", "analyzer1", "edgemodule1").ID()
expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/edgemodule1"
if actual != expected {
t.Fatalf("Expected %q but got %q", expected, actual)
}
}

func TestEdgeModulesID(t *testing.T) {
testData := []struct {
Input string
Error bool
Expected *EdgeModulesId
}{

{
// empty
Input: "",
Error: true,
},

{
// missing SubscriptionId
Input: "/",
Error: true,
},

{
// missing value for SubscriptionId
Input: "/subscriptions/",
Error: true,
},

{
// missing ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/",
Error: true,
},

{
// missing value for ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/",
Error: true,
},

{
// missing VideoAnalyzerName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/",
Error: true,
},

{
// missing value for VideoAnalyzerName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/",
Error: true,
},

{
// missing EdgeModuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/",
Error: true,
},

{
// missing value for EdgeModuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/",
Error: true,
},

{
// valid
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/edgemodule1",
Expected: &EdgeModulesId{
SubscriptionId: "12345678-1234-9876-4563-123456789012",
ResourceGroup: "resGroup1",
VideoAnalyzerName: "analyzer1",
EdgeModuleName: "edgemodule1",
},
},

{
// upper-cased
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESGROUP1/PROVIDERS/MICROSOFT.MEDIA/VIDEOANALYZERS/ANALYZER1/EDGEMODULES/EDGEMODULE1",
Error: true,
},
}

for _, v := range testData {
t.Logf("[DEBUG] Testing %q", v.Input)

actual, err := EdgeModulesID(v.Input)
if err != nil {
if v.Error {
continue
}

t.Fatalf("Expect a value but got an error: %s", err)
}
if v.Error {
t.Fatal("Expect an error but didn't get one")
}

if actual.SubscriptionId != v.Expected.SubscriptionId {
t.Fatalf("Expected %q but got %q for SubscriptionId", v.Expected.SubscriptionId, actual.SubscriptionId)
}
if actual.ResourceGroup != v.Expected.ResourceGroup {
t.Fatalf("Expected %q but got %q for ResourceGroup", v.Expected.ResourceGroup, actual.ResourceGroup)
}
if actual.VideoAnalyzerName != v.Expected.VideoAnalyzerName {
t.Fatalf("Expected %q but got %q for VideoAnalyzerName", v.Expected.VideoAnalyzerName, actual.VideoAnalyzerName)
}
if actual.EdgeModuleName != v.Expected.EdgeModuleName {
t.Fatalf("Expected %q but got %q for EdgeModuleName", v.Expected.EdgeModuleName, actual.EdgeModuleName)
}
}
}
3 changes: 2 additions & 1 deletion internal/services/videoanalyzer/registration.go
Expand Up @@ -26,6 +26,7 @@ func (r Registration) SupportedDataSources() map[string]*pluginsdk.Resource {
// SupportedResources returns the supported Resources supported by this Service
func (r Registration) SupportedResources() map[string]*pluginsdk.Resource {
return map[string]*pluginsdk.Resource{
"azurerm_video_analyzer": resourceVideoAnalyzer(),
"azurerm_video_analyzer": resourceVideoAnalyzer(),
"azurerm_video_analyzer_edge_module": resourceVideoAnalyzerEdgeModule(),
}
}
1 change: 1 addition & 0 deletions internal/services/videoanalyzer/resourceids.go
@@ -1,3 +1,4 @@
package videoanalyzer

//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=VideoAnalyzer -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1
//go:generate go run ../../tools/generator-resource-id/main.go -path=./ -name=EdgeModules -id=/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/edgemodule1
EliiseS marked this conversation as resolved.
Show resolved Hide resolved
27 changes: 0 additions & 27 deletions internal/services/videoanalyzer/validate/account_name.go

This file was deleted.

23 changes: 23 additions & 0 deletions internal/services/videoanalyzer/validate/edge_modules_id.go
@@ -0,0 +1,23 @@
package validate

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import (
"fmt"

"github.com/hashicorp/terraform-provider-azurerm/internal/services/videoanalyzer/parse"
)

func EdgeModulesID(input interface{}, key string) (warnings []string, errors []error) {
v, ok := input.(string)
if !ok {
errors = append(errors, fmt.Errorf("expected %q to be a string", key))
return
}

if _, err := parse.EdgeModulesID(v); err != nil {
errors = append(errors, err)
}

return
}
88 changes: 88 additions & 0 deletions internal/services/videoanalyzer/validate/edge_modules_id_test.go
@@ -0,0 +1,88 @@
package validate

// NOTE: this file is generated via 'go:generate' - manual changes will be overwritten

import "testing"

func TestEdgeModulesID(t *testing.T) {
cases := []struct {
Input string
Valid bool
}{

{
// empty
Input: "",
Valid: false,
},

{
// missing SubscriptionId
Input: "/",
Valid: false,
},

{
// missing value for SubscriptionId
Input: "/subscriptions/",
Valid: false,
},

{
// missing ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/",
Valid: false,
},

{
// missing value for ResourceGroup
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/",
Valid: false,
},

{
// missing VideoAnalyzerName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/",
Valid: false,
},

{
// missing value for VideoAnalyzerName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/",
Valid: false,
},

{
// missing EdgeModuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/",
Valid: false,
},

{
// missing value for EdgeModuleName
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/",
Valid: false,
},

{
// valid
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.Media/videoAnalyzers/analyzer1/edgeModules/edgemodule1",
Valid: true,
},

{
// upper-cased
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESGROUP1/PROVIDERS/MICROSOFT.MEDIA/VIDEOANALYZERS/ANALYZER1/EDGEMODULES/EDGEMODULE1",
Valid: false,
},
}
for _, tc := range cases {
t.Logf("[DEBUG] Testing Value %s", tc.Input)
_, errors := EdgeModulesID(tc.Input, "test")
valid := len(errors) == 0

if tc.Valid != valid {
t.Fatalf("Expected %t but got %t", tc.Valid, valid)
}
}
}