forked from hashicorp/terraform-provider-azurerm
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New Provider - azurerm_virtual_desktop_host_pool_registration_info
- Loading branch information
Andy.McCullough
committed
Nov 15, 2021
1 parent
baa8d11
commit 214dda2
Showing
10 changed files
with
835 additions
and
23 deletions.
There are no files selected for viewing
131 changes: 131 additions & 0 deletions
131
internal/services/desktopvirtualization/parse/host_pool_registration_info.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
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 HostPoolRegistrationInfoId struct { | ||
SubscriptionId string | ||
ResourceGroup string | ||
HostPoolName string | ||
RegistrationInfoName string | ||
} | ||
|
||
func NewHostPoolRegistrationInfoID(subscriptionId, resourceGroup, hostPoolName, registrationInfoName string) HostPoolRegistrationInfoId { | ||
return HostPoolRegistrationInfoId{ | ||
SubscriptionId: subscriptionId, | ||
ResourceGroup: resourceGroup, | ||
HostPoolName: hostPoolName, | ||
RegistrationInfoName: registrationInfoName, | ||
} | ||
} | ||
|
||
func (id HostPoolRegistrationInfoId) String() string { | ||
segments := []string{ | ||
fmt.Sprintf("Registration Info Name %q", id.RegistrationInfoName), | ||
fmt.Sprintf("Host Pool Name %q", id.HostPoolName), | ||
fmt.Sprintf("Resource Group %q", id.ResourceGroup), | ||
} | ||
segmentsStr := strings.Join(segments, " / ") | ||
return fmt.Sprintf("%s: (%s)", "Host Pool Registration Info", segmentsStr) | ||
} | ||
|
||
func (id HostPoolRegistrationInfoId) ID() string { | ||
fmtString := "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.DesktopVirtualization/hostPools/%s/registrationInfo/%s" | ||
return fmt.Sprintf(fmtString, id.SubscriptionId, id.ResourceGroup, id.HostPoolName, id.RegistrationInfoName) | ||
} | ||
|
||
// HostPoolRegistrationInfoID parses a HostPoolRegistrationInfo ID into an HostPoolRegistrationInfoId struct | ||
func HostPoolRegistrationInfoID(input string) (*HostPoolRegistrationInfoId, error) { | ||
id, err := azure.ParseAzureResourceID(input) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
resourceId := HostPoolRegistrationInfoId{ | ||
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.HostPoolName, err = id.PopSegment("hostPools"); err != nil { | ||
return nil, err | ||
} | ||
if resourceId.RegistrationInfoName, err = id.PopSegment("registrationInfo"); err != nil { | ||
return nil, err | ||
} | ||
|
||
if err := id.ValidateNoEmptySegments(input); err != nil { | ||
return nil, err | ||
} | ||
|
||
return &resourceId, nil | ||
} | ||
|
||
// HostPoolRegistrationInfoIDInsensitively parses an HostPoolRegistrationInfo ID into an HostPoolRegistrationInfoId struct, insensitively | ||
// This should only be used to parse an ID for rewriting, the HostPoolRegistrationInfoID | ||
// method should be used instead for validation etc. | ||
// | ||
// Whilst this may seem strange, this enables Terraform have consistent casing | ||
// which works around issues in Core, whilst handling broken API responses. | ||
func HostPoolRegistrationInfoIDInsensitively(input string) (*HostPoolRegistrationInfoId, error) { | ||
id, err := azure.ParseAzureResourceID(input) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
resourceId := HostPoolRegistrationInfoId{ | ||
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") | ||
} | ||
|
||
// find the correct casing for the 'hostPools' segment | ||
hostPoolsKey := "hostPools" | ||
for key := range id.Path { | ||
if strings.EqualFold(key, hostPoolsKey) { | ||
hostPoolsKey = key | ||
break | ||
} | ||
} | ||
if resourceId.HostPoolName, err = id.PopSegment(hostPoolsKey); err != nil { | ||
return nil, err | ||
} | ||
|
||
// find the correct casing for the 'registrationInfo' segment | ||
registrationInfoKey := "registrationInfo" | ||
for key := range id.Path { | ||
if strings.EqualFold(key, registrationInfoKey) { | ||
registrationInfoKey = key | ||
break | ||
} | ||
} | ||
if resourceId.RegistrationInfoName, err = id.PopSegment(registrationInfoKey); err != nil { | ||
return nil, err | ||
} | ||
|
||
if err := id.ValidateNoEmptySegments(input); err != nil { | ||
return nil, err | ||
} | ||
|
||
return &resourceId, nil | ||
} |
264 changes: 264 additions & 0 deletions
264
internal/services/desktopvirtualization/parse/host_pool_registration_info_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,264 @@ | ||
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 = HostPoolRegistrationInfoId{} | ||
|
||
func TestHostPoolRegistrationInfoIDFormatter(t *testing.T) { | ||
actual := NewHostPoolRegistrationInfoID("12345678-1234-9876-4563-123456789012", "resGroup1", "pool1", "default").ID() | ||
expected := "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/registrationInfo/default" | ||
if actual != expected { | ||
t.Fatalf("Expected %q but got %q", expected, actual) | ||
} | ||
} | ||
|
||
func TestHostPoolRegistrationInfoID(t *testing.T) { | ||
testData := []struct { | ||
Input string | ||
Error bool | ||
Expected *HostPoolRegistrationInfoId | ||
}{ | ||
|
||
{ | ||
// 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 HostPoolName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing value for HostPoolName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing RegistrationInfoName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing value for RegistrationInfoName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/registrationInfo/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// valid | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/registrationInfo/default", | ||
Expected: &HostPoolRegistrationInfoId{ | ||
SubscriptionId: "12345678-1234-9876-4563-123456789012", | ||
ResourceGroup: "resGroup1", | ||
HostPoolName: "pool1", | ||
RegistrationInfoName: "default", | ||
}, | ||
}, | ||
|
||
{ | ||
// upper-cased | ||
Input: "/SUBSCRIPTIONS/12345678-1234-9876-4563-123456789012/RESOURCEGROUPS/RESGROUP1/PROVIDERS/MICROSOFT.DESKTOPVIRTUALIZATION/HOSTPOOLS/POOL1/REGISTRATIONINFO/DEFAULT", | ||
Error: true, | ||
}, | ||
} | ||
|
||
for _, v := range testData { | ||
t.Logf("[DEBUG] Testing %q", v.Input) | ||
|
||
actual, err := HostPoolRegistrationInfoID(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.HostPoolName != v.Expected.HostPoolName { | ||
t.Fatalf("Expected %q but got %q for HostPoolName", v.Expected.HostPoolName, actual.HostPoolName) | ||
} | ||
if actual.RegistrationInfoName != v.Expected.RegistrationInfoName { | ||
t.Fatalf("Expected %q but got %q for RegistrationInfoName", v.Expected.RegistrationInfoName, actual.RegistrationInfoName) | ||
} | ||
} | ||
} | ||
|
||
func TestHostPoolRegistrationInfoIDInsensitively(t *testing.T) { | ||
testData := []struct { | ||
Input string | ||
Error bool | ||
Expected *HostPoolRegistrationInfoId | ||
}{ | ||
|
||
{ | ||
// 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 HostPoolName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing value for HostPoolName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing RegistrationInfoName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// missing value for RegistrationInfoName | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/registrationInfo/", | ||
Error: true, | ||
}, | ||
|
||
{ | ||
// valid | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostPools/pool1/registrationInfo/default", | ||
Expected: &HostPoolRegistrationInfoId{ | ||
SubscriptionId: "12345678-1234-9876-4563-123456789012", | ||
ResourceGroup: "resGroup1", | ||
HostPoolName: "pool1", | ||
RegistrationInfoName: "default", | ||
}, | ||
}, | ||
|
||
{ | ||
// lower-cased segment names | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/hostpools/pool1/registrationinfo/default", | ||
Expected: &HostPoolRegistrationInfoId{ | ||
SubscriptionId: "12345678-1234-9876-4563-123456789012", | ||
ResourceGroup: "resGroup1", | ||
HostPoolName: "pool1", | ||
RegistrationInfoName: "default", | ||
}, | ||
}, | ||
|
||
{ | ||
// upper-cased segment names | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/HOSTPOOLS/pool1/REGISTRATIONINFO/default", | ||
Expected: &HostPoolRegistrationInfoId{ | ||
SubscriptionId: "12345678-1234-9876-4563-123456789012", | ||
ResourceGroup: "resGroup1", | ||
HostPoolName: "pool1", | ||
RegistrationInfoName: "default", | ||
}, | ||
}, | ||
|
||
{ | ||
// mixed-cased segment names | ||
Input: "/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/resGroup1/providers/Microsoft.DesktopVirtualization/HoStPoOlS/pool1/ReGiStRaTiOnInFo/default", | ||
Expected: &HostPoolRegistrationInfoId{ | ||
SubscriptionId: "12345678-1234-9876-4563-123456789012", | ||
ResourceGroup: "resGroup1", | ||
HostPoolName: "pool1", | ||
RegistrationInfoName: "default", | ||
}, | ||
}, | ||
} | ||
|
||
for _, v := range testData { | ||
t.Logf("[DEBUG] Testing %q", v.Input) | ||
|
||
actual, err := HostPoolRegistrationInfoIDInsensitively(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.HostPoolName != v.Expected.HostPoolName { | ||
t.Fatalf("Expected %q but got %q for HostPoolName", v.Expected.HostPoolName, actual.HostPoolName) | ||
} | ||
if actual.RegistrationInfoName != v.Expected.RegistrationInfoName { | ||
t.Fatalf("Expected %q but got %q for RegistrationInfoName", v.Expected.RegistrationInfoName, actual.RegistrationInfoName) | ||
} | ||
} | ||
} |
Oops, something went wrong.